1

有人可以指导我 WCF、DAO 和 DTO 层如何相互通信吗?如果有人可以指定哪个层首先出现,然后它如何与下一层交互等等,我将不胜感激。

4

1 回答 1

4

看起来你不知道这些术语是什么意思。首先,它们都不是“层”。

  • WCF - Windows 通信基础 - 用于构建面向服务的应用程序的 MS 技术
  • DAO - 数据访问对象 - 对象公开操作以与数据库交互(加载对象、保存对象等),但在内部隐藏有关数据库的详细信息。
  • DTO - 数据传输对象 - 用于将数据从一层/层传输到另一层/层的特殊类型的对象。

因此,这些术语在实际架构中的示例用法可以是:

数据层(数据库服务器)

  • 运行数据库

业务层(应用程序服务器)

  • 数据访问层使用 DAO 访问 DB 并对更高层隐藏 DB 细节。
  • 业务层使用数据访问层来访问和持久化数据。运行所有领域逻辑、工作流、业务规则等。
  • 在 WCF 中实现的服务层从业务层公开业务操作。服务层暴露了使用 DTO 传输数据的 Web 服务。域/业务对象与 DTO 相互转换。

表示层(Web 服务器)

  • 表示层 - 使用服务层与业务层通信的 ASP.NET 应用程序。服务层和表示层只交换 DTO。

此架构仅适用于大型项目。通常不需要分离表示层和业务层,因此不需要 WCF 服务层。在这种情况下,您的表示层可以直接访问业务层,而无需使用 DTO。

编辑:

根据您的评论,我正在添加这些信息。

  • NHibernateSession可以称为 DAO,因为它提供了与 DB 交互的操作,但它也隐藏了 DB 的详细信息。
  • 使用 NHibernate 时,您有一组类可以基于定义的映射持久化到 DB。NHibernate 存储和加载这些对象。您可以向这些类添加一些逻辑(方法)并将它们称为域/业务对象。
  • DTO 是一种特殊类型的对象,没有任何逻辑。它只是数据的箱子。它通常设计为仅传输操作实际需要的数据(例如,如果您只需要姓名和电子邮件,则不会传输整个客户对象)。DTO 还应设计为从多个业务对象传输数据,以减少客户端和服务之间的往返。
于 2011-02-25T15:24:35.417 回答