首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DAL、DTO和DAO在包括MVC在内的三层体系结构风格中有什么区别?

DAL、DTO和DAO在包括MVC在内的三层体系结构风格中有什么区别?
EN

Stack Overflow用户
提问于 2016-06-05 17:47:34
回答 2查看 22.3K关注 0票数 25

最近,我正在学习ORM (对象关系映射)和三层体系结构风格(表示、业务和数据持久性)。如果我正确理解,我可以将数据持久层划分为DTO和DAO层。

我想了解,以下几个部分是如何在数据持久层中协同工作的。

  • 数据访问层
  • 数据传输对象
  • DAO (数据访问对象)

在上面我了解到

在大型应用程序中,MVC只是N层体系结构的表示层。

我真的很困惑,比如在3层体系结构风格中,MVC只是表示层,DTO、DAO、DAL只是数据持久层的一部分。我完全迷路了。

如果有人能告诉我这件事是怎么发生的,我会很高兴的。

请不要结束这个问题,因为很多不同的表达,我看到它到处都是相关的东西,基本上在大的应用程序中,我无法想象它是如何工作的。

我很感激你的回答!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-10 14:56:16

让我们从每一个目标开始:-

DTO

数据传输对象。它们通常用于将数据从控制器传输到客户机(JS)。术语也用于POCOs/POJO,它实际上保存了从数据库检索的数据。

DAO

数据访问对象是实现DAL的设计模式之一。它在数据库上构建并执行查询,并使用各种其他模式(包括“查询对象”、“数据映射器”等)将结果映射到POCO/POJO。DAO层可以使用“Repository”模式进一步扩展。

DAL

数据访问层使用DAO/Repository/POCO等抽象您的数据库活动。ORMs帮助您构建DAL,但它也可以实现而无需使用它们。

MVC

模型视图控件是一种模式,用于将视图(表示)与业务逻辑分离。对于MVC,DAL的实现与否并不重要。如果DAL没有实现,那么数据库逻辑就直接进入您的模型,这不是一种好的方法。

在大型应用程序中,MVC只是N层体系结构的表示层。

如上面所述,模型消耗了您的大部分业务逻辑。在N层应用程序中,如果业务逻辑为了跨应用程序/平台的可重用性而完全分离,则MVC中的模型称为贫血模型。如果不需要在应用程序中按此规模重用BI,则可以使用Model来保存它。没有混乱,对吧?

如果有人能告诉我这件事是怎么发生的,我会很高兴的。

所有MV*模式只定义想法/概念;它们不定义实现。MV*模式主要侧重于视图与BI的分离。专注于这件事。

有关保存数据的不同对象的详细信息,请参阅this答案。

票数 33
EN

Stack Overflow用户

发布于 2020-05-03 10:28:08

您可能需要首先区分MVC模式和3层体系结构。总括而言:

3层架构:

  • 数据:持久化数据;
  • 服务:应用程序的逻辑部分;
  • 介绍:人机界面,网络服务.

现在,对于上面的3层体系结构,MVC模式发生在它的表示层(对于webapp):

  • 数据:.;
  • 服务:.
  • 介绍:
    • 控制器:拦截HTTP请求并返回HTTP响应;
    • 模型:存储待显示/处理的数据;
    • 视图:组织输出/显示。

典型HTTP请求的生命周期:

  1. 用户发送HTTP请求;
  2. 控制器截取;
  3. 控制器调用适当的服务;
  4. 服务调用适当的dao,它返回一些持久化数据(例如);
  5. 服务处理数据,并将数据返回给控制器;
  6. 控制器将数据存储在适当的模型中,并调用适当的视图;
  7. 使用模型的数据实例化视图,并将其作为HTTP响应返回。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37644957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档