控制器应该在多层解决方案中的什么位置

Where should the controllers be in a multi layered solution

说明: 我在 Visual Studio 中有一个解决方案,它有多个项目作为应用程序层。

  1. 业务逻辑(.NET 标准)
  2. 数据库操作的数据访问层(.NET 标准)
  3. Web 应用程序(.NET 核心)
  4. Xamarin 表单移动版
    1. Xamarin Android
    2. Xamarin IOS
    3. Xamarin UWP

问题: 我应该在哪一层创建我的 MVC 控制器作为这种情况的良好设计实践?

控制器属于网络层,因为它们处理与网络相关的活动,例如路由、处理传入的 http 请求等。

问问自己控制器的用途是什么,然后看看这些活动在哪个层中有意义...处理传入的 http 请求在数据层中最有意义吗?不对,数据层应该和数据相关I/O。

处理传入的 http 请求在业务逻辑层中最有意义吗?不,业务逻辑应该只包含执行您正在构建的 business/domain 逻辑所需的逻辑。

处理传入的 http 请求在 Web 层中最有意义吗?是的,正如我们所知,http 请求是网络的一部分。

网络上有大量关于 n 层(又名洋葱)架构的信息。 Here 是我很快找到的一个例子,它比我上面的回答更详细