c# - mvc 控制器应该只准备数据并将其传递给适当的服务方法调用
问题描述
请判断这是否是正确的陈述:
“Mvc 控制器的方法应该只调用一个适当的服务方法,所有其他语句应该只安排将传递给该服务方法的数据。”
假设我正在使用 asp.net core web api,并且我有一个专用于用户注册的端点('user/register')。所以它在控制器内部有方法(比如说 UserController 什么的):
Registed([FromBody] User user) {...}
.
这个方法应该只有一个服务方法调用是否正确:
_userRegistrationService.Register(UserDto user) {...}
在它和所有其他语句应该只准备用户模型而不是别的吗?
所以基本上控制器只安排数据并将其传递给服务方法而不做其他任何事情。
这似乎合乎逻辑且在 mvc 惯用语上是正确的。是吗?
解决方案
为了公平起见,这是一个更大的讨论,不能断章取义。
保持控制器非常精简并将所有逻辑保留在其他位置通常是一种很好的做法。
造成这种情况的原因有很多,主要原因是它将业务功能保留在它所属的地方,在它自己的专用位置。这会对测试产生影响,因为您不再需要做所有没有经验的开发人员所做的疯狂事情,例如实例化和模拟控制器,调用控制器方法来测试事情,如果您的功能被解耦,那么测试会变得更加简单因为您可以单独测试这些单独的东西,而无需尝试测试整个 MVC 框架。
这通常是该陈述正确的上下文。
推荐阅读
- kubernetes - 如何从 minikube 集群中获取 apikey?
- javascript - PayPal 结帐 - 订单创建时的 platform_fee
- javascript - hbs 文件内 script 标签中的 defer 属性
- arrays - 无法将元素从数组传递到视图
- haskell - Haskell:将整数推送到堆栈实现时的无限列表
- docker - 如何从 docker 获取报告文件并插入到 gitlab 存储库
- node.js - 我的nodejs api混合了客户端同时api请求的代码
- .htaccess - 如何使用 htaccess 重定向带有版本和 SEO 友好 URL 的强制 https?
- react-native - 反应原生触控 ID
- python - csv阅读器引号和行分隔