NopCommerce
为了实现松耦合的框架设计
使用IOC框架:Autofac ---性能是好的
IoC中组件首先需要在IoC中注册:
Spring.net 通过配置文件注册
StructureMap通过特性来注册
Autofac通过代理来注册
IoC的一个原则:接口和实现分离,所以IoC就是声明某个具体类实现了某个接口。然后使用时系统从IoC中获取接口的实现类,并创建对象。
在Autofac中,对象又称为组件。组件的生命周期分为:单例,临时和生命周期域内。
namespace Nop.Core.Infrastructure.DependencyManagement
{
public enum ComponentLifeStyle
{
Singleton = 0,
Transient = 1,
LifetimeScope = 2
}
}
Autofac中有容器
1.并提供方法注册接口及其类型。
2.还提供方法查找到注册的类型。
3.自动创建对象。
类型查找器:
1.为了支持插件功能
2.为了支持自动注册功能。
ITypeFinder以及实现类就是提供此功能。
可以查找:
1.本程序域中的类
2.整个bin目录下所有动态链接库中的类。
并把这些类注册到IoC容器中(类型反转容器)
类型注册
容器管理类: ContainerManager 管理 通过Autofac生成的容器
容器配置类: ContainerConfigurer 建立 类型依赖注册 <-----> 类型查找类 之间的关系
依赖类引擎: EngineContext 可以根据配置文件生成引擎,此引擎负责根据类型接口从容器中返回对象。
系统默认引擎: NopEngine 若没有配置有效的引擎,即用默认引擎,生成的引擎保存在单例容器中。
初始化:系统在类MvcApplication的方法Application_Start中初始化引擎上下文。并通过调用EngineeContext.Initialize(false)来实现所有反转依赖的注册。
容器注册类: