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)来实现所有反转依赖的注册。

 

容器注册类:

  

 

posted on 2015-05-05 17:49  ronye  阅读(192)  评论(0编辑  收藏  举报