【发布时间】:2012-09-08 10:05:38
【问题描述】:
我有 asp.net mvc 2 应用程序。我在创建 DTO 和域实体时感到困惑。
MVC 控制器集成点: 1) 第三方 WCF 2) 数据库层
WCF 正在返回特定公司的人员信息和有关公司的一些信息。
我已经生成了 WCF 的代理并在代理上编写了一个服务包装器。 服务包装器正在与 WCF 对话并将结果映射到 DTO 类 ContactsDTO 服务层在不同的项目中。
以下是我的域类
Company
Person
DTO class
//it contains
class ContactsDTO
{
Person person, Company[] company
}
控制器动作调用带有 companyID 的包装器并获取 DTO 类的对象。 并从 dto 更新公司信息。它更新 Session 中的公司信息,并将 Company[]array 传递给其他一些操作。
数据库交互:
现在根据一些业务逻辑,我必须在数据库中插入人员 ID 和公司 ID 以及其他一些信息。
为此我创建了另一个
class DBDTO
{
Person person, Company[] company, OtherInfo otherInfo[]
}
此 DBDTO 已准备好并传递给 DB 层(使用 Linq to sql)。
问题
是写方式吗。 DTO交互有什么改进吗?什么都 我可以做一些改变来改善整体架构
【问题讨论】:
-
DTO,正如其名称中所述,是数据传输对象。它应该只用于传输,不应该封装域对象,也不应该封装数据库对象。也就是说,您的 DB 层可能有一些特定的对象,例如 DBObject,它们直接从/到 DTO 映射,而客户端的 DTO 直接从/到客户端对象(例如 ClientEntity)映射。有很多基础架构代码和映射,是的,但最终您将拥有干净、独立的客户端和 DB 层域对象代码。
标签: oop architecture