0

我见过的所有洋葱架构示例都在 ASP.NET MVC 应用程序的上下文中。他们倾向于通过将 IoC 设置放在基础结构 DLL 中并使用一些魔法(HttpModule 或 WebActivator)使 IIS 在正确的时间执行该设置代码来避免 UI 和服务实现(基础结构)之间的直接引用。

就我而言,我正在开发一个 Windows (TopShelf) 服务,并且正在努力解决如何使服务控制项目与基础设施项目完全分离。没有像在 IIS Web 应用程序中那样挂钩的执行管道。

我能想到的最好的方法是让服务项目扫描 IoC 注册表/模块类的 DLL,但这似乎仍然不那么干净。

有任何想法吗?

4

1 回答 1

0

根据定义,Windows 服务不是 UI,所以我不确定这会实现什么。

所有 TopShelf 项目需要的是对实际服务类的引用:您的基础设施项目不需要对 TopShelf 的引用,如文档中所示

如果您没有对 TopShelf 项目中的基础设施服务的引用,那么配置您的服务将会很麻烦。

您将需要使用 ObjectFactory 或 ServiceResolver 或类似的东西来使用 IoC 构造服务,但这将是组合根。

于 2014-09-22T11:37:13.417 回答