我的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
答案 0 :(得分:3)
我会考虑将服务层作为一个单独的东西。
服务可以是基于接口的对象,可以在应用程序内存中实现,也可以通过SOAP,REST,RCP-XML或其他任何方式远程分发和访问。控制器/客户端不需要知道或关心他们是否有基于接口的客户端程序。
依赖注入,基于接口的解决方案允许您成对注入客户端和服务实现,因此如果您更改访问服务的方式,控制器不会受到干扰。
控制器通常与视图紧密相关。意见来去匆匆,但服务往往仍然存在。服务应映射到可跨应用程序共享的业务功能。
答案 1 :(得分:2)
我的服务层应该是新的程序集(项目)
是的,它应该。其他UI可能希望将来使用它...