原文首發:https://iamoldli.github.io/2019/05/20/net-core-mo-kuai-hua-kai-fa-kuang-jia/1-kai-pian/
原始碼地址
GitHub:https://github.com/iamoldli/NetModular
演示地址
賬戶:admin
密碼:admin
前端框架演示地址(臨時)
地址:http://progqx5cu.bkt.clouddn.com/skins/index.html#/
賬戶:admin
密碼:admin
我想要的模組化
1、採用前後端分離。
2、將業務拆分成獨立的模組,後端程式碼打包併發布到公司內部的NuGet包管理平臺,前端程式碼打包釋出到公司內部的NPM包管理平臺。
3、專案中用到了哪個模組,直接通過包的形式安裝對應的包。
4、開發人員只需要關心自己負責的模組,不需要知道依賴的業務模組程式碼邏輯。
專案架構圖
模組化原理
實現模組化首先要解決的就是如何將多個模組整合到一個系統裡面,因為我們用的是WebApi,也就是說要解決怎麼把每個模組的控制器註冊到系統中。好在ASP.NET Core提供了對應的功能,可以讓我們很方便的實現這個效果,那就是ASP.NET Core 中的應用程式部件,它能夠讓我們動態的從一個程式集中發現並載入我們需要的控制器
// create an assembly part from a class's assembly
var assembly = typeof(Startup).GetTypeInfo().Assembly;
services.AddMvc()
.AddApplicationPart(assembly);
// OR
var assembly = typeof(Startup).GetTypeInfo().Assembly;
var part = new AssemblyPart(assembly);
services.AddMvc()
.ConfigureApplicationPartManager(apm => apm.ApplicationParts.Add(part));
需要注意的是,在系統啟動的時候,ASP.NET Core預設會自動從入口程式集開始,遍歷所有的依賴程式集並新增系統中。
var entryAssembly = Assembly.Load(new AssemblyName(entryAssemblyName));
var assembliesProvider = new ApplicationAssembliesProvider();
var applicationAssemblies = assembliesProvider.ResolveAssemblies(entryAssembly);
foreach (var assembly in applicationAssemblies)
{
var partFactory = ApplicationPartFactory.GetApplicationPartFactory(assembly);
foreach (var part in partFactory.GetApplicationParts(assembly))
{
ApplicationParts.Add(part);
}
}
因為所有模組都是通過包安裝到專案中的,所有模組都是有依賴的,也就不需要我們手動新增了。
使用程式碼生成器快速開發
基本上每一個框架都會提供程式碼生成器的功能,NetModular
也不例外,與別的程式碼生成器不同,NetModular
的程式碼生成器是作為一個模組存在的它可以整合到任何專案當中。
大部分程式碼生成器都是根據先建立資料庫,在根據資料庫來生成程式碼,而NetModular
的程式碼生成器則是線上建立專案、實體、屬性等,然後根據這些資料生成程式碼以及資料庫檔案。
具體的不在演示,大家有興趣的話可以訪問上面的Demo地址自己體驗一下~
結尾
這邊文章只是簡單做個介紹,後續希望自己能夠寫一個系列的文章來詳細的講解基礎框架的各個模組、前端框架模組以及已有的業務模組。