亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

AbpApplication級別的生命周期

2019-11-14 14:26:26
字體:
來源:轉載
供稿:網友

本篇級別: 中高級篇,假設各位知道Abp是什么, Abp里面的基本的概念及用法(想了解基本概念的可在這里學習: http://www.49028c.com/mienreal/p/4358806.html)

AbpWebapplication

AbpWebApplication是需要我們的Global.cs里面的HttpApplication繼承他, 初始化分兩個階段

構造方法AbpWebApplication()

在這個方法里面,做了非常重要但是很簡單的事, 通過 AbpBootstrapper類庫,間接實例化了IocManager.Instance, 并且注冊了IocManager,IIlocManager,IIocRegistrar, IIocResolver做了注冊,

也就是這一步完成之后,IocManager.Instance.Reslove只能解析上面的四個類型, 其他類型到目前為止,還一個都沒有注冊.

 

Application_Start(object sender, EventArgs e)方法

a. 注冊了IAssemblyFinder, 關聯到了WebAssemblyFinder類庫, 猜主要是用來尋找相關類庫, 看其代碼主要是獲取當前bin目錄下的所有dll組件,并跟當前已加載的 Assembly做比較,最后返回當前程序已加載的dll, 忽略未加載的.

b. AbpBootstrapper初始化,

b.1 IocManager.IocContainer.Install(new AbpCoreInstaller());
Component.For<IUnitOfWorkDefaultOptions, UnitOfWorkDefaultOptions>().ImplementedBy<UnitOfWorkDefaultOptions>().LifestyleSingleton(),                Component.For<INavigationConfiguration, NavigationConfiguration>().ImplementedBy<NavigationConfiguration>().LifestyleSingleton(),                Component.For<ILocalizationConfiguration, LocalizationConfiguration>().ImplementedBy<LocalizationConfiguration>().LifestyleSingleton(),                Component.For<IAuthorizationConfiguration, AuthorizationConfiguration>().ImplementedBy<AuthorizationConfiguration>().LifestyleSingleton(),                Component.For<IFeatureConfiguration, FeatureConfiguration>().ImplementedBy<FeatureConfiguration>().LifestyleSingleton(),                Component.For<ISettingsConfiguration, SettingsConfiguration>().ImplementedBy<SettingsConfiguration>().LifestyleSingleton(),                Component.For<IModuleConfigurations, ModuleConfigurations>().ImplementedBy<ModuleConfigurations>().LifestyleSingleton(),                Component.For<IEventBusConfiguration, EventBusConfiguration>().ImplementedBy<EventBusConfiguration>().LifestyleSingleton(),                Component.For<IMultiTenancyConfig, MultiTenancyConfig>().ImplementedBy<MultiTenancyConfig>().LifestyleSingleton(),                Component.For<ICachingConfiguration, CachingConfiguration>().ImplementedBy<CachingConfiguration>().LifestyleSingleton(),                Component.For<IAuditingConfiguration, AuditingConfiguration>().ImplementedBy<AuditingConfiguration>().LifestyleSingleton(),                Component.For<IAbpStartupConfiguration, AbpStartupConfiguration>().ImplementedBy<AbpStartupConfiguration>().LifestyleSingleton(),                Component.For<ITypeFinder>().ImplementedBy<TypeFinder>().LifestyleSingleton(),                Component.For<IModuleFinder>().ImplementedBy<DefaultModuleFinder>().LifestyleTransient(),                Component.For<IAbpModuleManager>().ImplementedBy<AbpModuleManager>().LifestyleSingleton(),                Component.For<ILocalizationManager, LocalizationManager>().ImplementedBy<LocalizationManager>().LifestyleSingleton()

上面注冊的大部分都是配置類,最后四個有TypeFinder,ModuleFinder,ModuleManager, LocalizationManager.

Navigation: 導航相關,不曉得干啥

LocalizationConfiguration, LocalizationManager, 多語言相關,這個基本根據實際情況看。

Authorization: 授權相關, 跟Authentication有區別,前者授權,后者負責的呢登錄認證

Feature: 不曉得干啥

Settings: 看起來是設置相關的

ModuleConfiguration:  Abp模塊配置,這個看起來應該很重要,畢竟是搞Module么,這個可是Abp的核心概念

EventBus: 事件總線,看程序規模跟復雜度了,不過是很好玩的概念

MultiTenancy: 多租戶概念,也看業務邏輯跟系統應用場景了.

Caching: 緩存,必須得搞清楚的概念

Auditing: 審計,這個設計的還是不錯,有很好的參考價值, 但是也有一些弊端,需要綜合考慮,感覺利大于弊。

AbpStartup: 管Abp啟動階段的事,上述列的里面,這個是最先用到的,也是最先不用管的:)

