MVCS - 模型视图控制器服务

2023-12-02

我已经使用 MVC 很长时间了,并且听说过“Service“层(例如在Java Web项目中),我一直想知道这是否是一个真实的建筑模式鉴于我找不到很多有关它的信息。

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


服务层可以用多种方式解释,但它通常是您拥有核心业务处理逻辑的地方,并且位于 MVC 架构下方、数据访问架构上方。

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

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

服务层将负责:

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

您在 MVC 中使用的模型可能来自也可能不是来自您的服务。您可能想要获取您的服务为您提供的结果,并将其处理为更适合您的媒体(例如:网页)的模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVCS - 模型视图控制器服务 的相关文章

  • 您如何填充/验证您的 ViewModel?

    我很好奇人们构建 ViewModel 的各种方式以及他们为什么选择该方法 我在这里可以想到几种方法 1 注入存储库 控制器加载模型并映射到 ViewModel 这里 ViewModel 构造函数可以采用各种集合来进行内部设置 在选择列表中
  • javax.validation.ConstraintViolationException:在更新前验证时违反了 Bean 验证约束

    我在尝试使用 JPA 2 0 SpringMvc 3 0 在多对多关系中插入新元素时遇到烦人的错误消息 我有一张与州有关的桌子 另一张与人有关的桌子 一个人可以与许多国家联系起来 一个国家可以与许多人联系起来 在这种特殊情况下 我有一个 l
  • asp.net MVC ActionFilter 用于删除结果中的空行

    请帮我处理这个动作过滤器 我想我需要使用 OnResultExecuted 方法 我怎样才能访问输出 html 并替换其中的某些内容 谢谢 使用空白删除 HTTP 模块怎么样 它易于实施 清洁且可重复使用 http madskristens
  • 如何解决 MVC 中的“访问令牌已过期,但我们无法刷新它”

    我目前正在研究谷歌API其目的是获取登录者的圈子 我已经有了访问令牌但问题是每当我尝试运行我的代码时它都会返回此异常 访问令牌已过期 但我们无法刷新它 我该如何解决这个问题 var claimsforUser await UserManag
  • Microsoft MVC:手动触发表单验证

    有谁知道是否有办法手动触发 Net MVC 应用程序中的客户端表单验证 我想做以下事情 我已经查看了 MicrosoftMvcValidation js 中的代码 但没有找到可以在表单上调用的方法 我认为您正在寻找的验证可以在这里找到 ht
  • CS0246 找不到类型或命名空间名称“ErrorViewModel”(您是否缺少 using 指令或程序集引用?)

    我收到 CS0246 错误代码 我正在做一个 MVC net core 项目 我正在将 Razor 合并到我的 C 代码中 我在进行构建时收到此错误 我在最后一行收到错误 有人能帮我解决这个问题吗 global Microsoft AspN
  • GWT 与 Apache Wicket

    GWT 和 Wicket 都是有状态的 基于 Java 对象的 GWT 完全基于客户端 具有 javascript 优化 CSS 优化等功能 而且我对 Apache Wicket 还很陌生 我对 Wicket 的了解越多 就越感觉它与 GW
  • 如何设计流星智能包以透明地将应用程序分离到不同的实例中?

    这是对于那些非常熟悉 Meteor 架构的人来说的问题 我正在尝试设计一个智能包 可以透明地运行 Meteor 应用程序的多个 副本 也就是说 给定一个现有的 Meteor 应用程序和几个预定义的用户组 该包可以半自动地 隔离 该应用程序
  • 内存缓存 VS。分布式系统中的集中式缓存

    我们目前正在寻找最合适的解决方案来访问分布式系统上的关键数据 并且我们正在考虑是否使用内存缓存而不是集中式缓存 有关我们希望存储 访问的数据的一些信息 数据量非常小 数据很冷 这意味着它几乎不会改变 并且只有当人们改变我们后台系统中的某些内
  • Spring mvc 添加多行

    我需要你的帮助 因为标题说我在从 jsp 表单插入多行时遇到问题 该代码来自该网站的答案 控制器 ModelAttribute programform public ProgramForm populatePojos Don t forge
  • 将所有代码放入 C++ 头文件中的优点和缺点?

    您可以构造一个 C 程序 以便 几乎 所有代码都驻留在头文件中 它本质上看起来像一个 C 或 Java 程序 但是 您至少需要一个 cppfile 来在编译时拉入所有头文件 现在我知道有些人绝对会讨厌这个想法 但我还没有发现这样做有任何令人
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • django npm 和 Node 包架构

    在我加入的项目中 这是以下架构node packages Django project app1 app2 node modules foundation sites grunt static css images js urls py s
  • 服务层和存储库

    我使用 MVC 框架已经有一段时间了 我真的很喜欢如何分离关注点 我养成了让控制器做大量工作的坏习惯 所以我真的在寻求一些建议 当我第一次开始使用 MVC 时 我经常在数据库工作完成后让控制器对模型进行操作 我知道这很糟糕 所以将这项工作转
  • Demandware MVC 概念

    我是 Demandware 的新手 我正在从 Magento 切换到 Demandware Demandware 不是开源的 我没有得到适当的教程 无法理解它的概念 我来自 Magento 所以我知道 Magento MVC 结构 但在 D
  • 在 MVC 4 中为 3 层架构配置 Ninject

    目前 我正在构建一个两层的网站 Web UI 这是一个MVC 4项目 用于与用户交互 数据访问 这是一个 C 库 该层负责与数据库交互 我正在使用 Ninject 进行依赖注入 到现在为止 还好 但现在 我想在 Web UI 和数据访问之间
  • ng-href 中的 AngularJs if 语句

    我有一些动态创建的元素 每个元素都有不同的 ng href 我想根据某些元素给出不同的链接 当我尝试在 ng href 中编写函数时 它会将页面发送到 url 中的函数 因此它不起作用 我尝试做这样的事情 a a 我应该使用哪种方法来创建具
  • 多个视图和控制器的 MVC 类组织是什么样的?

    MVC 本身的想法对我来说似乎很清楚 但我很难理解这个概念如何 扩展到 多个视图和控制器 看来 Cocoa 采用了将控制器作为模型和视图之间的 交换机 的方法 在多个视图的情况下 应用程序将如何组织和运行 如果每个视图都有一个关联的控制器
  • 保持服务器和客户端之间的验证逻辑同步[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 In my 上一个问题 https stackoverflow com questions 39371 database exception h
  • ASP.Net MVC 在哪里从实体转换为视图模型?

    标题几乎解释了一切 这是我在我们的项目中尝试做的最后一件事 我们的结构是一个服务库 其中包含这样的功能

随机推荐

  • 在 C# 中列出位于 SFTP 服务器上的 ZIP 文件内的文件

    我需要通过 ASP NET Core 以编程方式处理来自 SFTP 服务器 WinSCP 的 ZIP 文件内的文件夹 有什么方法可以获取 ZIP 文件中的文件列表而无需下载到本地计算机吗 作为 文件大小会很大并且不会保持一致 任何帮助 将不
  • Windows Phone 8 应用程序的用户名和密码数据

    我正在编写一个 Windows Phone 8 应用程序 该应用程序使用 API 来提取该应用程序需要的一些数据 并且要使用该 api 需要用户名和密码 我已获得此用户名和密码 它似乎可以工作 但是我想知道在应用程序中使用此用户名和密码的正
  • 通过运行时调用一个块,有什么类似于 NSInitation 的吗?

    我有未知类型的块 如id 和需要传递到该块的参数数组 参数可以是对象或装箱为 NSNumber NSValue 的数字 结构 Block 还可以返回一个对象 数字或结构 这是一个库代码 参数的类型事先是未知的 假设我可以动态地从块描述符中读
  • javascript 在 $.mobile.changePage() 之后停止工作

    我有两个页面 index html 和 main html 当我将 main html 页面设置为我的应用程序的默认页面时 java 脚本可以工作 但是当我将 index html 设置为主要页面时 重定向后 main html 上的 ja
  • svn 客户端/服务器版本

    如果我理解正确的版本颠覆定义 服务器上的结构存储库 客户端工作副本的结构 客户端和服务器之间的API 一旦我们安装了 svn 服务器 我们就不会触及 升级它 客户端的情况更加复杂 在客户端 Windows 我们目前使用乌龟vn 它的版本 如
  • 在画架中跨越多个精灵表时动画出现卡顿

    使用 EaselJS 我有一个动画 用户可以使用自定义滚动浏览 滑块 它使用 10 个精灵表来显示 152 个尺寸为 1924 x 的帧 1708 images were declared above in style var chromo
  • JavaScript Blob 下载二进制文件,创建损坏的文件

    我有一个二进制文件 pythonpickle文件 准确地说 每当请求这样的文件时 我都会在服务器端创建一个 然后通过 Flask 将其发送到客户端send file作为 AJAX 请求 接下来我需要自动下载这个文件到客户端 所以我使用了这个
  • 如何自动公开模块中目录中的所有 .rs 文件?

    我有从 protobuf 定义生成的模块文件 文件很多 并且会随着时间的推移而增长 这是结构 proto rust src lib rs proto rust src protos lots of auto generated rs fil
  • 以设计器的方式在Form的基类中显示handler

    我有一个继承自 Form 的基类 它在所示上注册了一个事件处理程序 class BaseClass Form public BaseClass base Shown new EventHandler BaseClass Shown void
  • 语法错误:“分隔符”此处输入无效

    我的有一个错误stored procedure使用 mysql 5 6 我正在使用 Workbench 6 3 CE 我的代码如下 DELIMITER this line shows error why CREATE PROCEDURE D
  • 如何获取两个字符 [string] 之间的字符串? PHP [重复]

    这个问题在这里已经有答案了 string1 This is test example string2 This is test example 2 string3 This is test example 3 我怎样才能得到以下结果 For
  • .NET Framework 支持空操作语法或单例

    使用现有框架时 有时您需要传入一个不执行任何操作的操作委托 通常是原始开发人员添加的扩展点 例子 var anObject new Foo gt 大概 Foo 对象会在某个时候调用这个委托 我的目标是消除 的使用 因为我的风格规定 需要独立
  • url 编码、Form 编码和 mailto: 编码

    我对与 HTML 相关的整个编码问题有点困惑 我不是指标头中的字符集或 XML 序言中的编码 我明白了 让我解释一下 当 mailto 与表单中的锚点或提交按钮一起使用时 空格将编码为 20 换行 回车 换行 行尾 将编码为 0A 当 en
  • 如何用git比较两个标签?

    我想在两个标签之间进行比较 并在这两个标签之间提交更改 能告诉我命令吗 git diff tag1 tag2 或显示它们之间的日志 git log tag1 tag2 有时只查看已更改的文件列表可能会很方便 git diff tag1 ta
  • 检查 Swift 中的密码字符串强度标准

    我的密码强度标准如下 8个字符长度 无特殊字符 至少 1 个数字 至少 1 个字母 update Xcode 8 3 2 斯威夫特 3 1 enum PasswordError String Error case eightCharacte
  • 如何使 git diff 与 StackExchange diff 一样细粒度?

    是否有一个 diff 工具可以突出显示单个字符编辑 而不仅仅是显示整行的旧版本和新版本 即 StackExchange 的 diff 类型显示您对帖子的编辑 我更喜欢一个可以在 Linux 命令行上使用的diff in git 你可以尝试
  • 使用 Jquery 3.1.1 时.slideToggle() 不起作用

    由于某种原因 当我尝试执行以下代码时 出现未捕获的类型错误 jQuery function document ready function block click function var currentElement this find
  • 如何将整数从任何基数转换为任何其他基数?

    我正在尝试做一些将任何基数转换为任何其他基数而不使用十进制转换的事情 例如程序将询问用户 Please put number which you would like to convert 101 Please write from whi
  • 使用自定义时间生成 Mongo ObjectId (_id)?

    我正在将一个文章表从 MySQL 移植到 Mongo DB 我知道 Mongo 生成的 id 字段以某种方式在那里有创建时间 并且可以提取或者您可以对其进行查询 因此 我想用它来获取来自 MySQL 的created time INT 时间
  • MVCS - 模型视图控制器服务

    我已经使用 MVC 很长时间了 并且听说过 Service 层 例如在Java Web项目中 我一直想知道这是否是一个真实的建筑模式鉴于我找不到很多有关它的信息 MVCS 的想法是拥有一个控制器和模型之间的服务层 封装控制器中可能存在的所有