【发布时间】:2023-03-24 04:47:02
【问题描述】:
我们想将我们的composition root 移出我们的 UI 层并进入另一个项目。这意味着将Startup 类移出UI 层。当Startup类不在UI层的项目中时,如何配置路由?
我们目前有这个设置。
-
DAL依赖于BLL,因为DAL实现了BLL接口。 -
UI依赖于BLL,因为UI控制器调用BLL接口。 -
UI依赖于DAL,因为 UI 的Startup包含 composition root。
当前依赖关系图
+---------+ UI.xproj
| +
| |
| |
| |
| v
| BLL.xproj
| ^
| |
| |
| |
| +
+---------> DAL.xproj
基于on this article 和aspnet GitHub account 中的大量示例,我们在UI.Startup 类中连接我们的依赖项。文章称:
在应用程序启动方法中注册所有依赖项,然后再执行任何其他操作。
这就是我们在UI.Startup 课程中所做的。不过,我们想做的是将Startup 类移动到第四个项目中,这样我们就可以消除UI 对DAL 的依赖。
所需的依赖关系图
+--------------------> UI.xproj
| +
| |
| |
| |
+ v
Application.xproj +--------> BLL.xproj
+ ^
| |
| |
| |
| +
+--------------------> DAL.xproj
我们当前的UI 使用 ASP.NET MVC,并且路由就像魔术一样工作,只需两个简单的步骤:
- 在
UI.Startup内部,我们只需调用services.AddMvc()和app.UseMvc()。 - 我们在控制器上添加
[Route("api/[controller]")]。
当我们在 Visual Studio 中运行项目时,我们可以浏览到 /api/my-controller/ 并查看预期的操作结果。时髦的。
在我们想要的设置中,UI 将不再有 Startup 类,因为该调用现在将在 Application 中。 Application 不仅负责配置依赖,还需要配置路由。
我们如何配置路由以指向UI 层中的控制器?
【问题讨论】:
标签: c# asp.net asp.net-mvc dependency-injection asp.net-core