TypeFinder: 類型查找的,

ModuleFinder, ModuleManager: 跟上面的ModuleConfiguration一樣,都是Module管理相關的

b.2 IocManager.Resolve<AbpStartupConfiguration>().Initialize();
Localization = IocManager.Resolve<ILocalizationConfiguration>();Modules = IocManager.Resolve<IModuleConfigurations>();Features = IocManager.Resolve<IFeatureConfiguration>();Navigation = IocManager.Resolve<INavigationConfiguration>();Authorization = IocManager.Resolve<IAuthorizationConfiguration>();Settings = IocManager.Resolve<ISettingsConfiguration>();UnitOfWork = IocManager.Resolve<IUnitOfWorkDefaultOptions>();EventBus = IocManager.Resolve<IEventBusConfiguration>();MultiTenancy = IocManager.Resolve<IMultiTenancyConfig>();Auditing = IocManager.Resolve<IAuditingConfiguration>();Caching = IocManager.Resolve<ICachingConfiguration>();

一共11項Configuration, 只是在b.2的介紹里面增加了UnitOfWork的Configuration

UnitOfWork: 工作單元, 這個概念現在很普遍,大家都應該了解.

b.3 _moduleManager.InitializeModules();
public virtual void InitializeModules(){    LoadAll();    var sortedModules = _modules.GetSortedModuleListByDependency();    sortedModules.ForEach(module => module.Instance.PReInitialize());    sortedModules.ForEach(module => module.Instance.Initialize());    sortedModules.ForEach(module => module.Instance.PostInitialize());}

1. 加載所有Module

2. 按照DepondsOnAttribute對各個Module排序

3. 一次按照PreInit, Init,PostInit的順序一次執行.

 

Application_End(object sender, EventArgs e)方法

Module Shutdown

var sortedModules = _modules.GetSortedModuleListByDependency();sortedModules.Reverse();sortedModules.ForEach(sm => sm.Instance.Shutdown());

