最近我学习了ORM(对象关系映射)和3层架构风格(演示,业务和数据持久性)。 如果我理解正确,我可以将数据持久层分成DTO和DAO层。
我想了解,以下部分如何在数据持久层中协同工作。
最重要的是我了解到了
在较大的应用程序中,MVC只是N层的表示层 架构。
我真的很困惑,例如在3层架构风格中它是如何可能的,其中MVC只是一个表示层,而DTO,DAO,DAL只是数据持久层的一部分。我完全迷失了。
如果有人告诉我它是如何一起工作的真相,我会很高兴。
请不要关闭这个问题,因为有很多不同的表达方式,我在任何地方都看到这些东西基本上都是在大型应用程序中彼此相关,我无法想象它是如何工作的。
我感谢任何回答!
答案 0 :(得分:13)
让我们从每个目的开始: -
<强> DTO 强>
数据传输对象。这些通常用于将数据从控制器传输到客户端(JS)。 POCO / POJO也被少数用于实际保存从数据库中检索的数据。
<强> DAO 强>
数据访问对象是用于实现DAL的设计模式之一。这将在数据库上构建和执行查询,并使用各种其他模式将结果映射到POCO / POJO,包括“查询对象”,“数据映射器”和“数据映射器”。使用&#39;存储库&#39;可以进一步扩展DAO层。图案。
<强> DAL 强>
数据访问层使用DAO / Repository / POCO等抽象您的数据库活动.ORM帮助您构建DAL,但也可以在不使用它们的情况下实现。
<强> MVC 强>
模型视图控件是一种模式,用于将视图(表示)与业务逻辑分开。对于MVC,DAL是否实现并不重要。如果没有实现DAL,数据库逻辑只会进入你的模型,这不是一个好方法。
在较大的应用程序中,MVC只是N层的表示层 架构。
模型消耗了大部分业务逻辑,如上所述。在N层应用程序中,如果业务逻辑完全分离以便跨应用程序/平台重新使用,那么MVC中的模型称为贫血模型。如果BI不需要在您的应用程序中以该比例重复使用,则可以使用Model来保存它。没有混乱,对吗?
如果有人告诉我它是如何运作的真相,我会很高兴的 在一起。
所有MV *模式仅定义了想法/概念;他们没有定义实现。 MV *模式主要侧重于将视图与BI分离。请专注于此。
有关保存数据的不同对象的详细信息,请参阅this答案。
答案 1 :(得分:2)
您可能想首先区分MVC模式和3层体系结构。总结一下:
3层架构:
现在,对于上述3层架构,MVC模式发生在它的表示层中(对于Web应用程序):
典型HTTP请求的生命周期: