1、三级查询扩展Ioc 李萌李萌 20172017年年3 3月月计算机科学与技术学院主题n 教学设计教学设计n 控制反转控制反转IOC计算机科学与技术学院教学设计n 在四则计算器基础上,扩展知识点,深在四则计算器基础上,扩展知识点,深入技术点,丰富职业技能入技术点,丰富职业技能n 案例均提供了单元测试案例均提供了单元测试n 案例学习没有严格先后次序案例学习没有严格先后次序n 技术点源自软件工程师招聘要求技术点源自软件工程师招聘要求n 通过完整项目,熟悉通过完整项目,熟悉CDIO过程过程n 通过多个项目,强化职业技能通过多个项目,强化职业技能计算机科学与技术学院说明n 数据存储数据存储存在存在多种实
2、现多种实现l LiteDbl Sql Server LocalDbn 上层只依赖于抽象,而不依赖具体实现上层只依赖于抽象,而不依赖具体实现n UI只只依赖接口依赖接口计算机科学与技术学院主题n 教学设计教学设计n 控制反转控制反转IOC计算机科学与技术学院构思Conceiven 数据访问数据访问与调用者分离与调用者分离计算机科学与技术学院设计Designn 数据访问抽象为接口数据访问抽象为接口n UI只依赖接口只依赖接口n 实例化实例化由由控制反转控制反转IOC处理处理n 百度百科,控制百度百科,控制反转反转是关于是关于一个对象如一个对象如何获取他所依赖的对象的引用,这个责何获取他所依赖的对象
3、的引用,这个责任的反转任的反转。n 依赖注入依赖注入DI是是IOC的一种实现类型的一种实现类型计算机科学与技术学院实现Implementn 新增类库项目新增类库项目IRepositoryl 添加对添加对Domian的引用的引用n 新增,接口新增,接口IDbRepositoryl 三三个只读属性个只读属性l Provinces、Cities、Districtsl 类型类型IEnumerable计算机科学与技术学院重构Repositoryn LiteDbRepository与与MsSqlRepositoryl 添加对添加对IRepository的引用的引用l Data类实现类实现IDbReposi
4、tory接口接口l 连接字符串分别变更为连接字符串分别变更为DistrictQueryLiteDb与与DistrictQueryMsSqlDb计算机科学与技术学院重构UIn 添加引用添加引用l IRepositoryl MsSqlRepositoryl LiteDbRepositoryn 使用使用NuGet包管理器,安装包管理器,安装Autofac(一种(一种IOC实现框架)实现框架)n 使用使用Autofac完成完成实例化实例化n 配置配置Autofac计算机科学与技术学院NuGet安装Autofacn 使用包管理器,向使用包管理器,向UI项目添加项目添加l Autofac,版本,版本3.x
5、,下同,下同l Autofac.Configuration计算机科学与技术学院Autofac初始化n 新增新增l autofac容器接口类型容器接口类型IContainer变量变量n autofac初始化初始化方法,方法,CreateContainerl 读取读取配置配置,ConfigurationSettingsReader(autofac)l 注册注册组件,组件,RegisterModulel 创建创建容器,容器,builder.Build()计算机科学与技术学院UI代码重构n 更改,数据访问依赖于接口,更改,数据访问依赖于接口,而不是具而不是具体对象体对象n 由由Autofac处理实例化
6、处理实例化l 获取获取对象,对象,container.Resolvel 依据配置文件,映射接口的具体实现类依据配置文件,映射接口的具体实现类计算机科学与技术学院配置管理n 配置文件,配置文件,App.confign 增加配置节增加配置节section,autofacn 增加组件增加组件componentn 增加连接字符串增加连接字符串l LiteDb、MsSql计算机科学与技术学院关系配置n 配置接口与实例化映射关系配置接口与实例化映射关系l Service,接口,接口l Type,类,类l Xxx,xxx格式,逗号后为程序集名称,逗号前格式,逗号后为程序集名称,逗号前为为类型类型计算机科学与技术学院小结n 复习复习l UI与数据集合分离与数据集合分离l 多种数据访问方式,多种数据访问方式,Sql、NoSqln 新增新增,实例化实现方式,控制,实例化实现方式,控制翻转翻转n 新增,新增,autofac负责实例化负责实例化