婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > NopCommerce架構分析(一)Autofac依賴注入類生成容器

NopCommerce架構分析(一)Autofac依賴注入類生成容器

熱門標簽:塔城代理外呼系統 遂寧市地圖標注app 代理接電話機器人如何取消 400電話辦理哪家性價比高 濮陽外呼電銷系統怎么樣 地圖標注的公司有哪些 地圖定位圖標標注 地圖標注專業團隊 天心智能電銷機器人

NopCommerce為了實現松耦合的框架設計目的,使用了IOC框架:Autofac。據有人測試,Autofac是性能很好的IOC工具。

1、在IOC中,組件首先需要在IOC中注冊,有通過配置文件注冊的。像Spring.net,也有通過特性注冊的,像StructureMap,也有通過代理來注冊的,像Autofac。但是IOC講究一個原則,就是接口和實現分離。所有IOC就是生命某個具體類實現了某個接口。然后在使用時,系統從IOC中獲取接口的實現類,并創建對象。

2、下面來看NopCommerce如何使用Autofac實現松耦合的框架設計的。其實它的插件機制也是通過Autofac來實現的。

IOC的封裝及靈活使用機制主要在Nop.Core.Infrastructure中封裝的。在Autofac中,對象又稱為組件。組件生命周期分為:單例、臨時和生命周期域內,如下定義:

namespace Nop.Core.Infrastructure.DependencyManagement 
{ 
 public enum ComponentLifeStyle 
 { 
  Singleton = 0, 
  Transient = 1, 
  LifetimeScope = 2 
 } 
} 

Autofac中有容器、并提供方法注冊接口及其類型,還提供方法查找到注冊的類型,以及自動創建對象。

3、類型查找器

為了支持插件功能,以及支持一些自動注冊的功能。系統提供了類型查找器。ITypeFinder以及實現類就是提供此功能。通過類型查找器可以查找本程序域中的類,也可以查找整個bin目錄下所有動態鏈接庫中類,并把它們注冊到類型反轉容器中。ITypeFinder以及實現類如下:

4、類型注冊

容器管理類:ContainerManager,管理通過Autofac生成的容器;

容器配置器:ContainerConfigurer:配置依賴反轉容器,建立整個框架的類型依賴注冊和類型查找類之間的關系。

在系統中有一個依賴類引擎上下文環境:EngineContext,可以根據配置文件生成引擎,此引擎是負責根據類型接口從容器中返回對象。

系統默認引擎NopEngine,若沒有配置有效的引擎,即用默認引擎,生成的引擎保存在單例容器中。

它們的關系如下:

系統在類MvcApplication的方法Application_Start中初始化引擎上下文。并通過調用EngineContext.Initialize(false);實現所有反轉依賴的注冊功能;

5、容器注冊類

系統注冊接口為:IDependencyRegistrar,系統通過ContainerConfigurer注冊此接口以及實現類的,并通過ITypeFinder類搜尋程序集里實現接口IDependencyRegistrar的類。代碼如下:

namespace Nop.Core.Infrastructure.DependencyManagement 
{ 
 /// summary> 
 /// Configures the inversion of control container with services used by Nop. 
 /// /summary> 
 public class ContainerConfigurer 
 { 
  public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, NopConfig configuration) 
  { 
   //other dependencies 
   containerManager.AddComponentInstanceNopConfig>(configuration, "nop.configuration"); 
   containerManager.AddComponentInstanceIEngine>(engine, "nop.engine"); 
   containerManager.AddComponentInstanceContainerConfigurer>(this, "nop.containerConfigurer"); 
 
   //type finder 
   containerManager.AddComponentITypeFinder, WebAppTypeFinder>("nop.typeFinder"); 
 
   //register dependencies provided by other assemblies 
   var typeFinder = containerManager.ResolveITypeFinder>(); 
   containerManager.UpdateContainer(x => 
   { 
    var drTypes = typeFinder.FindClassesOfTypeIDependencyRegistrar>(); 
    var drInstances = new ListIDependencyRegistrar>(); 
    foreach (var drType in drTypes) 
     drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType)); 
    //sort 
    drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList(); 
    foreach (var dependencyRegistrar in drInstances) 
     dependencyRegistrar.Register(x, typeFinder); 
   }); 
 
   //event broker 
   containerManager.AddComponentInstance(broker); 
  } 
 } 
}

而接口IDependencyRegistrar的內容如下:

