应用程序架构建议

时间:2012-08-07 02:19:26

标签: asp.net-mvc-3 architecture repository-pattern service-layer

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

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

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

我使用AutoMapper将域对象转换为视图模型,但我不确定将它们恢复为域对象的标准。

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

1 个答案:

答案 0 :(得分:1)

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

因此,我建议您构建一个单独的图层,而是建议您将View Models的方法添加到您的域图层对象,以便发送到您的应用服务。

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

相关问题