1

我一直在研究用于分层 MVC 应用程序的各种模式,需要一些建议。我目前拥有的是以下内容:

1)POCO领域模型,完全没有业务逻辑,所以基本上是一个贫血的领域模型。
2) EntityFramework 具有交回域对象的存储库层。
3)服务层,现在我不确定这是应用服务层还是领域服务层,但基本上它是一个针对领域模型的API。所有业务逻辑都驻留在这一层并确保域对象有效,然后将其交给存储库以通过 EF 持久化回数据库。
4) ASP.NET MVC 应用程序,该应用程序与服务层对话以获取它需要的对象。

我喜欢它的工作原理,因为它提供了与域模型的单点交互,但我认为我需要的是服务层和 mvc 应用程序之间的一层。该层的职责是将域对象与控制器可以交互的视图模型转换为视图模型,以获得视图所需的确切数据,并将填充的域对象提供回服务层。这会是应用程序服务层,而上面提到的服务层是域服务层吗?

我使用 AutoMapper 将域对象放入视图模型,但我不确定将它们返回到域对象的标准。

任何建议或想法都会很棒。

4

1 回答 1

1

虽然理论上,您的域层(特别是如果您使用 POCO)类非常适合在控制器和视图中使用,但实际上,总是存在这些极端情况和差异。通常,控制器和视图处理的对象是您的域模型 POCO的简化,或者是您的应用服务层提供/理解的 POCO 的不同聚合。

因此,我建议构建单独的层,而是建议将视图模型的方法添加到域层对象以发送到应用程序服务。

例如,如果您有UserDomain Level 类和UserModelView Model,我会主张创建User ToUser()实例方法和UserModel UserModel.FromUser(User user)静态方法来处理转换。您还可以在其中混合和匹配其他视图模型,以便能够创建域对象。

于 2013-04-10T23:33:10.773 回答