源碼地址
GitHub:https://github.com/iamoldli/NetModular
演示地址
地址:https://nm.iamoldli.com
賬戶:admin
密碼:admin
前端框架演示地址(臨時)
地址:http://nm.demo.iamoldli.com/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地址自己體驗一下~
結尾
這邊文章只是簡單做個介紹,后續希望自己能夠寫一個系列的文章來詳細的講解基礎框架的各個模塊、前端框架模塊以及已有的業務模塊。
原文首發:https://iamoldli.github.io/2019/05/20/net-core-mo-kuai-hua-kai-fa-kuang-jia/1-kai-pian/
