在 3 层架构中使用 DTO [关闭]
Posted
技术标签:
【中文标题】在 3 层架构中使用 DTO [关闭]【英文标题】:Use of DTO in 3 tier architecture [closed] 【发布时间】:2012-09-12 10:56:55 【问题描述】:我正在使用简单的 3 层架构。 在此我使用 DTO 类在 UI、BL 和 DL 之间进行通信。 那么有没有更好的层间通信方式呢?或者这是正确的方法?
【问题讨论】:
【参考方案1】:DTO,Data transfer Object,是分布层的概念,在消费者和服务之间传输数据时使用。因此,如果您不发布任何服务,请退出 DTO。
要回答您的问题,还取决于您的应用程序有多复杂。简单的话就用CRUD操作,也可以用DataTable
,DataSet
进行通信。
否则,来自 DDD 的域实体是层之间通信的核心对象:数据访问层、业务逻辑层和表示层。
基本上,应用中有一些不同类型的对象:
-
DTO,在您公开服务时使用,主要对象是消费者和您的服务之间的通信。
视图模型,表示层中支持 UI 的对象。
域实体来自业务逻辑层,包含业务逻辑。
小心用词:
-
Tier:表示物理的,如数据库服务器、Web 服务器。
Layer:表示逻辑层:Persentation Layer、Business Logic Layer、Data Access Layer。
【讨论】:
【参考方案2】:阅读此tutorial 内容非常丰富。它将帮助您确定 DTO 是否适合您的方案。
【讨论】:
谢谢,我读过的最好的 DTO 教程。试图总结:从解耦的角度来看,DTO 是最佳的,将表示层与业务层分开。但这可能是一场代价高昂的胜利;创建数百个 DTO 类会使项目膨胀并产生开销。作者说是否使用 DTO 取决于项目的具体情况。他提出了一种务实的中间方式,允许在表示层中引用实体对象。【参考方案3】:除了@Talha 的回答,我推荐这个article。它是面向 EF 的,但其中描述的概念是常见的。
【讨论】:
以上是关于在 3 层架构中使用 DTO [关闭]的主要内容,如果未能解决你的问题,请参考以下文章