零基础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程序

相关文章
相关标签/搜索