笔记-NopCommerce系统架构分析-引擎和依赖管理IOC
来源:互联网 发布:线性代数中矩阵求模 编辑:程序博客网 时间:2024/05/16 10:04
Nop引擎是为了将整个框架的核心与业务逻辑进行低耦合而设计的单实例对象。
Nop引擎是IOC的管理者,主要将IOC的依赖查找和依赖注册简化,将内部功能封装在Nop引擎中,只对外开放依赖查找功能,在框架中提供依赖注册接口,实现IOC的注册和查找分离,方便使用。
主要对象
IEngine 引擎接口,定义引擎的功能(组件和插件初始化、包装后的IOC容器、依赖查找)
NopEngine 实现IEngine,实现了AutofacIoc组件实现控制反转。
EngineContext 引擎环境,Nop引擎的初始化工作和用于向外部开放Nop引擎的单实例访问。
Nop将IOC的依赖查找封装起来,并把依赖注册的抽象化(定义注册接口)
主要对象
IDependencyRegistrar 依赖注册接口(抽象化依赖注册)
ContainerManager IOC容器管理器(封装IOC容器,提供组件注册和依赖查找)
ContainerConfigurer IOC容器配置器(Nop框架初始IOC组件注册)
AutofacRequestLifetimeHttpModule 创建ILifetimeScope,ILifetimeScope是IOC依赖查找的关键对象
ComponentLifeStyle 组件生命周期(临时、单例、终生周期)
业务流程
系统启动
EngineContext初始化
NopEngine初始化
ContianerConfigurer初始化
向IOC注册NopConfig、NopEngine和ContianerConfigurer实例。
向IOC注册TypeFinder实例
通过TypeFinder对找系统中所有的依赖注册(IDependencyRegistrar),并注册到IOC中。
启动任务初始化
AutoMap映射
EF数据库设置验证
Nop基础数据初始化
DependencyResolver设置(服务和依赖解析方法)
附:Ioc与WebApi
1、需通过Nuget安装Autofac.WebApi2包,后自动引用Autofac.Integration.WebApi程序集
2、注册Api依赖关系解析程序(GlobalConfiguration.Configuration.DependencyResolver)
3、注册ApiControllers(IHttpController)程序集。
另附:
几年前自己写了一个Autofac.Engine,应用比较简单。可以应用于 Web.和WebApi,而且源码不依赖 System.Net.Http等资源。已经在自己写的框架里应用了好几年。现在稳定运行10+个项目,提供大家参考,点评:
https://www.nuget.org/packages/Autofac.Engine/
http://git.oschina.net/Lycan80/Autofac.Engine
老早就想做一个开源的项目管理系统,正在筹划中吧(前端达不到自己理想的效果,在努力)。
- 笔记-NopCommerce系统架构分析-引擎和依赖管理IOC
- 笔记-NopCommerce系统架构分析-简介
- 笔记-NopCommerce系统架构分析-事件机制
- 笔记-NopCommerce系统架构分析-缓存机制
- 笔记-NopCommerce系统架构分析-任务机制
- 笔记-NopCommerce系统架构分析-插件机制
- 笔记-NopCommerce系统架构分析-单实例控制、Type探测器
- 笔记-NopCommerce系统架构分析-Ef数据访问
- NopCommerce架构分析之一----依赖类生成容器
- NopCommerce架构分析之开篇
- NopCommerce架构分析之参考资料
- NopCommerce架构分析之四----插件机制
- NopCommerce架构分析之六------自定义RazorViewEngine
- NopCommerce架构分析之八------多语言
- NopCommerce架构分析之七------皮肤管理器
- NopCommerce架构分析之五------Model绑定Action参数
- Laravel核心之IOC和Facade 架构分析1
- kbengine引擎架构分析
- 【友盟分享】部分手机出现第一次分享之后第二次无法分享
- 浅谈Hybrid技术的设计与实现
- 深入理解RunLoop
- 鼠标移入侧边栏一级菜单后,二级菜单显示
- log4j.properties详解与例子
- 笔记-NopCommerce系统架构分析-引擎和依赖管理IOC
- 链表的基本操作
- 父组件向子组件传递数据(vue.js)
- Android基础学习
- android Volley 源码分析
- GTS4.1 R1常见问题处理
- Spring(03)——依赖注入
- android 应用 替换 logo 和 应用名字
- 机器学习引擎在公司内网环境发现蠕虫