我已经使用 MVC 很长时间了,听说过“服务”层(例如在 Java Web 项目中),我一直想知道这是否是一种真正的架构模式,因为我找不到很多关于它。
MVCS 的想法是在控制器和模型之间有一个服务层,以封装所有可能在控制器中的业务逻辑。这样,控制器就在那里转发和控制执行。并且您可以在许多控制器(例如,网站和 Web 服务)中调用服务,而无需重复代码。
我已经使用 MVC 很长时间了,听说过“服务”层(例如在 Java Web 项目中),我一直想知道这是否是一种真正的架构模式,因为我找不到很多关于它。
MVCS 的想法是在控制器和模型之间有一个服务层,以封装所有可能在控制器中的业务逻辑。这样,控制器就在那里转发和控制执行。并且您可以在许多控制器(例如,网站和 Web 服务)中调用服务,而无需重复代码。
服务层可以有多种解释方式,但它通常是您拥有核心业务处理逻辑的地方,位于 MVC 架构之下,但位于数据访问架构之上。
例如,您的完整系统层可能如下所示:
然后服务层将负责:
您在 MVC 中使用的模型可能来自也可能不来自您的服务。您可能希望获取您的服务提供给您的结果,并将它们处理成更特定于您的媒体的模型(例如:网页)。
我自己一直在考虑这种模式,而在其他任何地方都没有看到对此的任何参考,并在 Google 上搜索并在这里找到了您的问题 :)
即使在今天,也没有多少人谈论或发布关于
视图-控制器服务模式。
想让你知道其他人也有同样的想法,上面的图片是我如何看待它应该是这样的。
目前我正在我正在从事的项目中使用它。
我将它放在模块中,上图中的每一层都包含在它自己的自包含模块中。
服务层是“连接器”“中间人”“服务器端控制器”,因为“客户端”端控制器为客户端做的,“服务”为服务器做的。
换句话说,客户端“控制器”仅与“服务”即服务器端控制器“对话”。
控制器 ---> 来自 <----- 服务层的请求和接收
服务层获取或提供信息给需要它的服务器端的层。
服务本身不做任何事情,只是将服务器层与他们需要的东西连接起来。
这是一个代码示例:
多年来我一直在使用 MVCS 模式,但我不知道其他人做过,因为我在网上找不到任何可靠的信息。如果你愿意,我会本能地开始使用它,它从来没有让我对 Laravel 项目失望过。我会说它对于中型项目来说是一个非常可维护的解决方案,尤其是在业务逻辑不断变化的敏捷环境中工作时。关注点分离非常方便。
说到这里,我发现服务层对于小型项目或原型来说是不必要的,什么都不是。在制作原型时,我犯了一个错误,那就是让项目过于复杂,这最终意味着你需要更长的时间才能把你的想法拿出来。如果您认真考虑在中期维护项目,那么 MVCS 是 IMO 的完美解决方案。