namespace Nop.Core.Infrastructure.DependencyManagement 
{ 
 public interface IDependencyRegistrar 
 { 
  /// summary> 
  /// 此方法在通過ContainerBuilder注冊依賴關系。 
  /// /summary> 
  /// param name="builder">容器管理者類/param> 
  /// param name="typeFinder">類型查找者接口/param> 
  void Register(ContainerBuilder builder, ITypeFinder typeFinder); 
  /// summary> 
  /// 注冊排序序號 
  /// /summary> 
  int Order { get; } 
 } 
}

6、單例類容器

單例類系列保存系統中與程序相同生命周期的單例對象,或者叫做單例類容器。

其中包括實體類,集合類和字典類的單例容器。

SingletonT>,SingletonListT>,SingletonDictionaryTKey, TValue>。EngineContext就是通過SingletonT>類來管理引擎的。

7、MVC 服務提供類。

類型依賴獲取器:NopDependencyResolver,通過繼承mvc下的接口:IDependencyResolver,并在Application_Start方法中注冊,使之在系統啟動時調用。

//set dependency resolver 
var dependencyResolver = new NopDependencyResolver();
DependencyResolver.SetResolver(dependencyResolver);

8、其他

事件攔截類:EventBroker:過濾向系統發送的請求,防止由于臨時的錯誤或異常導致系統崩潰。

系統啟動時執行任務:IStartupTask,啟動時執行的任務主要是數據庫的初始化和加載。

您可能感興趣的文章:
  • NopCommerce架構分析之(八)多語言支持
  • NopCommerce架構分析之(七)主題Theme皮膚管理器
  • NopCommerce架構分析之(六)自定義RazorViewEngine和WebViewPage
  • NopCommerce架構分析之(五)Model綁定Action參數
  • NopCommerce架構分析之(四)基于路由實現靈活的插件機制
  • NopCommerce架構分析之(三)EntityFramework數據庫初試化及數據操作
  • 使用Nopcommerce為商城添加滿XX減XX優惠券功能
  • 基于nopCommerce的開發框架 附源碼

標簽:婁底 汕頭 重慶 本溪 麗江 宜春 吉林 河南

