DAL、DTO 和 DAO 在包括 MVC 在内的 3 层架构风格中有什么区别
What is the difference between DAL, DTO and DAO in a 3 tier architecture style including with MVC
最近我在学习 ORM(对象关系映射)和 3 层架构风格(表示、业务和 数据持久性 )。
如果我理解正确的话,我可以把数据持久层分离成DTO和DAO层。
我想了解以下部分如何在数据持久层中协同工作。
- DAL(数据访问层)
- DTO(数据传输对象)
- DAO(数据访问对象)
最重要的是我了解到
In larger applications MVC is the presentation tier only of an N-tier
architecture.
我真的很困惑,例如在 3 层架构风格中,MVC 只是一个表示层,而 DTO、DAO、DAL 只是数据持久层的一部分,这怎么可能。我完全迷路了。
如果有人告诉我它是如何协同工作的,我会很高兴。
请不要关闭这个问题,因为有很多不同的表达方式,我到处都看到这些东西在大型应用程序中基本上是相互关联的,我无法想象它是如何工作的。
感谢您的回答!
让我们从每个目的开始:-
DTO
数据传输对象。这些通常用于将数据从控制器传输到客户端(JS)。术语也被少数人用于POCOs/POJOs,实际上保存从数据库检索的数据。
DAO
数据访问对象是用于实现 DAL 的设计模式之一。这会在数据库上构建和执行查询,并使用各种其他模式(包括 'Query Object'、'Data Mapper' 等)将结果映射到 POCO/POJO。DAO 层可以使用 'Repository' 模式进一步扩展。
DAL
数据访问层使用 DAO/Repository/POCO 等抽象您的数据库活动。ORM 可帮助您构建 DAL,但它也可以在不使用它们的情况下实现。
MVC
模型视图控制是一种用于将视图(表示)与业务逻辑分开的模式。对于MVC,是否实现DAL并不重要。如果未实现 DAL,数据库逻辑会简单地进入您的模型,这不是一个好方法。
In larger applications MVC is the presentation tier only of an N-tier
architecture.
如上所述,模型会消耗您的大部分业务逻辑。在 N 层应用程序中,如果为了跨 applications/platforms 的可重用性而将业务逻辑完全分离,那么 MVC 中的模型称为贫血模型。如果 BI 不需要在您的应用程序中以那种规模重复使用,您可以使用模型来保存它。没有混淆,对吧?
I'd be glad if someone tell me the truth about how does it works
together.
所有 MV* 模式仅定义 idea/concept;他们没有定义实现。 MV* 模式主要侧重于将视图与 BI 分离。专注于此。
请参阅 答案以获取有关保存数据的不同对象的详细信息。
您可能想首先区分 MVC 模式和 3 层架构。总结:
3 层架构:
- data:持久化数据;
- 服务:应用程序的逻辑部分;
- 介绍:人机界面、网络服务...
现在,对于上述 3 层架构,MVC 模式发生在它的表示层(对于 webapp):
- 数据:...;
- 服务:...;
- 介绍:
- 控制器:拦截 HTTP 请求和 returns HTTP 响应;
- 模型:将数据存储为displayed/treated;
- 查看:整理output/display.
典型 HTTP 请求的生命周期:
- 用户发送HTTP请求;
- 控制器拦截它;
- 控制器调用相应的服务;
- 服务调用适当的 dao,returns 一些持久化数据(例如);
- 服务处理数据,returns数据给控制器;
- 控制器将数据存储在适当的模型中并调用适当的视图;
- 视图用模型的数据实例化,并作为 HTTP 响应返回。
最近我在学习 ORM(对象关系映射)和 3 层架构风格(表示、业务和 数据持久性 )。 如果我理解正确的话,我可以把数据持久层分离成DTO和DAO层。
我想了解以下部分如何在数据持久层中协同工作。
- DAL(数据访问层)
- DTO(数据传输对象)
- DAO(数据访问对象)
最重要的是我了解到
In larger applications MVC is the presentation tier only of an N-tier architecture.
我真的很困惑,例如在 3 层架构风格中,MVC 只是一个表示层,而 DTO、DAO、DAL 只是数据持久层的一部分,这怎么可能。我完全迷路了。
如果有人告诉我它是如何协同工作的,我会很高兴。
请不要关闭这个问题,因为有很多不同的表达方式,我到处都看到这些东西在大型应用程序中基本上是相互关联的,我无法想象它是如何工作的。
感谢您的回答!
让我们从每个目的开始:-
DTO
数据传输对象。这些通常用于将数据从控制器传输到客户端(JS)。术语也被少数人用于POCOs/POJOs,实际上保存从数据库检索的数据。
DAO
数据访问对象是用于实现 DAL 的设计模式之一。这会在数据库上构建和执行查询,并使用各种其他模式(包括 'Query Object'、'Data Mapper' 等)将结果映射到 POCO/POJO。DAO 层可以使用 'Repository' 模式进一步扩展。
DAL
数据访问层使用 DAO/Repository/POCO 等抽象您的数据库活动。ORM 可帮助您构建 DAL,但它也可以在不使用它们的情况下实现。
MVC
模型视图控制是一种用于将视图(表示)与业务逻辑分开的模式。对于MVC,是否实现DAL并不重要。如果未实现 DAL,数据库逻辑会简单地进入您的模型,这不是一个好方法。
In larger applications MVC is the presentation tier only of an N-tier architecture.
如上所述,模型会消耗您的大部分业务逻辑。在 N 层应用程序中,如果为了跨 applications/platforms 的可重用性而将业务逻辑完全分离,那么 MVC 中的模型称为贫血模型。如果 BI 不需要在您的应用程序中以那种规模重复使用,您可以使用模型来保存它。没有混淆,对吧?
I'd be glad if someone tell me the truth about how does it works together.
所有 MV* 模式仅定义 idea/concept;他们没有定义实现。 MV* 模式主要侧重于将视图与 BI 分离。专注于此。
请参阅
您可能想首先区分 MVC 模式和 3 层架构。总结:
3 层架构:
- data:持久化数据;
- 服务:应用程序的逻辑部分;
- 介绍:人机界面、网络服务...
现在,对于上述 3 层架构,MVC 模式发生在它的表示层(对于 webapp):
- 数据:...;
- 服务:...;
- 介绍:
- 控制器:拦截 HTTP 请求和 returns HTTP 响应;
- 模型:将数据存储为displayed/treated;
- 查看:整理output/display.
典型 HTTP 请求的生命周期:
- 用户发送HTTP请求;
- 控制器拦截它;
- 控制器调用相应的服务;
- 服务调用适当的 dao,returns 一些持久化数据(例如);
- 服务处理数据,returns数据给控制器;
- 控制器将数据存储在适当的模型中并调用适当的视图;
- 视图用模型的数据实例化,并作为 HTTP 响应返回。