c# - 使用 Windows 服务手动实现 IoC

标签 c# windows-services inversion-of-control

我是 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 服务中没有这种奢侈,那么我应该如何实现类似的东西,我应该有一个同时依赖于基础结构和核心的小型启动项目,还是有其他方法绕过 Windows 服务的编译时限制?

提前致谢。

最佳答案

根据这个问题 (c#) 的标签,我假设您将通过从 ServiceBase 派生来实现 Windows 服务.如果是这样,OnStart 方法将成为您的组合根 - 这是您组合应用程序对象图的地方。组合对象图后,组合结束,组合对象图接管。

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

没有什么能阻止您在单独的程序集中实现已解析对象图的各种组件。这就是我会做的。

关于c# - 使用 Windows 服务手动实现 IoC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824302/

相关文章:

c# - 间歇性 "unable to connect to remote server"错误

c# - 带有 DI 和 IoC 的工厂方法

c# - 如何隐藏 C# 单元测试?

c# - 如何在c#中获取之前的控件

design-patterns - Windows服务和设计模式

winapi - 我可以在进程之间传递 SC_HANDLE 吗?

c# - 绑定(bind)的 DataGrid 不更新集合更改

c# - 在逻辑树或可视树中查找工具提示弹出窗口

.net - 如何用 IoC 容器组织 MVP?

c# - Ninject multi-injection 并没有我想象的那么贪心!怎么会?