ASP.NET Core中的依赖注入(vNext)

前端之家收集整理的这篇文章主要介绍了ASP.NET Core中的依赖注入(vNext)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前还没有关于DI主题的文档 – Dependency Injection.有人可以帮助我了解以下内容

>这些注册有什么区别?

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IService,Service>();
    services.AddScoped<IService,Service>();
    services.AddSingleton<IService,Service>();
    services.AddInstance(service);
}

>使用内置DI的现有解决方案(NInject,Autofac,Structure Map)有什么优缺点?
>默认依赖注入的当前限制是什么(如果有)?

解决方法

对于遵循SOLID原则的任何相当大尺寸应用的产品开发,vNext的内置DI容器将无用,因为:

>它不能帮助您验证您的配置,使其非常难以诊断来自常见配置错误的问题,例如Captive Dependencies.在合理大小的应用程序中,实际上很难自己发现这些错误
>使用拦截器或decorators应用交叉问题是不可能的。这使得维护任何合理大小的应用程序真的很贵。
>尽管它支持将打开的通用抽象映射到打开的通用实现,但它无法使用类型约束的泛型类型。

内置容器还有其他限制,例如只能支持具有单个构造函数的类型,但这是一个非常合理的默认值,因为your injectables should only have a single constructor anyway.由于rc1现在有一些多操作符支持

如果您从一个新的和简单的项目开始,我的建议是应用Pure DI(这意味着手机组件,而不使用容器),并通过插入your custom IControllerActivator解决您的类型。之后,当批处理注册和装饰将提高composition root的可维护性,切换到符合您要求的已建立的DI库之一。

猜你在找的.NET Core相关文章