问题 在3层架构中使用DTO [关闭]


我使用简单的3层架构。 在这里我使用DTO类在UI,BL和DL之间进行通信。 那么层之间的沟通有更好的方法吗?或者这是正确的方法?


3774
2017-09-20 05:21


起源

定义“沟通” - jgauffin


答案:


DTO,数据传输对象,是您在消费者和服务之间传输数据时使用的分发层概念。因此,如果您不发布任何服务,请离开DTO。

要回答您的问题,还取决于您的应用程序的复杂程度。如果它很简单,只需使用CRUD操作,或者甚至可以使用 DataTableDataSet 用于沟通。

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

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

  1. DTO,在您使用公共服务时使用,主要对象是在消费者和您的服务之间进行通信。
  2. 查看模型,表示层中的对象以支持UI。
  3. Domain Entity来自业务逻辑层,包含业务逻辑。

小心这个词:

  1. 一级:它表示物理,如数据库服务器,Web服务器。
  2. :它表示逻辑层:Persentation Layer,业务逻辑层,数据访问层。

8
2017-09-20 06:03





读这个 教程 这是非常翔实的。它将帮助您确定DTO是否适合您的方案。


7
2017-09-20 05:25



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


除了@Talha的答案,我建议这样做 文章。它是面向EF的,但那里描述的概念是常见的。


1
2017-09-20 05:42