這部分很簡單,就是通過各個Module的Shutdown釋放各個Module的資源


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲天堂| 日韩av片永久免费网站| 亚洲性视频网站| 久久久欧美精品| 国产视频精品xxxx| 中文字幕日韩有码| 欧美精品成人91久久久久久久| 韩日欧美一区二区| 国产中文字幕91| 欧美天堂在线观看| 国产性猛交xxxx免费看久久| 国产精品免费久久久久久| 亚洲成人av资源网| 成人a在线观看| 亚洲第一福利网| 色婷婷**av毛片一区| 欧美一区二区三区图| 欧美日韩久久久久| 亚洲a在线播放| 久久91精品国产91久久跳| 中日韩美女免费视频网站在线观看| 亚洲精品国产精品国自产观看浪潮| 神马国产精品影院av| 深夜福利日韩在线看| 欧美日产国产成人免费图片| 性欧美暴力猛交69hd| 在线激情影院一区| 国产欧美精品日韩| 国产男女猛烈无遮挡91| 国产精品一区电影| 国产精品一区久久| 亚洲自拍av在线| 国产成+人+综合+亚洲欧美丁香花| 国产亚洲精品91在线| 精品亚洲一区二区三区在线观看| 狠狠色狠狠色综合日日小说| 亚洲精品免费一区二区三区| 97在线视频观看| 欧美怡春院一区二区三区| 亚洲精品视频网上网址在线观看| 亚洲天堂成人在线视频| 久久久久久久久国产精品| 91亚洲国产成人久久精品网站| 精品激情国产视频| 久久久精品在线| 中文字幕亚洲一区二区三区| 成人黄色免费看| 欧美午夜女人视频在线| 亚洲色无码播放| 国产91精品在线播放| 午夜精品在线视频| 91高清视频在线免费观看| 成人情趣片在线观看免费| 亚洲精品综合精品自拍| 亚洲视频电影图片偷拍一区| 最近中文字幕日韩精品| 亚洲全黄一级网站| 欧美日本在线视频中文字字幕| 亚洲免费av片| 精品久久久久人成| 亚洲黄色av网站| 国产成人aa精品一区在线播放| 欧美一级电影免费在线观看| 欧美最近摘花xxxx摘花| 日韩视频在线观看免费| 欧美激情精品久久久久久大尺度| 亚洲第一中文字幕在线观看| 九色精品美女在线| 成人av在线天堂| 久久精品成人欧美大片古装| 精品国产欧美成人夜夜嗨| 亚洲性生活视频在线观看| 亚洲精品美女在线| 中文亚洲视频在线| 亚洲成人av在线| 欧美精品一二区| 精品亚洲精品福利线在观看| 久久91精品国产91久久跳| 国产精品视频永久免费播放| 国产999精品久久久| 亚洲男人天堂2024| 国产一区二区香蕉| 在线亚洲欧美视频| 欧美日韩在线视频一区| 国产成人亚洲精品| 亚洲久久久久久久久久| 精品国产乱码久久久久酒店| 亚洲成人久久网| 国产精品免费视频久久久| 91在线直播亚洲| 中文日韩在线视频| 久久亚洲成人精品| 青青草原成人在线视频| 久久久久成人精品| 国产日韩欧美中文在线播放| 一区二区三区国产视频| 97视频免费看| 欧美寡妇偷汉性猛交| 亚洲国产精品成人一区二区| 欧美日韩加勒比精品一区| 国产美女久久精品香蕉69| 亚洲最新av在线网站| 国产成人一区二区三区电影| 色偷偷偷亚洲综合网另类| 亚洲国产日韩欧美在线99| 欧美色另类天堂2015| 国产精品国产三级国产专播精品人| 中文字幕最新精品| 亚洲福利精品在线| 久久久久久尹人网香蕉| 一本一道久久a久久精品逆3p| 亚洲高清色综合| 亚洲欧美日韩国产精品| 最近免费中文字幕视频2019| 在线观看成人黄色| 国产91色在线| 欧洲亚洲在线视频| 色哟哟亚洲精品一区二区| xxx欧美精品| 亚洲一区二区免费| 亚洲淫片在线视频| 成人疯狂猛交xxx| 懂色aⅴ精品一区二区三区蜜月| 久久久久久久国产精品| 97视频在线观看亚洲| 成人精品在线观看| 日韩视频免费中文字幕| 91亚洲精品久久久久久久久久久久| 国产日韩欧美在线看| 精品久久久久久电影| 久久精品人人爽| 国产精品白嫩初高中害羞小美女| 亚洲第一页自拍| 亚洲精品小视频| 久久久人成影片一区二区三区| 亚洲成人精品视频在线观看| 欧美二区乱c黑人| 国产成人97精品免费看片| 日韩在线视频播放| 这里只有精品在线观看| 国产精品青青在线观看爽香蕉| 欧美一级在线亚洲天堂| 国产精品网站大全| 久久躁狠狠躁夜夜爽| 国产99久久精品一区二区 夜夜躁日日躁| 久久99精品久久久久久琪琪| 精品久久久久久国产91| 亚洲国产精品一区二区三区| 亚洲综合大片69999| 综合国产在线观看| 欧美激情精品久久久久久变态| 欧美性猛交xxxxx免费看| 清纯唯美亚洲综合| 日韩av在线高清| 中文字幕亚洲在线| 色yeye香蕉凹凸一区二区av| 欧美第一黄色网| 一区二区三区四区精品| 77777亚洲午夜久久多人| 欧美刺激性大交免费视频| 欧美肥老妇视频| 亚洲第一网站免费视频| 国产精品视频中文字幕91| 中文字幕少妇一区二区三区|