3

我有 asp.net mvc 2 应用程序。我在创建 DTO 和域实体时感到困惑。

MVC控制器集成点:1)第三方WCF 2)DB层

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交互有什么改进吗?我可以做些什么来改进整体架构

4

2 回答 2

0

将数据库绑定对象转换为 DTO(这需要时间)的另一种替代方法是使用 POCO(普通旧 CLR 对象)并将它们直接用作您的域模型、可以存储在数据库中的对象以及与控制器通信的对象用于可视化。这可以帮助您入门:使用 POCO 实体

这种方法有几个优点

于 2013-03-24T23:29:14.060 回答
0

由于职责不同,我同意 Algirdas 区分模型。

顺便说一句:MVC 不是层概念。这是三个责任及其协作的概念。虽然它经常(误)用于分层,但如果您只使用“MVC”分离应用程序层,您将遇到 SRP 问题。如果你每层都有 MVC,那么你做得很好。

毕竟,如果它是一个小型应用程序,您可能永远不会达到临界质量,从而遇到架构问题。

于 2015-05-13T13:41:52.947 回答