基於ASP.NET MVC的熱插拔模塊式開發框架(OrchardNoCMS)介紹(一)

Orchard CMS是針對CMS開發的,對於很多開發需求來說,內容管理這塊兒可能並不需要,而需要它的模塊式開發模式。所以我這裏通過對OrchardCMS進行瘦身,去除 內容管理部分的內容,保留簡單的運行環境和基礎的模塊。需要做的工作:

去除Orchard Framework的內容管理部分,同時去除Orchard Framework依賴內容管理的相關內容。

去除Orchard Core部分的部分module,只保留Sharpe和Setting兩個模塊。

去除內容管理和博客管理的相關模塊,只保留支持模塊啓用和停用以及皮膚模塊。

這裏我只是對OrchardCMS的代碼進行了瘦身,所以相關的license請參考Orchard CMS的。

Github上的源代碼: https://github.com/nicholaspei/OrchardNoCMS

爲什麼需要對Orchard CMS瘦身?

在我們的項目中,需要一個類似於Java的OSGI框架。發現Orchard CMS是可以達到這個要求的,自己做的話,時間不夠,整個成員能力也夠嗆。所以選擇了Orchard CMS,但是這個CMS中,太多的數據庫表和模塊都是爲了CMS服務的,而我們的業務中基本上不需要或者用CMS配置字段很難達到業務要求。於是我就對OrchardCMS進行了瘦身,只保留熱插拔模塊式開發,同時去除了大部分表,只保留6個表。

爲了對得起開源,我就把自己整理好的代碼分享出來,希望大家能夠一起改進。https://github.com/nicholaspei/OrchardNoCMS


首先看一下最後完成的代碼目錄和之前的代碼目錄:

image

只保留了相當少的一部分,這就是Orchard可以運行的最小框架了。Orchard.CodeGeneration是爲了創建模塊的。而HelloWorld模塊是爲了測試模塊式開發創建的新模塊。

當把ContentManagement部分的代碼去掉時,真的是全屏報錯啊。很蛋疼。。經過不懈的努力,讓整個Orchard.Framework跑起來了。

接下來蛋疼的是Orchard.Core。這裏最先包含太多模塊,Container,Contents,Dashboard等,大部分都依賴於ContentManagement。最後通過分析代碼,發現其實必須的模塊式Settings和Shapes模塊。

Settings來獲取站點運行時需要的信息,當前語言,時區等。

Shapes是用來把上下文轉換成Html返回給瀏覽器的。最初沒有把Shapes改好,所以出現了Action執行了,但是View卻爲空,發現ViewEngine也找到了頁面,卻顯示不出內容來。

默認的Orchard是提供了模塊的管理頁面,皮膚的管理頁面等。我個人覺得其實只需要提供控制檯的模塊管理就可以啦。

支持的命令如下:

image

默認命令中沒有feature update,所以我增加了該命令,可以在模塊的數據結構發生改變時,通過執行feature update來執行Migration。

另外,產品或者項目中,有共享模塊的情況,所以接下來我會把Orchard.Package模塊也集成進去。並加入自己的一些想法,加入NuGet更好的支持,讓共享模塊更加靈活。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章