ASP.NET MVC插件技術
在實際開發中,經常會出現需要“臨時”調整業務邏輯的情型, 比如某電子商務網站在雙十一時價格特別優惠,雙十一后恢復原價。這種不同的商品價格計算方法,就適合于以插件實現。
自.NET 4.0起, Managed Extensibility Framework(簡稱MEF)成為了.NET Framework中的有機組成部分,它支持程序在運行時動態組合裝配各種部件。使用它,我們可以實現:不停止Web網站在線實時更新系統。
我寫了一個Demo,展示實現上述功能需求所涉及到的基本技術。
示例解決方案的啟動項目是一個ASP.NET MVC4項目,其運行網頁截圖如下:
圖1
圖2
這個項目的特點是:
(1)在更新系統時無需停機,一上傳,新組件立即生效
(2)通過給要使用的組件指定一個更高的版本號,系統將自動并裝載它
(3)所有操作均通過Web完成,無需使用FTP等其他工具跨網絡傳輸文件。
(4)組件文件名無關緊要,在本例中,如果上傳的新組件與老組件文件名相同,將不會保存新組件。
放在CSDN的資源包中除了源代碼(VS2013格式),還有一個17頁的PDF文檔,介紹更詳細的內容。
這個項目用到MEF,詳細介紹它不是一篇短短的博文所能做到的。但你要是不懂MEF,則無法掌握這里所談到的技術。請自行找尋相關資料學習MEF,我在《.NET 4.0面向對象編程漫談(應用篇)》中有一章專門講述MEF,可供參考。
注:此書己被互聯網“雷鋒”掃描共享,作為作者,我只能無奈地笑笑
。
畢竟知識共享才能創造價值,
只希望我寫的這些書能真的幫助大家學好用好技術,
那我付出的勞動也算值回票價了,
也算得到了一點心理安慰
……
最后,再談談MEF與NInject等IoC容器使用場景:
在ASP.NET MVC項目中,IoC容器主要用于向Controller動態地注入業務邏輯層(或服務層)的組件,另外,如果數據存取層中應用了Repository模式設計了若干Repository,則也可以將其動態注入到上層的組件中,向上層組件提供CRUD數據服務。
MEF的使用場景則不一樣,它比較適合在中間層使用,用于動態地更新或擴充系統業務邏輯功能,比較適合于業務流程的 微調 ,實現整個系統的插件化。
本文如有錯漏
,歡迎高手指正。謝謝。
====================================
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
