Orchard源碼分析(1):Orchard架構


 

 
本文主要參考官方文檔"How Orchard works"以及Orchardch上的翻譯。
 
源碼分析應該做到庖丁解牛,而不是以管窺豹或瞎子摸象。所以先對Orchard架構有個整體的了解,以及對一些基本概念有所認識。
 
創建一個基於Web的CMS(內容管理系統)不同於創建一個普通的Web應用程序:它更像是建立一個應用程序容器。 這樣一個系統,必須擁有優良的開放性、可擴展性。但是作為一個可擴展系統,它可能會面臨應用程序"可用性"的挑戰:在系統中的核心模塊與未知的未來模塊的組合,包括用戶界面級別的整合。組合相對獨立的模塊中的小組件,從而形成一個連貫的整體,是Orchard是關鍵。
我們可以做個類比,如果Orchard對應操作系統,則核心模塊對應系統軟件,自定義模塊對應第三方應用程序,菜單(前台或后台)對應開始菜單。Orchard啟動的時候需要加載一些模塊,對應操作系統開機啟動的系統服務。
 
 本文解釋了Orchard選擇怎樣的構架的,以及怎樣獲得靈活性和良好的用戶體驗。
 
一、Orchard架構
 
最上三層就是Orchard。可見Orchard運行於.Net/ASP.NET之上,使用了幾個包括ASP.NET MVC在內的開源框架或類庫。位於Orchard最底層的是Orchard框架(Orchard.Framework程序集),其上是核心模塊(Core Modules)以及來自官方或非官方的其他模塊(Modules)。實際上我們可以在任何一層上進行開發,通常我們是在Modules層開發,創建新的Module/Theme或修改已經存在的Module/Theme。
 
二、Orchard基礎
Orchard CMS基於現有的框架和庫構建,包括ASP.NET MVC,NHibernate,Autofac,Castle等。
 
三、Orchard框架(Orchard.Framework程序集)
Orchard.Framework程序集位於Orchard最底層,它包含應用程序引擎以及不適合分離到模塊的功能。這些都是最基礎的東西,甚至連最基本的模塊將不得不依賴它。你可以把它看作是Orchard的基礎類庫。
 
四、Orchard核心模塊(Orchard.Core項目及Orchard.Core程序集)
Orchard.Core項目中包含了一組Orhcard運行所必須的模塊。其它模塊可以安全地依賴到這些模塊上,因為這些模塊總是可用的。比如 feeds,navigation,routable模塊。當然,就像上面所說,我們可以基於Orchard的任何一層進行開發,如果有必要,我們完全可以自己來設計"Core"。
 
五、模塊(Moduls)
Orchard默認發行版包含了一些像blogging、pages的內置模塊,並且也能很方便的創建第三方模塊。
模塊就是用於擴展Orchard的包含module.txt文件的ASP.NET MVC Area。 
模塊通常包含事件處理程序(event handlers),內容類型(content types)和它們的默認渲染模板以及一些管理界面(Admin UI)。
對模塊".csproj"文件或".csproj"引用文件的修改都能使模塊自動被動態編譯。也就是說可以不將模塊編譯成靜態程序集甚至可以不使用Vistual Studio來創建或編輯模塊。
 
六、主題(Themes)
主題可以讓Orchard用戶自定義站點顯示界面,量身定制他們想要的站點風格。主題還可以有針對性的對Orchard模塊所提供的任何模板進行樣式重寫、甚至是改變圖像、布局等。
主題位於Orchard網站根目錄下的Themes文件夾中,包含theme.txt文件。
 
七、租戶/子站點(Tenants)
Orchard支持子站點,即一套程序、一個應用程序域部署多個不同域名或者相同域名不同Url前綴的站點。
 
參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM