我有asp.net mvc 2应用程序。我对创建DTO和域实体感到困惑。
MVC控制器集成点: 1)第三方WCF 2)DB Layer
WCF正在返回特定公司的人员信息以及有关公司的一些信息。
我已经生成了WCF的代理并在代理上编写了一个服务包装器。 服务包装器正在与WCF通信并将结果映射到DTO clas ContactsDTO 服务层位于不同的项目中。
以下是我的域类
Company
Person
DTO class
//it contains
class ContactsDTO
{
Person person, Company[] company
}
Controller操作使用companyID调用包装器并获取DTO类的对象。 并从dto更新公司信息。它更新Session中的公司信息,并将Company []数组传递给其他一些操作。
数据库互动:
现在,根据一些业务逻辑,我必须在数据库中插入Person-ids和公司ID以及其他一些信息。
为此我创造了另一个
class DBDTO
{
Person person, Company[] company, OtherInfo otherInfo[]
}
准备好这个DBDTO并传递给DB Layer(使用Linq to sql)。
问题
是写作方式吗? DTO互动的任何改进?什么都有 我可以做的改进来改善整体架构
答案 0 :(得分:0)
转换为DTO(需要时间)的DB绑定对象的另一种替代方法是使用POCO(普通旧CLR对象)并将它们直接用作域模型,可以存储在数据库中的对象和传达给控制器以进行可视化。 这可以帮助您入门:Working with POCO Entities
这种方法有几个优点
答案 1 :(得分:0)
我同意Algirdas因为责任不同而区分模型。
顺便说一下:MVC不是一个层概念。这是三个责任及其合作的概念。虽然它经常(错误地)用于分层,但如果您仅使用“MVC”分离应用程序层,则会遇到SRP问题。如果你每层都有MVC,那你就顺利了。
毕竟,如果它是一个小型应用程序,您可能永远不会达到临界质量以解决架构问题。