gpt4 book ai didi

dependency-injection - 使用服务层时配置 IoC 容器的正确层是什么?

转载 作者:行者123 更新时间:2023-12-04 08:22:04 25 4
gpt4 key购买 nike

我有一个中型的 asp.net MVC 应用程序。它使用一个服务层来处理所有存储库的使用、调用域服务等。我的 Controller 操作非常 slim ——它们基本上调用一个服务类,获得响应并显示该响应。大多数组件都是基于接口(interface)的,带有一些穷人的 DI。该应用程序正在增长,需要更好的测试支持,并开始呼吁使用 IoC 容器。

我读到的所有内容(例如 this SO question )都表明我应该在应用程序根目录配置 IoC。如果我直接从 Controller 操作中使用存储库并且在 Controller 级别需要 DI,这对我来说是有意义的,但我不是。似乎我希望我的组合根植于我的服务层。我一直在想,我不希望我的 web.config(或其他配置)在 UI 层,甚至提到/看到/听到有关存储库、信用卡处理器等的信息。

我是在以正确的方式思考这个问题,还是我只需要克服它?

最佳答案

我的情况和你一样,我按如下方式解决。

我使用的一般规则是有一个 global.asax 或类似的东西,它需要执行注册 IoC 组件的代码。另一种说法是,您需要为每个正在运行的不同进程运行它(即网站在一个进程中,而服务在另一个进程中)。

就我而言,我为 mvc 网站 global.asax 执行一次,然后为服务器执行一次。在这种情况下,服务和网站之间的注册会有所不同。

另外我还做一件事。由于我在 mvc 应用程序和服务之间重用组件(即日志记录),我有第三个核心组件,它为系统注册核心 IoC 组件,并且该组件由网站和服务注册调用。因此,我将服务和网站之间共有的任何内容都输入核心注册,然后将任何不同的内容输入“接口(interface)”特定注册。

希望有帮助。

关于dependency-injection - 使用服务层时配置 IoC 容器的正确层是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com