【问题标题】:Where should the controllers be in a multi layered solution控制器在多层解决方案中的位置
【发布时间】:2019-03-22 13:40:18
【问题描述】:
说明:
我在 Visual Studio 中有一个解决方案,它有多个项目作为应用程序层。
- 业务逻辑(.NET 标准)
- 用于数据库操作的数据访问层(.NET 标准)
- Web 应用程序 (.NET Core)
- Xamarin Forms 移动版
- Xamarin Android
- Xamarin IOS
- Xamarin UWP
问题:
我应该在哪一层创建我的 MVC 控制器作为这种场景的良好设计实践?
【问题讨论】:
标签:
c#
asp.net-mvc
multi-layer
【解决方案1】:
控制器属于 web 层,因为它们处理与 web 相关的活动,例如路由、处理传入的 http 请求等。
问问自己控制器的作用是什么,然后看看这些活动在哪一层有意义……处理传入的 http 请求在数据层中最有意义吗?不,数据层应该和数据I/O有关。
在业务逻辑层中处理传入的 http 请求是否最有意义?不,业务逻辑应该包含只需要执行您正在构建的业务/域逻辑的逻辑。
在 Web 层中处理传入的 http 请求是否最有意义?是的,正如我们所知,http 请求是网络的一部分。
网络上有大量关于 n 层(又名洋葱)架构的信息。 Here 是我很快找到的一个例子,它比我上面的答案更详细