我见过的所有洋葱架构示例都是在ASP.NET MVC应用程序的上下文中进行的。他们倾向于避免UI和服务实现(基础结构)之间的直接引用,方法是将IIS放在基础结构DLL中,并使用某种魔术(HttpModule或WebActivator)使IoC在正确的时间执行该设置代码。
在我的例子中,我正在开发一个视窗(TopShelf)服务,并且正在努力解决如何保持服务控制项目与基础设施项目完全解耦。在IIS web应用程序中,没有可以挂钩的执行管道。
我能想到的最好的办法是让服务项目扫描IoC注册表/模块类的DLL,但这看起来仍然不是很干净。
有什么想法吗?
发布于 2014-09-22 11:37:13
根据定义,Windows服务不是UI,所以我不确定这将实现什么。
所有TopShelf项目需要的是对实际服务类的引用:您的基础设施项目不需要引用TopShelf,而是引用shown in the documentation。
如果您没有来自TopShelf项目的对基础设施服务的引用,那么配置您的服务将是丑陋的。
您将需要使用ObjectFactory或ServiceResolver或类似的东西来使用IoC构造服务,但无论如何,这将是组合的根。
https://stackoverflow.com/questions/25913751
复制相似问题