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

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