架構實作與使用
除了架構本身的程式開發,開發人員在開發階段的配套措施也是相當重要。
一個好的系統開發方式,也要相應的提供開發人員容易使用的工具或方法,這樣才可以減少在處理非客戶需求的作業時間,自然就可以讓開發人員專注於需求開發本身。
Visual Studio專案範本
在實作與測試的開發過程中,建立了使用Visual Studio的ASP.NET Core (RazorPages)標準範本的專案來測試套件的產生,視需要修改專案定義檔(.csproj)的內容,包含了加入建置成套件時所需的預設參數,以及加入預設的參考。
最後將上述的專案直接做成Visual Studio專案範本,這樣一來開發新的套件時,專案新增時即是一個可立即繼續開發的狀態,不需要進行任何的調整。
MSBuild
由專案產生NuGet套件的作法,.NET Core專案本身就已經提供了這樣的功能,但是此架構需要將額外的檔案加入其中,因此需要針對這個程序進行調整。額外的檔案可能來自專案建置輸出本身或是參考的組件,也因此分為了以下兩個部分:
- 專案建置輸出 - 在專案的定義檔中加入自訂的專案屬性紀錄需要加入那些檔案
- 參考的組件 - 由建置過程中的MSBuild的"ReferencesCopiedInThisBuild"變數取得參考檔案
建置專案本身就是透過MSBuild來處理,而且在NuGet套件中就有支援加入MSBuild相關作業,參考到套件的專案自然就會加入額外的建置步驟。
因此開發一個名為CITUO.AspNetCore.Platform.VS.Sdk的NuGet套件用來處理建置過程中的動作:
- 產生定義檔(app.manifest) - 建置過程中依據專案定義檔資訊產生佈署定義檔
- 複製參考組件 - 由"ReferencesCopiedInThisBuild"變數取得參考檔案,並視需要複製到套件中
套件建置
專案建置後,會在bin目錄中產生NuGet套件檔案,修改附檔名為zip就可以看到專案輸出內容是放置於lib目錄中。
platform目錄就是透過修改NuGet套件生成步驟產生的,目錄中除了app.manifest檔案,references目錄中就是套件所需的其他參考組件。
如何使用(Hosting)此架構
首先在需要使用這個架構的專案中,加入CITUO.AspNetCore.Platform這個套件的參考。
就如同ASP.NET Core的功能註冊方式,先透過DI的方式將此架構注入至現有的應用程式中,剩下的就是將已經開發好的套件放置於packages目錄中,這樣系統啟動時就會載入套件功能。