【框架学习与探究之依赖注入--Autofac】

同样的又是一个双11如期而至,淘宝/天猫实时数据显示,开场3分钟总交易额突破100亿元人民币,简直可怕!同时产生了新的支付峰值诞生:25.6万笔/秒,以及数据库处理峰值4200万次/秒,说这些不是再给某某打广告哈,只是感叹如今的技术和业务双向驱动所带来的巨大冲击力,完成了史上基本不可能的事情,相信这绝不是极限,因为中国女人的支付能力是木有上限一说的,开玩笑啦,哈哈哈,好了废话说了一通,趁着博主也完成剁手之后,然后赶紧回到了继续学习的旅途中......

前言

当看到这文章题目的时候,相信很多人都是感叹,怎么又是一个来讲依赖注入,怎么又是autofac浅析之类的,所以咯,此文只是博主阅读文档和平时的经验整合,然后呐,懂的人或者熟悉的中高配玩家,就可以绕道了,╮(╯﹏╰)╭,其实博主之前的个人项目还是公司项目都是采用 Unity 来作为 ioc 套件进行使用,使用过程也还算良好也是基本具备了一个ioc组件应该具有的价值,或许也是微软企业套件为数剩下来不多的好的组件了吧,但是无奈后期博主觉得Unity在性能或者灵活性上面逐渐展示出来的欠缺性,相比于今儿我们熟知的autofac而言就越显尴尬,当然二者的官方文档都还算字字走心还算详细,但是重要的一点就是autofac在社区的热度以及地位就比较高了,其次就是它的周边扩展也是相当多的支持,当然啦,从一个系统或者项目俯视来看,它或者谁都是系统组件的一个冰山一角,都是作为一个零件使用,但是我们依然不能就此忽略其的地位,因为它算是在一个系统中处于贯穿的层次级别,所以在对象创建和依赖+生命周期统筹上面起到了决定性作用,所以各位同学当然也得需要重点关注如何集成才是......

DIP、Ioc和DI概念(理解)

首先按照国际惯例给出各自的wiki,Dependency Injection (DI) Wiki : https://en.wikipedia.org/wiki/Dependency_injection ;Inversion of control (IOC) Wike : https://en.wikipedia.org/wiki/Inversion_of_control ; 这里给出的是英文版解释,当然英语能保留原滋原味,不过我相信中文的解释更能让人接受一些,所以这里博主依然找出了中文相关的通俗解释,这里引用一篇好文当中的话(原文链接:);
1、依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念)。
2、控制反转(IoC):一种反转流、依赖和接口的方式(DIP的具体实现方式)。
3、依赖注入(DI):IoC的一种实现方式,用来反转依赖(IoC的具体实现方式)。
4、IoC容器:依赖注入的框架,用来映射依赖,管理对象创建和生存周期(DI框架)。
至于每个概念的解读到理解以及示例展示,就可以看上文给出的连接,文中的解析挺到位的,所以这里备份链接地址在文中惠存,文中有相关的通俗解释,可以加深影响后加以理解,内化之....

Autofac文档摘取

当然也是因为 autofac 本身文档完备性,相信也是大部分玩家选择用它的原因之一,简直感觉加一起来就是一本薄的书了哈,所以这里博主先后阅读了两三遍之,采用了一遍走马观花有个印象,二遍择优而读加深理解,三遍查漏补缺,可能很多人都觉得哪有这么麻烦,先用起来到时候有问题有不懂的地方再去翻查文档即可,当时候博主也是准备这样的来的,其实方式并没有好坏一说,只是看个人喜好和学习方法而已,博主打算在完成此框架的学习之后,就着手与案例分析和框架集成的工作了,其实先前早些时候已经尝试过了对通用开发框架的一些实践,不过现在看看有些愣之嫩之,所以在此对开发当中需求的框架基本过一遍之后心中有谱儿之后,再次做集成工作就会显得“稳”一些,上述是博主自己的想法......2333333

关于注册那点事儿

看来都是通过一个主要对象ContainerBuilder完成对各式各样的组件注册,且通过名字也可以知道此类是生成服务容器的生成器在生成容器之前,自然就是注册各种相关组件或者服务啦,关于API注册相关的话,大致有以下相关主要方式注册,不限于此:
1、通过类型注册( Register by Type ),类似:builder.RegisterType();builder.RegisterType(typeof(NLogLogger));,同时这里当使用该注册件时,会通过反射实例化对象,且会选择最合适的构造函数使用会自动传递依赖项进去,当然官方也提供了builder.RegisterType().UsingConstructor(typeof(ILogger), typeof(IConfigReader)); 指定构造函数使用,这里最合适体现在该组件的依赖项在容器的是否存在而定

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdwjf.html