WebApi使用Unity实现IOC
最近在学习asp.net mvc,使用unity作为依赖注入容器.分别在webapi和mvc中使用.这篇文章介绍webapi,mvc的在下篇文章中介绍.下面是学习的一点经验.
一 ioc简单介绍
ioc(inversion of control)即控制反转,其具体就是由容器来控制业务对象之间的依赖关系,而不是像传统方式中由代码来直接控制。控制反转的本质,是控制权由应用代码转到了外部容器,控制权的转移即是所谓的反转。控制权的转移带来的好处就是降低了业务对象之间的依赖程度,即实现了解耦。
ioc的实现策略有两种:
1)依赖查找:容器中的受控对象通过容器的api来查找自己所依赖的资源和协作对象。这种方式虽然降低了对象间的依赖,但是同时也使用到了容器的api,造成了我们无法在容器外使用和测试对象;
2)依赖注入(又称di:dependency injection):对象只提供普通的方法让容器去决定依赖关系,容器全权负责组建的装配,它会把符合依赖关系的对象通过属性或者是构造函数传递给需要的对象。通过属性注射依赖关系的做法称为设值方法注入,将构造子参数传入的做法称为构造子注入。
依赖注入的好处如下:
查询依赖操作和应用代码分离;
受控对象不会使用到容器的特定的api,这样我们的受控对象可以搬出容器单独使用。
二:webapi
1 安装nuget包
2 安装完成后,会自动生成unityconfig.cs.修改其中的代码
下面新建buildunitycontainer方法
创建unity容器 我用了两种方法
第一种 在代码里直接写map
第二种 在配置文件中读取container
mappath中传的是config文件的位置,示例中是新建了一个configfiles文件夹,并新建配置文件testunity.config
配置文件中type中写入命名空间+方法,命名空间(不包含文件夹);
3 配置完成后,在启动程序中添加
4 这样就可以使用依赖注入了