在3层架构中使用DTO

10

我正在使用简单的三层架构。 在这种架构中,我使用DTO类来在UI、BL和DL之间进行通信。 那么,有没有更好的方法来进行层间通信呢?还是这样做是正确的方式?

3个回答

10

DTO,即数据传输对象,是分发层中的概念。在向消费者和服务之间传输数据时使用它。所以,如果您没有发布任何服务,请不要使用 DTO。

回答你的问题,还要看你的应用程序有多复杂。如果简单,只需使用 CRUD 操作,甚至可以使用 DataTableDataSet 进行通信。

否则,DDD 中的领域实体是层之间通信的核心对象:数据访问层、业务逻辑层和表示层。

基本上,应用程序中有一些不同类型的对象:

  1. DTO:在公开服务时使用,是消费者和服务之间通信的主要对象。
  2. 视图模型:表示层中支持 UI 的对象。
  3. 领域实体:来自业务逻辑层,包含业务逻辑。

请注意术语:

  1. 层(Tier):它表示物理层面,如数据库服务器、Web 服务器。
  2. 层(Layer):它表示逻辑层面:表示层、业务逻辑层、数据访问层。

7

阅读这个教程,它非常有启发性。它将帮助您决定是否在您的情境中使用DTO是正确的选择。


谢谢,这是我读过的最好的DTO教程。尝试总结一下:从解耦的角度来看,DTO是最优的选择,将表示层与业务层分离。但这可能是一个空胜利;创建数百个DTO类会使项目膨胀并产生开销。作者说是否使用DTO取决于项目的具体情况。他提出了一种实用的中间方式,即允许在表示层引用实体对象。 - Gruber

1
除了@Talha的回答之外,我建议阅读这篇文章。虽然它是以EF为导向的,但其中描述的概念是通用的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接