如何在MVC架构中实现服务层?它是一个服务于底层业务对象的所有请求的对象吗?或者更像是一个服务于不同服务对象的对象,而这些对象又与业务对象进行交互?
所以:
控制器 - >服务 - > getUserById()或:
控制器 - > ServiceManager - > getUserService() - > getUserById()
另外,如果后者更合适,您是否会在引导程序中配置此ServiceManager对象?换句话说,在引导程序中将您的应用程序所需的不同服务注册到服务管理器?
如果以上都不合适,那么有什么能帮助我更好地理解服务层应该如何实现呢?
提前谢谢。
答案 0 :(得分:4)
我读这个问题的方式,确实应该回答两件事:
A)我更倾向于将“服务”拆分为“CustomerService”和“OrderService”,换句话说,按域概念分组。
B)其次我使用依赖注入直接在需要的地方获得正确的服务,所以我基本上使用alt 1.替代2中添加的抽象为我提供了额外的价值,因为IoC容器确实如此重要的部分。
答案 1 :(得分:3)
答案 2 :(得分:2)
我个人更喜欢#2,是的,它通常会在引导程序中配置,或者使用某种IoC容器来解析依赖项,以便为您提供实际的具体实例。
我还想发表评论,是的我明白这可能更像是个人偏好。尽量避免为这些对象使用名称“服务”图层。将它们称为存储库或其他东西。如果你使用服务,那个术语会变得过载......因为那时开发人员就像是,“你的意思是,休息还是wcf服务?”。相信我,我们在最近的一个项目中做到了这一点,当我们谈论在哪里进行代码更改时,我们总是迷惑自己:-P