MVCS - 模型视图控制器服务

Mat*_*oli 63 architecture model-view-controller architectural-patterns

我一直在使用MVC并听说过" 服务 "层(例如在Java web项目中),我一直想知道这是否是一个真正的架构模式,因为我找不到很多关于它.

MVCS的想法是在控制器和模型之间建立一个服务层,以封装可能在控制器中的所有业务逻辑.这样,控制器就可以转发并控制执行.您可以在许多控制器(例如,网站和Web服务)中调用服务,而无需复制代码.

Cli*_*ton 80

服务层可以通过很多方式进行解释,但它通常位于您拥有核心业务处理逻辑的位置,并且位于您的MVC架构之下,但高于您的数据访问架构.

例如,一个完整系统的层可能如下所示:

  1. 查看图层:您的MVC框架和选择代码
  2. 服务层:您的控制器将调用此图层的对象以获取或更新模型或其他请求.
  3. 数据访问对象:这些是您的服务层将调用以获取/更新所需数据的抽象.该层通常会调用数据库或其他系统(例如:LDAP服务器,Web服务或NoSql类型的DB)

然后服务层将负责:

  • 从各种数据源(或数据访问对象)中重新创建和创建"模型".
  • 跨各种存储库/资源更新值.
  • 执行特定于应用程序的逻辑和操作等.

您在MVC中使用的模型可能来自也可能不来自您的服务.您可能希望获取服务为您提供的结果,并将其操作为更适合您的媒体的模型(例如:网页).

  • 我通常使用服务进行外部访问。虽然 MVC 将包含我所有的应用程序特定逻辑,但我将使用 DBService 或 FacebookOAuthService 之类的东西来处理对其他系统的所有外部调用。或者包装第三方库而不是紧密集成,可以更轻松地切换库。对我来说,考虑这样的服务很有意义。 (2认同)

Kbd*_*s07 12

我一直在想这个模式,没有看到任何其他地方的任何参考,并搜索谷歌,并在这里找到你的问题:)

即使在今天,也没有任何机构谈论或发布关于

视图 - 控制器服务模式.

在此输入图像描述

想让你知道其他人的想法是一样的,上面的图片是我如何看待它应该如何.

目前我在我正在进行的项目中使用它.

我在模块中有它,上面的图像中的每个图层都有自己独立的模块.

在此输入图像描述

服务层是"连接器""中间人""服务器端控制器",其中"客户端"控制器为客户端执行的操作,"服务"为服务器执行的操作.

换句话说,客户端"控制器"仅与"服务"即服务器端控制器"对话".

控制器--->来自<-----服务层的请求和接收

服务层获取或向服务器端需要它的层提供信息.

服务本身不做任何事情,只是将服务器层与他们需要的东西连接起来.

这是一个代码示例:

在此输入图像描述