【发布时间】:2014-09-29 22:12:15
【问题描述】:
背景
我有一个采用 n 层架构的项目,它使用服务外观 (WCF) 向表示层 (ASP.NET MVC) 公开业务和数据层。表示层使用单独的类库分为关注点,即
- 表示层 (ASP.NET MVC)
--- 视图
--- 视图模型
--- 控制器
--- 存储库 - 服务层 (WCF)
- 业务层
- 数据层
控制器调用各自的存储库,这些存储库又调用服务层。 服务层使用数据传输对象 (DTO) 来促进以序列化格式(即扁平化的业务对象)通过网络传输业务对象。
问题
在表示层中,我需要将 DTO 映射到它们各自的视图模型对象。当我有一个包含所有视图、视图模型、控制器和存储库的 MVC 项目时,这可以正常工作。但我想保持类库分离。这引入了一个问题,因为服务引用仅添加到其中一个项目(存储库)中。即其他项目将无法识别服务参考合同中定义的 DTO 类型,因为不会添加服务合同。
例如,ViewModels 项目将无法将 DTO 映射到 ViewModel,因为无法识别 DTO 数据类型。如果只有数据类型可以通过服务合同访问,我将如何在表示层中保持这种分离?
【问题讨论】:
标签: c# wcf asp.net-mvc-4 n-tier-architecture