笔记-NopCommerce系统架构分析-引擎和依赖管理IOC

来源:互联网 发布:线性代数中矩阵求模 编辑:程序博客网 时间:2024/05/16 10:04

Nop引擎是为了将整个框架的核心与业务逻辑进行低耦合而设计的单实例对象。

Nop引擎是IOC的管理者,主要将IOC的依赖查找和依赖注册简化,将内部功能封装在Nop引擎中,只对外开放依赖查找功能,在框架中提供依赖注册接口,实现IOC的注册和查找分离,方便使用。

主要对象

IEngine                           引擎接口,定义引擎的功能(组件和插件初始化、包装后的IOC容器、依赖查找)

NopEngine                    实现IEngine,实现了AutofacIoc组件实现控制反转。

EngineContext              引擎环境,Nop引擎的初始化工作和用于向外部开放Nop引擎的单实例访问。



NopIOC的依赖查找封装起来,并把依赖注册的抽象化(定义注册接口)

主要对象

IDependencyRegistrar                       依赖注册接口(抽象化依赖注册)

ContainerManager                              IOC容器管理器(封装IOC容器,提供组件注册和依赖查找)

ContainerConfigurer                           IOC容器配置器(Nop框架初始IOC组件注册)

AutofacRequestLifetimeHttpModule    创建ILifetimeScopeILifetimeScopeIOC依赖查找的关键对象

ComponentLifeStyle                          组件生命周期(临时、单例、终生周期)

业务流程

系统启动

EngineContext初始化

NopEngine初始化

ContianerConfigurer初始化

IOC注册NopConfigNopEngineContianerConfigurer实例。

IOC注册TypeFinder实例

通过TypeFinder对找系统中所有的依赖注册(IDependencyRegistrar),并注册到IOC中。

启动任务初始化

AutoMap映射

EF数据库设置验证

Nop基础数据初始化

DependencyResolver设置(服务和依赖解析方法)

 

附:IocWebApi

1、需通过Nuget安装Autofac.WebApi2包,后自动引用Autofac.Integration.WebApi程序集

2、注册Api依赖关系解析程序(GlobalConfiguration.Configuration.DependencyResolver

3、注册ApiControllersIHttpController)程序集。


另附:

几年前自己写了一个Autofac.Engine,应用比较简单。可以应用于 Web.和WebApi,而且源码不依赖 System.Net.Http等资源。已经在自己写的框架里应用了好几年。现在稳定运行10+个项目,提供大家参考,点评:

https://www.nuget.org/packages/Autofac.Engine/

http://git.oschina.net/Lycan80/Autofac.Engine

老早就想做一个开源的项目管理系统,正在筹划中吧(前端达不到自己理想的效果,在努力)。