MVC的服务层

时间:2014-03-12 12:34:51

标签: c# asp.net asp.net-mvc architecture asp.net-mvc-5

我的MVC的控制器动作变得越来越大。我想创建一个服务层,以便我可以在那里移动代码。我们的想法是使用SOLID原则:控制器使用服务层来获取域模型,然后将其转换为视图模型。

我的问题很简单:我的服务层应该是一个新的程序集(项目),它将与我的MVC项目一起使用,还是应该只是我已经存在的程序集(MVC项目)中的一个类?

我的方法与下面的方法类似,但不幸的是,帖子并没有解释服务层是如何定义的: http://weblogs.asp.net/gunnarpeipman/archive/2011/06/20/asp-net-mvc-moving-code-from-controller-action-to-service-layer.aspx

2 个答案:

答案 0 :(得分:3)

我会考虑将服务层作为一个单独的东西。

服务可以是基于接口的对象,可以在应用程序内存中实现,也可以通过SOAP,REST,RCP-XML或其他任何方式远程分发和访问。控制器/客户端不需要知道或关心他们是否有基于接口的客户端程序。

依赖注入,基于接口的解决方案允许您成对注入客户端和服务实现,因此如果您更改访问服务的方式,控制器不会受到干扰。

控制器通常与视图紧密相关。意见来去匆匆,但服务往往仍然存在。服务应映射到可跨应用程序共享的业务功能。

答案 1 :(得分:2)

  

我的服务层应该是新的程序集(项目)

是的,它应该。其他UI可能希望将来使用它...