; Autofac 是一款轻量级的开源 IoC 容器,它主要负责管理类之间的依赖关系、管理对象的生命周期等,降低应用程序组件间的耦合性,提高类、组件的扩展性、可重用性。
3.2、背景
在我们的软件系统中通常都是通过 N 多个对象(系统、模块、对象)的共同协作来最终实现我们的业务系统。N 多个对象的协作肯定会产生或多或少的耦合(依赖),降低对象之间的耦合是我们软件工程永远追求的目标之一。
3.3、依赖倒置原则
a. 上层模块不应该依赖于下层模块,它们应该共同依赖于一个抽象。
b. 抽象不应该依赖于具体,具体依赖于抽象。
3.4、IoC
Inversion of Control:控制反转,反转的是对依赖对象的控制权。
如果 A 依赖 B 的话,按照之前的做法是在类 A 中需要 B 的地方主动实例化一个 B 对象。现在的做法是类 A 中需要一个 B 对象,IoC 容器初始化一个 B 对象传给类 A。创建依赖对象的职责从类 A 转移到了 IoC 容器里面。
3.5、依赖注入
可以用不同的方式实现 IoC,其中一种实现策略是依赖注入。那么依赖注入是什么?把耦合从代码中转移到配置文件中,通过一个 IoC 容器,在需要的时候再去形成这个依赖关系,即在程序中把需要的接口实现注入到需要它的类中。这就是依赖注入。
3.6、优点
- a、可维护性好:在通过 IoC 容器创建组件之间的依赖关系之前,这些组件之间是毫不相关的,分别都是独立的单元,便于各自调试和单元测试。
- b、分工明确、提高开发效率:各个组件都是独立的单元,可以由不同的开发团队来开发和维护,大大提高开发效率。
- c、可重用性高:常用的模块都是一个单独的个体,实现了标准的接口,可以插接到任何支持此标准的模块中。
四、DLL 包管理工具
4.1、NuGet 简介
NuGet 是 Visual Studio 的一个扩展。在使用 Visual Studio 开发基于.NET Framework 的应用时,NuGet 能把在项目中添加、移除和更新引用的工作变得更加快捷方便。
4.2、为什么要用 NuGet
- 由于公司内部的公共组件越来越多,为了统一方便管理这些公共组件,所以需要搭建公司内部的 NuGet 服务器。
- DLL 不用上传到 SVN 上,以免造成过多的 DLL 文件被传到 SVN 上,减轻 SVN 压力。
- 方便了包的依赖管理。
- 会及时知道 DLL 是否有更新。
- NuGet 可以自动还原项目引用的包。
4.3、使用方法
1、设置 NuGet 服务器
右键需要添加引用的项目文件 ->管理 NuGet 程序包,便打开了如下图所示的弹出框,然后点击【设置】按钮:
添加程序包源,即添加公司内部的 NuGet 服务器名和其地址【http://nuget.***.***/nuget】:
2、添加组件引用
在下图左侧的联机列表中,选中在上步设置的 NuGet 服务器名【***NuGet】,然后在下图中间的列表中选中要添加的引用的组件名,再通过点【安装】按钮把相应的组件引用添加到项目中:
3、更新组件引用
在下图左侧的更新列表中,选中在前面步骤中设置的 NuGet 服务器名【***NuGet】,然后在下图中间的列表中选中要重新添加引用的组件名,再通过点【更新】按钮把相应的组件引用重新添加到项目中:
4、包管理
管理包时需要用到 NuGetPackageExplorer,下载地址:位于本文的【下载资源】处。
新建包:
1)、打开 NuGet Package Explorer,单击【创建一个新的组件包】:
2)、将需要打包的组件引用拖放到【Package contents】区域:
3)、单击位于界面左上角的【Edit Metadata】按钮后,进入如下图所示的编辑界面。
在【Package metadata】区域中编辑好组件的相应信息,然后点绿色的勾,然后点击FILE->Save保存;其中,包名(即包Id号)的命名规范建议是:{产品线英文名全称}.{AppID}.{***}:
4)、组件发布
点击FILE->Publish后,在弹出如下图的所示框中,发布地址输入:http://nuget.***.***/,在Publish Key文本框处输入密码:
更新包:
1)、打开NuGet Package Explorer,单击从【从在线源中打开一个包】:
2)、在Package source文本框处默认显示了【http://nuget.***.***/nuget】,即公司内部的NuGet服务器地址,再单击【Reload】按钮;然后,在出现的包列表中选中将要编辑的包,然后双击它或者单击【open】按钮:
3)、单击位于界面左上角的【Edit Metadata】按钮后,进入如下图所示的编辑界面。
在编辑界面的【Package metadata】区域中,在【Version】文本框中增大版本号。然后,在编辑界面的【Package contents】区域中,右键需要更新的引用,然后在弹出的快捷菜单中单击【Replace with...】来完成重新上传最新的包的操作:
4)、编辑完成之后,单击位于上图左上角的绿色勾,然后单击FILE->Publish进行发布工作。
五、资源下载