nopCommerce 依赖类生成容器

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

容器注册类:

  

时间: 2024-10-17 10:41:48

nopCommerce 依赖类生成容器的相关文章

NopCommerce架构分析之一----依赖类生成容器

NopCommerce为了实现松耦合的框架设计目的,使用了IOC框架:Autofac.据有人测试,Autofac是性能好的IOC工具. 1.在IOC中,组件首先需要在IOC中注册,有通过配置文件注册的,像Spring.net,也有通过特性注册的,像StructureMap,也有通过代理来注册的,像Autofac.但是IOC讲究一个原则,就是接口和实现分离.所有IOC就是生命某个具体类实现了某个接口.然后在使用时,系统从IOC中获取接口的实现类,并创建对象. 2.下面来看NopCommerce如何

Hibernate笔记②--hibernate类生成表、id生成策略、级联设置、继承映射

一.多表的一个关联关系 老师和学生是一对多的关系 student:tid属性 外键约束 对应teacher表中的id属性 teacher:id 在myeclipse的db窗口中选中两个表来生成类. ? 写一个CRUD //老师和学生实体保存 ????public void save(){ ????????Teacher t=new Teacher(); ????????t.setName("彭老师"); ???????? ????????Student s1=new Student()

利用java日期类生成数据仓库维度表

利用java日期类生成数据仓库维度表 Date类: 最基础的日期时间类,返回一个相对日期的毫秒数.精确到毫秒,但不支持日期的国际化和分时区显示.Date 类从Java 开发包(JDK)1.0 就开始进化,当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,这种改进旨在更好的处理日期数据的国际化格式. Calender类: 相对于Date更加强大的时间类,是抽象类,提供了常规的日期修改功能和国际化

详解使用DockerHub官方的mysql镜像生成容器

收藏 yope 发表于 10个月前 阅读 1506 收藏 32 点赞 1 评论 0 腾讯云·云上实验室:开发者零门槛,免费使用真机在线实验!>>>   摘要: 详解使用DockerHub官方的mysql镜像生成容器 一.下载官方的mysql镜像: 二.生成容器 : 三.进入到新生成的容器: 四.修改容器中mysql的配置文件 . 写在前面:看到网上关于利用DockerHub官方的mysql镜像生成容器此类的文档比较少,故结合自身实践分享给大家,还望多多指教. 我的需求:利用docker

批量根据实体类生成相关的类

<# // 从实体类生成相关的实体类 #> <#@ template hostspecific="true" language="C#" #> <#@ assembly name="EnvDTE" #> <#@ assembly name="System.Core" #> <#@ assembly name="System.Data" #> <

C#实体类生成XML与XML Schema文档

一.实体类生成XML 1 private void CreateXML() 2 { 3 Type[] objType = DBEntityRegst(); 4 foreach (var item in objType) 5 { 6 if (item == null) 7 { 8 break; 9 } 10 11 XmlDocument doc = new XmlDocument(); 12 13 //<?xml version="1.0"?> 14 XmlDeclarati

.Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: for (int i = 0; i < 10; i++) { Random random1 = new Random(); Console.WriteLine(random1.Next()); } 测试生成随时基本都是相同的结果: 很显然上面的结果是不靠谱的,为什么会这样呢,因为微软的Random类,发现在C#中生成随机数使用的算法是线性同余法

C# 使用Guid类生成不重复的随机数

什么是Guid GUID(全局唯一标识符) 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0.GUID一词有时也专指微软对UUID标准的实现. 在理想情况下,任何计算机和计算机集群

php用类生成二维码

百度云盘里面已经有了,引用生成二维码类,制作和验证码的制作一球样 php用类生成二维码