我的项目组如下:
1)共享类库
2)Web API
3)控制台应用
我的问题是:
我是否应该创建一个具有在Control Application和Web API之间共享的ConfigureServices方法的DI Container类?
或者让每个应用程序负责绑定自己的依赖项更有意义吗?
提前致谢!
答案 0 :(得分:0)
这取决于应用程序的性质,但总的来说,我会说你想将它拆分并在任一应用程序中使用它。两个应用程序中相同的东西不需要抽象和ioc注册(不要使抽象的东西不需要抽象)。
那就是说,你看到microsft使用扩展方法模式一次添加多个demendencies像:.gitconfig
是一个扩展方法,可以添加20个左右的ioc注册。您可以在共享库中执行相同操作。只需在启动类中添加services.AddMvc()
:
services.AddSharedLibrary()
您还可以为Startup Class创建一个(抽象)基类。但这意味着您的共享库现在需要依赖于HttpBuilder / Kestrel nuget包。例如,如果您在制作Servicebus队列侦听器的位置,那将会很奇怪。
为Startup创建基类的一个很好的理由是:如果您希望所有启动项目具有相同的方式和顺序来构建Appsettings和/或您希望它们使用相同的Appsettings作为IOptions的配置。但在这种情况下,我建议为此创建一个单独的共享库,专门用于提供相同的StartupBase和配置。