一个项目随着业务模块的不断增加,系统会越来越庞大。如果参与开发的人员越多,管理起来也难度也很大。面对这样的情况,首先想到的是模块化插件式开发,根据业务模块,拆分成各个独立的插件,然后分配不同开发人员开发,互相之间没有依赖完全独立。
这里介绍一种使用ASP.NET Core MVC 技术开发Web后台系统,使用插件式的方案。这个方案在项目中已经使用效果觉得还不错,这里把主要思想提取出来,做个简单的demo分享下
一、创建主项目
这里使用的开发工具是vs2019,ASP.NET Core 2.1。
创建一个ASP.NET Core MVC项目,项目结构如下图1,完全是脚手架自动创建好的标准项目
图1
这里是一个简单的默认程序,在实际的项目中,特别是传统信息管理web后台系统,登录,以及登录之后的主框架,还有一些公共的模块,可以在主项目里面做,不会随业务二变动的。然后各个具体业务模块分成独立的插件开发。
这个主项目建立好之后,运行正常,如图2
图2
下面开始做代码部分添加,为了方便阅读代码以截图提供,最后会附加完整的demo程序提供下载。
1、在Startup.cs类里面增加如下代码图3,具体作用看注释,这里就不再赘述。
图3
这里是把插件程序注册到主程序里面,核心就是使用了ApplicationParts
2、Startup.cs类里面还有一个地方要修改,增加一个Areas区域的路由映射,图4
图4
增加这个的具体原因等会看插件项目的说明
3、还有为了演示能否访问到插件,这里增加两个插件的超链接,具体到业务中,菜单肯定是数据库动态维护的。
修改Views/Shared/_Layout.cshtml代码如下 图5
图5
二、创建插件项目
插件项目也是一个标准的ASP.NET Core MVC 项目。我这里为了演示,创建了两个独立的插件项目。如下图6,图7
图6
图7
插件项目说明,插件是根据业务模块划分的,还有为了防止注册到主项目之后路由命名的冲突,插件项目就使用MVC自带的区块Areas功能来存放。这里就是前面主项目要增加Areas路由映射的原因。然后删除脚手架默认创建的外层控制器和视图文件,因为主项目也有这样同名的控制器路由,这些不删除,到时候注册到主项目,会出现重复路由错误。
插件项目增加各自的Areas,新建控制器如图8,新建对应试图如图9。这里就添加几个模拟数据。
图8