2011-02-25 73 views

回答

4

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

  • WCF - Windows通信基础 - MS技术构建面向服务的应用程序
  • 道 - 数据访问对象 - 有关对象暴露的操作与数据库进行交互(负载对象,保存对象等),但在内部隐藏的细节数据库。
  • DTO - 数据传输对象 - 用于将数据从一个层/层传输到其他层/层的特殊对象类型。

所以在实际建筑这些术语的使用例子可以是:

数据层(DB服务器)

  • 运行数据库

业务层(应用服务器)

  • 数据访问层使用DAO访问数据库并从上层隐藏数据库详细信息。
  • 使用数据访问层访问和保存数据的业务层。运行所有领域逻辑,工作流程,业务规则等。
  • 在WCF中实现的服务层从业务层公开业务操作。服务层公开使用DTO传输数据的Web服务。域/业务对象转换为DTO和从DTO转换。

表示层(Web服务器)

  • 表示层 - 使用服务层与业务层进行沟通ASP.NET应用程序。服务层和表示层仅交换DTO。

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

编辑:根据您的意见,我将这些informatios

  • NHibernate的Session可以称为DAO,因为它提供操作来与数据库交互,但它也隐藏数据库的细节。
  • 使用NHibernate时,您可以根据定义的映射将一组类保存到数据库中。 NHibernate存储和加载这些对象。您可以向这些类添加一些逻辑(方法),并将它们称为Domain/Business对象。
  • DTO是没有任何逻辑的特殊对象类型。这是数据的垃圾箱。它通常被设计为仅传输操作实际需要的数据(例如,如果只需要姓名和电子邮件,则不会传输整个客户对象)。 DTO还应该设计用于传输来自多个业务对象的数据,以减少客户端和服务之间的往返。
+0

非常感谢您的回复。 您能否简单地解释一下,业务/域对象,DTO和DAO如何交互,因为我们必须在我们的设计中使用它们全部?这些对象中的哪些对象实际上与数据库中的表对应,这样操纵这些对象也会导致数据库表中的更改?此外,我们将使用NHibernate,这将在DAO中使用吗? – 2011-02-26 07:11:22

+2

这是做错建筑的错误方法。在需要时建立您的架构并使用模式。不要仅仅为了使用模式而构建架构 - 它总会导致过于复杂的设计。 – 2011-02-26 10:19:48

+0

我们遇到的问题是,应用程序已被第三方供应商部分构建(1功能部分),现在客户已要求我们构建第二个功能部件,以承载早期开发人员离开的地方。但是我们没有获得应用程序的先前构建部分的代码漫游。但无论如何要真诚地感谢你为回答我的基本问题而付出的努力。 – 2011-02-26 13:05:45

相关问题