在 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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在三层项目中放置 DTO / POCO

DTO中的继承和自定义逻辑[关闭]

使用 D7 的 3 层应用程序架构 [关闭]

使用 DTO 在服务层和 UI 层之间传输数据

Spring:DTO和服务层

我应该把我的 DTO 放在哪里?