我们目前正在编写一个充当服务网关的nuget包.它的职责是结束对外部服务的调用,以便以正确的方式进行,并正确处理响应.其目的是减少新客户端想要使用外部服务时的开销时间开销.
nuget包是在外部服务的解决方案中由单个项目构建的,称为“客户端”.这样客户端项目就可以共享一个公共域,并在构建号码发布时保持同步.客户端项目应用控制原理的反转,这意味着作为入口点的类(从外部服务获得响应的堆栈的开始)具有许多接口依赖性.
我们通常使用StrucutreMap作为我们的IoC容器,但我想知道如何使用依赖注入’内置’来配置我们的客户端项目?似乎错误的是每个消费者都必须连接包的依赖性解析.但是,也不应该是每个客户端都应该使用StructureMap并且必须将“ClientRegistry”(初始化程序)类添加到其自己的启动逻辑中.
是否有任何指导原则来帮助解决这个问题?或者基于IoC原则构建的复杂nuget包的任何好例子?
您可以使用
CommonServiceLocator – 它不像完整的IoC容器那么丰富,但它会使您的包容器不可知,并且应该允许您的包的消费者继续使用他们选择的IoC容器.
The library provides an abstraction over IoC containers and service locators. Using the library allows an application to indirectly access the capabilities without relying on hard references. The hope is that using this library,third-party applications and frameworks can begin to leverage IoC/Service Location without tying themselves down to a specific implementation.