巨人網絡通訊聲明:本文標題《NopCommerce架構分析(一)Autofac依賴注入類生成容器》,本文關鍵詞  NopCommerce,架構,分析,一,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《NopCommerce架構分析(一)Autofac依賴注入類生成容器》相關的同類信息!
  • 本頁收集關于NopCommerce架構分析(一)Autofac依賴注入類生成容器的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久先锋影音av鲁色资源网| 国产精品一区在线| 国产精品狼人久久影院观看方式| 久久这里只精品最新地址| 欧美mv日韩mv国产网站app| 2020国产精品久久精品美国| 精品美女在线播放| 日本一区二区三区四区在线视频| 国产精品三级电影| 亚洲激情在线激情| 午夜免费久久看| 久久精品99久久久| 成人sese在线| 欧美三级中文字幕在线观看| 日韩欧美黄色影院| 国产日韩视频一区二区三区| 亚洲乱码国产乱码精品精的特点 | 国产三级精品在线| 亚洲色图欧洲色图| 日韩在线一区二区三区| 国产一区二区免费视频| 色综合天天天天做夜夜夜夜做| 欧美日本一区二区三区四区| 日韩欧美资源站| 国产精品国产三级国产a | 国产一区二三区好的| 不卡影院免费观看| 91精品国产一区二区| 国产精品拍天天在线| 亚洲国产欧美一区二区三区丁香婷| 久草精品在线观看| 一本大道综合伊人精品热热| 日韩欧美一区二区久久婷婷| 国产精品国产三级国产| 久久精品二区亚洲w码| 91毛片在线观看| 久久九九久久九九| 日韩国产欧美视频| 日本高清不卡一区| 久久精品一区蜜桃臀影院| 午夜成人免费电影| 暴力调教一区二区三区| 欧美成人一区二区三区| 一区二区三区91| 国产99久久久国产精品潘金网站| 在线成人免费观看| 一区二区三区四区不卡在线| 国产精品中文有码| 日韩欧美高清一区| 亚洲午夜视频在线| 99久久精品免费看国产| 久久精品亚洲精品国产欧美| 蜜臀久久99精品久久久久久9| 色中色一区二区| 亚洲欧洲日韩av| 99热国产精品| 国产精品久久久久久福利一牛影视 | 色中色一区二区| 国产欧美精品一区aⅴ影院 | 欧美丰满嫩嫩电影| 亚洲影院免费观看| 91蝌蚪porny成人天涯| 国产精品久久久久久久久免费桃花 | 99久久久无码国产精品| 久久久天堂av| 国产精品一区专区| 国产日本亚洲高清| 国产成人免费视频网站| 国产丝袜欧美中文另类| 国模无码大尺度一区二区三区| 欧美一区2区视频在线观看| 日韩精品国产欧美| 91精品久久久久久久91蜜桃| 日韩精品免费视频人成| 欧美日韩精品欧美日韩精品一 | 美女看a上一区| 欧美mv日韩mv亚洲| 国产一区二区三区| 国产精品久久久久久久久图文区 | 色菇凉天天综合网| 一区二区三区四区中文字幕| 欧美色区777第一页| 丝袜诱惑亚洲看片| 精品日韩欧美在线| 国产成人精品免费一区二区| 亚洲欧洲日韩女同| 欧美日韩不卡一区二区| 视频在线观看91| 精品国产成人在线影院| 国产精品12区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美三级韩国三级日本三斤| 欧美aa在线视频| 中文字幕精品—区二区四季| 91国偷自产一区二区三区观看| 琪琪一区二区三区| 国产精品午夜免费| 欧美精品三级日韩久久| 久久国产福利国产秒拍| 亚洲欧洲中文日韩久久av乱码| 欧美色网站导航| 国产一区二区美女| 亚洲一区二区三区四区在线 | 一区二区三区丝袜| 精品女同一区二区| 色成人在线视频| 国产精品白丝av| 午夜精品福利在线| 欧美激情一区三区| 538prom精品视频线放| 不卡一二三区首页| 男男视频亚洲欧美| 亚洲精品免费在线播放| 精品福利一二区| 在线观看日韩电影| 国产成人夜色高潮福利影视| 亚洲bt欧美bt精品777| 国产精品成人一区二区三区夜夜夜| 在线精品国精品国产尤物884a| 韩国一区二区三区| 日韩va亚洲va欧美va久久| 亚洲视频一二区| 欧美精品一区二区三区高清aⅴ| 欧美性高清videossexo| 成人久久18免费网站麻豆| 秋霞午夜鲁丝一区二区老狼| 亚洲一区视频在线| 自拍av一区二区三区| 欧美国产一区二区| www国产亚洲精品久久麻豆| 91精品国产综合久久久蜜臀粉嫩 | 欧美tickling网站挠脚心| 欧美日韩另类一区| 日本韩国一区二区三区| 91丝袜国产在线播放| 岛国精品在线观看| 国产99久久久久| 国产91综合一区在线观看| 国产在线国偷精品免费看| 精品写真视频在线观看| 蜜臂av日日欢夜夜爽一区| 日韩激情中文字幕| 奇米四色…亚洲| 老司机免费视频一区二区三区| 婷婷综合久久一区二区三区| 亚洲h在线观看| 视频一区视频二区在线观看| 首页国产丝袜综合| 蜜臀久久99精品久久久久宅男| 日韩影院精彩在线| 老司机午夜精品| 国产一区二区三区香蕉| 国产精品资源在线看| 懂色av一区二区在线播放| av男人天堂一区| 91一区二区在线| 在线亚洲精品福利网址导航| 91高清视频在线| 欧美日韩国产高清一区| 在线成人小视频| 久久久一区二区| 国产精品美女久久久久久久网站| 国产精品激情偷乱一区二区∴| 亚洲精品第一国产综合野| 午夜欧美电影在线观看| 久久国产尿小便嘘嘘| 国产精品一二一区| 成人h动漫精品| 在线播放/欧美激情| 欧美电影免费观看高清完整版在线| 久久午夜色播影院免费高清| 国产精品久久影院| 日本不卡一二三| 成人污污视频在线观看| 欧美三级电影在线观看| 久久久久亚洲蜜桃| 亚洲一区二区三区小说| 精品一区二区国语对白| proumb性欧美在线观看| 欧美高清视频一二三区 | 国产精品久久久久久妇女6080| 亚洲国产日韩综合久久精品| 美腿丝袜亚洲一区| 91网站最新地址| 精品日韩99亚洲| 亚洲亚洲精品在线观看| 国产精品538一区二区在线| 欧美日韩在线观看一区二区| 久久久精品国产99久久精品芒果| 亚洲精品中文字幕在线观看| 精品一区二区三区在线观看| 色婷婷国产精品| 久久综合久久久久88| 亚洲va天堂va国产va久| 9l国产精品久久久久麻豆| 日韩一区二区精品| 亚洲主播在线观看| jizzjizzjizz欧美| 久久这里只精品最新地址| 日韩av一区二|