我是IoC的新手,因此一直遵循Jeffery Palermo在http://jeffreypalermo.com/blog/the-onion-architecture-part-1/上的帖子以及在此处托管的书https://github.com/jeffreypalermo/mvc2inaction/tree/master/manuscript/Chapter23中提供的示例。

需要注意的最重要一点是,我没有使用预卷的IoC容器,主要是因为我想了解所有事件部件。

但是,我创建的是Windows服务而不是ASP.NET MVC Web应用程序,因此我对启动部分不感到困惑。具体来说,他在web.config中将基础结构项目中的IHttpModule实现注册为启动模块,然后使用构建后事件将必需的dll复制到网站目录中,以避开对Web项目本身的直接依赖。

我认为我在真正的Windows服务中没有这种奢侈的感觉,因此,如果我有一个既依赖于基础架构又依赖于Core的小型启动项目,还是应该采用另一种解决方法,我该如何实现类似的目标? Windows服务的编译时限制?

提前致谢。

最佳答案

基于此问题的标签(C#),我假设您将通过从ServiceBase派生实现Windows服务。如果是这样,OnStart方法将是您的 Composition Root -在这里您可以组成应用程序的对象图。组成对象图后,合成结束,组成的对象图接管。

在OnStop中,您可以再次停用对象图。

没有什么可以阻止您在单独的程序集中实现已分解对象图的各个组件。那就是我会做的。

09-07 02:03