ASP.NET 应用程序中 WCF、DAO 和 DTO 层之间的交互

发布于 2024-10-19 08:17:10 字数 76 浏览 2 评论 0原文

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

Can someone guide me in how the WCF, DAO and DTO layers communicate with each other? I would appreciate if someone can specify which layer comes first and then how it interacts with the next layer and so on.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆流 2024-10-26 08:17:10

看来您不知道这些术语的含义。首先,它们都不是“层”。

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

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

数据层(数据库服务器)

  • 运行数据库

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

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

表示层(Web 服务器)

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

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

编辑:

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

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

Looks like you have no idea what do these terms mean. First of all non of them is a "layer".

  • WCF - Windows communication foundation - MS technology for building service oriented applications
  • DAO - Data access object - object exposing operations to interact with database (load object, save object, etc.) but internally hiding details about database.
  • DTO - Data transfer object - special type of object used to tranport data from one layer/tier to other layer/tier.

So example usage of these terms in real architecture can be:

Data Tier (Db server)

  • Running database

Business Tier (Application server)

  • Data access layer using DAO to access DB and to hide DB details from higher layer.
  • Business layer using data access layer to access and persist data. Running all domain logic, workflows, business rules, etc.
  • Service layer implemented in WCF exposing business operations from business layer. Service layer exposes web services which use DTO to transfer data. Domain / business objects are converted to and from DTOs.

Presentation Tier (Web server)

  • Presentation layer - ASP.NET application using service layer to communicate with business tier. Service layer and presentation layer exchange only DTOs.

This architecture is only for big projects. Usually you don't need to separate presentation and business tiers and so you don't need WCF service layer. In such case your presentation layer can access business layer directly without using DTO.

Edit:

Based on your comments I'm adding these informatios.

  • NHibernate's Session can be called DAO because it provides operations to interact with DB but it also hides DB's details.
  • When using NHibernate you have set of classes which can be persisted to DB based on defined mapping. NHibernate stores and loads these objects. You can add some logic (methods) to these classes and call them Domain/Business objects.
  • DTO is special type of object which doesn't have any logic. It is juse crate for data. It is usually designed to transfer only data the operation actually needs (for example you will not transfer whole customer objects if you only need names and emails). DTO should be also designed to transfer data from multiple business objects to reduce roundtrips between client and service.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文