零基礎ASP.NET Core MVC插件式開發

零基礎ASP.NET Core MVC插件式開發

一個項目隨着業務模塊的不斷增長,系統會愈來愈龐大。若是參與開發的人員越多,管理起來難度也很大。面對這樣的狀況,首先想到的是模塊化插件式開發,根據業務模塊,拆分紅各個獨立的插件,而後分配不一樣開發人員開發,互相之間沒有依賴徹底獨立。html

這裏介紹一種使用ASP.NET Core MVC 技術開發Web後臺系統,使用插件式的方案。這個方案在項目中已經使用效果以爲還不錯,這裏把主要思想提取出來,作個簡單的demo分享下web

 

1、建立主項目數據庫

這裏使用的開發工具是vs2019ASP.NET Core 2.1瀏覽器

建立一個ASP.NET Core MVC項目,項目結構以下圖1,徹底是腳手架自動建立好的標準項目框架

 

1模塊化

 

這裏是一個簡單的默認程序,在實際的項目中,特別是傳統信息管理web後臺系統,登陸,以及登陸以後的主框架,還有一些公共的模塊,能夠在主項目裏面作,不會隨業務而變更的。而後各個具體業務模塊分紅獨立的插件開發。工具

這個主項目創建好以後,運行正常,如圖2開發工具

 

2spa

 

下面開始作代碼部分添加,爲了方便閱讀代碼以截圖提供,最後會附加完整的demo程序提供下載。插件

1、在Startup.cs類裏面增長以下代碼圖3,具體做用看註釋,這裏就再也不贅述。

 

3

 

這裏是把插件程序註冊到主程序裏面,核心就是使用了ApplicationParts

 

二、Startup.cs類裏面還有一個地方要修改,增長一個Areas區域的路由映射,圖4

 

4

增長這個的具體緣由等會看插件項目的說明

 

三、還有爲了演示可否訪問到插件,這裏增長兩個插件的超連接,具體到業務中,菜單確定是數據庫動態維護的。

修改Views/Shared/_Layout.cshtml代碼以下 圖5

 

5

 

 

2、建立插件項目

插件項目也是一個標準的ASP.NET Core MVC 項目。我這裏爲了演示,建立了兩個獨立的插件項目。以下圖6,圖7

 

6

 

 

7

 

插件項目說明,插件是根據業務模塊劃分的,還有爲了防止註冊到主項目以後路由命名的衝突,插件項目就使用MVC自帶的區塊Areas功能來存放。這裏就是前面主項目要增長Areas路由映射的緣由。而後刪除腳手架默認建立的外層控制器和視圖文件,由於主項目也有這樣同名的控制器路由,這些不刪除,到時候註冊到主項目,會出現重複路由錯誤。

插件項目增長各自的Areas,新建控制器如圖8,新建對應試圖如圖9。這裏就添加幾個模擬數據。

 

8

 

 

9

 

到這裏,把插件項目發佈出來的xxx.dllxxx.Views.dll,放到主項目裏面去就能夠運行了。

 

可是做爲插件開發者,每次須要把文件發佈放到主項目去才能運行,對開發調試都是不方便,由於插件開發者可能就沒有主項目的權限,主項目是統一管理的。分配一個插件還每次都附帶一個主項目也比較繁瑣。

想到這裏就能夠反過來把主程序dll註冊到插件項目裏面,這樣就能夠在插件項目裏面vs直接運行調試起來。

 

以插件1爲例,Startup.cs類裏面增長以下代碼,圖10

 

10

 

這樣把主程序的dll提供,好比這個演示demo主程序就須要這兩個(Agile.WebPlatform.Main.dllAgile.WebPlatform.Main.Views.dll)把他們放到插件項目的運行目錄。vs直接運行插件項目,就能夠正常啓動了。各類開發調試徹底不受其餘影響。

插件裏面直接啓動調試圖11

 

11

 

運行效果以下 12

 

12

 

 

點擊插件1 顯示以下圖13

 

13

注意!這裏雖然能夠看到插件2,但點擊插件2是會提示找不到路由的,只能調試各自插件的內容。

 

開發調試其餘插件相似,提供主項目的dll,各個插件項目徹底能夠獨立開發本身的業務模塊,而後運行調試。

 

3、發佈

最後,只要把插件項目的發佈文件放到主項目的發佈文件裏面,使用主項目來運行,整個系統全部的插件都能正常使用了。這樣就作到了開發調試獨立,最後交付插件本身的dll,放到主項目的發佈裏面就能夠了。

以下圖14,是最後發佈的程序

 

14

 

使用命令運行主項目,或者宿主到iis也同樣,如圖15,命令行運行

 

15

 

 

 

瀏覽器打開訪問,如圖16

 

16

 

 

點擊插件1,顯示如圖17

 

17

 

點擊插件2,顯示如圖18

 

 

18

 

 

 

但願你看了以後有點收穫,代碼程序下面附件提供

demo程序

相關文章
相關標籤/搜索