注册网站的免费网址是什么,潍坊自助建站模板,甘肃手机版建站系统哪个好,网站建设工作汇报前言前两节针对.NetCore自带的依赖注入进行简要概述#xff0c;对于日常开发的需求应该是能满足了#xff0c;那为什么还需要引入第三方依赖注入组件呢#xff0c;这里就从自带的依赖注入来分析#xff0c;有什么样的需求满足不了#xff1f;主要归纳为以下几点#xff1… 前言 前两节针对.NetCore自带的依赖注入进行简要概述对于日常开发的需求应该是能满足了那为什么还需要引入第三方依赖注入组件呢这里就从自带的依赖注入来分析有什么样的需求满足不了主要归纳为以下几点属性注入自带的依赖注入不支持属性注入方式而现阶段开发属性开发模式应该在程序中无处不在了按名称注入自带的依赖注入不支持名称注入当注入多个同接口的不同实现时要获取指定类型的对象不太方便但通过名称可以方便获取注册方式自带的依赖注入需要指定具体类型这样每增加一个新类型就要添加注册程序员“精益求精”的思维会问有没有只要添加新类型就能自动注册的方式有第三方依赖注入组件提供了程序集注入的形式其他扩展功能除了上面提到第三方依赖注入组件还有很多扩展功能比如更多的注册方式、子容器管理、基于动态代理的AOP等这里的AOP很有用就是通常说的面向切面编程接下来会对此做一个简单的案例 说了这么多不就是为了说明根据实际需要可以引入第三方依赖注入组件进行增强容器的能力不废话直接看看怎么用正文 不行这里还得唠叨一下毕竟现在开发社区中依赖注入的框架很多目前都有哪些又怎么选呢 比较流行依赖注入组件有哪些呢AutofacCastle WindsorUnitySpring.NetStructureMapNinject 这里就不进行性能对比了有好多大牛进行了性能测试对比搜索引擎都有上面看到标注红色的前几个其实也就是相对来说比较流行而Spring.Net最近几年用的不火了不过刚开始的时候的确风靡过一段时间从开发社区来看当下Autofac、Castle Windsor是最火其中Autofac似乎更让开发者喜爱而对于StructureMap有大牛做过性能测试它的性能和Autofac相对其他来说更有优势 其实我想说主要是看项目需求啦如果没有太苛刻的要求的话可以根据项目技术情况进行选择但是我还是优先推荐Autofac、Castle Windsor、Unity强烈推荐Autofac毕竟大家都在用好多比较火的框架都集成了比如ABP_vNext不过多会用几个绝对没坏处 来开干将Autofac集成在Asp.NetCore中三小步搞定 通过Nuget安装Autofac包修改 Program.cs 将默认ServiceProviderFactory指定为AutofacServiceProviderFactory 在 Startup.cs 中添加 ConfigureContainer 方法 这里加一个模拟业务逻辑层和数据层后续方便演示数据层业务逻辑层这一层引用数据层ConfigureContainer 方法添加注册 通过以上三步就集成了AutoFac成不成功拉出来遛遛在Action中使用 运行调试走你 可见默认属性注入没有开启注册时优化一下 再运行调试走你 这次运行的时候服务层属性注入成功但Controller那还不行因为我们没有将Contoller的属性注入功能开启接下下来在程序集注册的时候说说 通过上面的服务注册每添加一个类型都要在注册的地方添加可以通过程序集的注册方式后续就不用每次添加了如下代码简单说明及注意代码中的AsImplementedInterfaces是暴露所有接口Assembly.Load加载程序集有多种加载方式如Assembly.LoadFrom/LoadFile等需要注意每个方法的使用前提不然找不到程序集文件注册时其中的Where是用来过滤类型找到符合条件的类型 运行调试都注入上了以后在对应程序集中添加类型就不用每次在注册的地方添加该类型的注册代码了 刚才遗留的控制器属性注入问题为什么放在这里说呢因为要用到程序注册方式两步走 这样就可以在Controller中进行属性注入了运行之前不能注入的都成功了当然还有其他的方式这里没有深入 Autofac的注册方式有点多这里就不一一举例了可以到官网进行详情了解 之前说到AOP功能这里举例说明一下毕竟这在实际开发项目中比较重要这里不说原理之前写过一篇博客可以去看一下Asp.NetCore 中Aop的应用https://www.cnblogs.com/zoe-zyq/p/12803450.html 通常在项目中业务层做逻辑处理、数据处理比较多通常我们会在业务层进行相关缓存处理及其他处理所以这里在业务层中举例演示(当然其他层也可以) 既然要进行切面处理得有个地方处理所以得增加个拦截器Nuget先安装一个包Autofac.Extras.DynamicProxy; 注册的时候开启切面功能并指定对应拦截器进行处理 这样就能通过拦截器扩展相关功能业务逻辑前后都行也可以不调用原有的业务代码通过拦截器短路运行结果如下 可以看到请求完之后在对应的业务处理前后都进行了对应处理这里之所以有两次那是因为上面测试代码调用了两次 像这种无嵌入型进行扩展的AOP编程方式是非常有用的扩展和维护功能也比较方便有人说性能问题有降低当然会有那么一点相对来说是可以接受的除非是扩展业务逻辑耗时多这就需要另想方案了总结 Autofac这里就简要说这么多详情到官方研究吧还有很多东西但思路基本上就是这样接下来开始说说配置因为配置比较重要从之前启动流程中就体现出来