Orchard架構介紹
對於我們來說,更重要的是學習Orchard是如何架構的,如果我們自己編寫一個類似應用該如何做。今天有空再次看看 Orchard的其它內容,本篇介紹一下Orchard的一些架構方面的內容。Orchard內容較多,現在還只是瞭解一些皮毛,還有待進一步學習,放上 來權當隨筆記錄。
Architecture
Orchard foundations
Orchard構建在已有的一些框架和類庫之上,下面是一些主要內容:
ASP.NET MVC:這是微軟開源的基於MVC的Web開發框架
NHibernate:NHibernate 是一個ORM工具,從Hibernate演化而來
Autofac: 一個IoC container。Orchard大量使用依賴注入
Castle Dynamic Proxy: Castle 是.Net中很早就出現的一個開源專案,Castle Dynamic Proxy是一個生產動態代理的東東
Orchard Framework
Orchard framework處於Orchard的最底層,你可以把它看成是Orchard的基礎類庫。
Orchard的啟動
當Orchard web應用啟動後,生成一個應用域級別的單例的Orchard Host(DefaultOrchardHost)
View Code
public class MvcApplication : HttpApplication {protected void Application_Start() {_host = OrchardStarter.CreateHost(MvcSingletons);_host.Initialize();}public static class OrchardStarter {public static IOrchardHost CreateHost(Action registrations) {var container = CreateHostContainer(registrations);return container.Resolve();}public static IContainer CreateHostContainer(Action registrations) {……builder.RegisterType().As().As().SingleInstance();}}
DefaultOrchardHost負責生成Shell,其中引入了一些類:ShellContextFactory、ExtensionManager、ShellSettingsManager、CompositionStrategy、ShellBlueprint,現在就不細說了,因為我還沒有怎麼看
V public class DefaultOrchardHost : IOrchardHost, IShellSettingsManagerEventHandler, IShellDescriptorManagerEventHandler {void IOrchardHost.Initialize() {BuildCurrent();}IEnumerable BuildCurrent() {if (_current == null) {lock (_syncLock) {if (_current == null) {SetupExtensions();MonitorExtensions();_current = CreateAndActivate().ToArray();}}}return _current;}IEnumerable CreateAndActivate() {var allSettings = _shellSettingsManager.LoadSettings();if (allSettings.Any()) {return allSettings.Select(settings => {var context = CreateShellContext(settings);ActivateShell(context);return context;});}……}ShellContext CreateShellContext(ShellSettings settings) {if (settings.State.CurrentState == TenantState.State.Uninitialized) {Logger.Debug("Creating shell context for tenant {0} setup", settings.Name);return _shellContextFactory.CreateSetupContext(settings);}Logger.Debug("Creating shell context for tenant {0}", settings.Name);return _shellContextFactory.CreateShellContext(settings);}}
Dependency injection
在Orchard中生成依賴項的標準方法是實現IDependency 或者其繼承介面。
對於依賴有三種可能的範圍,具體講解等待後期分析:
o Request:每次HTTP請求都建立一個新的例項,請求處理有銷燬。這種物件實現IDependency
o Object:實現ITransientDependency,例項不共享
o Shell: 實現ISingletonDependency,單例
ASP.NET MVC
Orchard是構建在ASP.NET MVC 之上的一個框架,但是為了增加主題、多租戶等額外功能而也挺入了額外的一些層和概念。例如,當需要一個特定檢視時引入LayoutAwareViewEngine。嚴格的說,這不是一個新的檢視引擎,因為它並不關心實際繪製,而只是包含一些查詢當前主題下正確檢視的一些邏輯功能,然後委託給實際的檢視引擎去展現。
Types, Parts and Fields
Orchard能夠處理任意內容型別(content types),內容型別又是由內容Parts組成,例如一個blog、video都可能有地址、回覆、tag等,為了重用可以把回覆作為一個part存在於一個module中,這樣只需要生成一次就行了。
Parts本身又有自己的屬性和內容欄位。內容欄位(Fields)也是一個重用的概念,它比parts更細粒度,它可以使用在多個part中。
Content Manager
所有的內容透過ContentManager 物件進行訪問,ContentManager有查詢內容儲存、版本內容和管理釋出狀態等功能
Transactions
Orchard自動為每次HTTP請求生成一個事務
Event bus
Commands
很多在Orchard中可以執行的動作都可以透過命令列形式執行,這些Command都需要實現,命令方法使用CommandName 屬性標識
Search and indexing
預設使用Lucene 進行索引和查詢
Caching
基於ASP.NET cache之上的快取,Orchard快取API主要好處是對每個租戶的透明性
File systems
Orchard的檔案系統是抽象概念的,可以是直接的物理檔案,也可以是部署在雲端的blob storage
Orchard core
Orchard.Core 程式集包含Orchard必須使用到的一些模組,例如feeds、navigation和routable
Modules
Orchard預設釋出一些內建的模組,例如blog等。一個模組只是一個包含manifest.txt 檔案的一個ASP.NET MVC area 檔案。
Themes
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69979119/viewspace-2705379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OpenTelemetry架構介紹架構
- TiDB整體架構介紹TiDB架構
- KAFKA介紹(分散式架構)Kafka分散式架構
- Pixhawk系統架構介紹架構
- LNMP架構介紹與部署LNMP架構
- RAG系統架構介紹架構
- nginx介紹(二) 架構篇Nginx架構
- 理解索引:HBase介紹和架構索引架構
- 介紹基於事件的架構事件架構
- Nginx 架構——【核心流程+模組介紹】Nginx架構
- UML 架構圖入門介紹 starUML架構
- Flume架構以及應用介紹[轉]架構
- 微雲視訊轉碼架構介紹架構
- 微服務架構的特徵簡要介紹微服務架構特徵
- NUMA架構介紹及優缺點分析架構
- 程式碼構建軟體架構圖的工具介紹架構
- Cable--新虛擬網路架構介紹架構
- 介紹一下Spring Cloud微服務架構SpringCloud微服務架構
- Lustre架構介紹的閱讀筆記-HSM架構筆記
- 接入層Nginx架構及模組介紹分享Nginx架構
- 高併發架構的TCP知識介紹架構TCP
- 高併發架構的CDN知識介紹架構
- 崑崙分散式資料庫架構介紹分散式資料庫架構
- Asp.Net 構架(HttpModule 介紹) - Part.3ASP.NETHTTP
- 簡單介紹架構設計的原則!架構
- Android平臺架構的介紹和原始碼分析Android架構原始碼
- Quartz核心原理之架構及基本元素介紹quartz架構
- iOS混合開發庫(GICXMLLayout)二、功能、架構介紹iOSXML架構
- 東郊到家小程式開發的功能架構介紹架構
- GoldenGate 12.3 MA架構介紹系列(5) - 靜默安裝Go架構
- DM 原始碼閱讀系列文章(二)整體架構介紹原始碼架構
- 區塊鏈2.0架構:以太坊區塊鏈的介紹區塊鏈架構
- Lustre架構介紹的閱讀筆記-基礎知識架構筆記
- Lustre架構介紹的閱讀筆記-NFS相容性架構筆記NFS
- 通俗易懂的生產環境Web應用架構介紹Web應用架構
- 【ARM CoreLink 系列 1 -- SoC 架構 匯流排 互聯(interconnect) 介紹】架構
- 軟體架構簡介架構
- 好程式設計師Java學習路線分享Dubbo架構介紹程式設計師Java架構