控制器应该在多层解决方案中的什么位置
Where should the controllers be in a multi layered solution
说明:
我在 Visual Studio 中有一个解决方案,它有多个项目作为应用程序层。
- 业务逻辑(.NET 标准)
- 数据库操作的数据访问层(.NET 标准)
- Web 应用程序(.NET 核心)
- Xamarin 表单移动版
- Xamarin Android
- Xamarin IOS
- Xamarin UWP
问题:
我应该在哪一层创建我的 MVC 控制器作为这种情况的良好设计实践?
控制器属于网络层,因为它们处理与网络相关的活动,例如路由、处理传入的 http 请求等。
问问自己控制器的用途是什么,然后看看这些活动在哪个层中有意义...处理传入的 http 请求在数据层中最有意义吗?不对,数据层应该和数据相关I/O。
处理传入的 http 请求在业务逻辑层中最有意义吗?不,业务逻辑应该只包含执行您正在构建的 business/domain 逻辑所需的逻辑。
处理传入的 http 请求在 Web 层中最有意义吗?是的,正如我们所知,http 请求是网络的一部分。
网络上有大量关于 n 层(又名洋葱)架构的信息。 Here 是我很快找到的一个例子,它比我上面的回答更详细
说明: 我在 Visual Studio 中有一个解决方案,它有多个项目作为应用程序层。
- 业务逻辑(.NET 标准)
- 数据库操作的数据访问层(.NET 标准)
- Web 应用程序(.NET 核心)
- Xamarin 表单移动版
- Xamarin Android
- Xamarin IOS
- Xamarin UWP
问题: 我应该在哪一层创建我的 MVC 控制器作为这种情况的良好设计实践?
控制器属于网络层,因为它们处理与网络相关的活动,例如路由、处理传入的 http 请求等。
问问自己控制器的用途是什么,然后看看这些活动在哪个层中有意义...处理传入的 http 请求在数据层中最有意义吗?不对,数据层应该和数据相关I/O。
处理传入的 http 请求在业务逻辑层中最有意义吗?不,业务逻辑应该只包含执行您正在构建的 business/domain 逻辑所需的逻辑。
处理传入的 http 请求在 Web 层中最有意义吗?是的,正如我们所知,http 请求是网络的一部分。
网络上有大量关于 n 层(又名洋葱)架构的信息。 Here 是我很快找到的一个例子,它比我上面的回答更详细