天天看点

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有更好的实用性。

  我们采用的是MVC5(本文中介绍的方法对于MVC4也是适用的),如下图,解决方案中有四个项目,其中 WeDiscuss 为前端,WeDiscuss.Plugin.Framework 为插件公共类库  WeDiscuss.Plugin.Album 为插件(相册) WeDiscuss.Plugin.News 为插件(新闻),本文只是讲解决插件的实现方式,就不多做其它如果业务逻辑、数据访问层等

  注;每个插件都有自已的(M、V、C),内部实现和常用MVC没有区别,这样可以方便的开发,没有其它新知识的引入。

  

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  其中,插件层可以在主项目中引用,也可以不引用,或是放到其它目录下(如把插件DLL单独放到“Plugins”目录中),如果不引用就采用在编译完成时复制

  在如下图加入:

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  我们把各个模块编译出来的assembly和各个模块的配置文件自动放到一个bin平级的plugin目录,然后web应用启动的时候自动扫描这个plugin目录并加载各个模块plugin,这个怎么做到的?大家也许知道,ASP.NET只允许读取Bin目录下的assbmely,不可以读取其他路径,包括Bin\abc等,即使在web.config这样配置probing也不行:(不信你可以试一下)

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载
转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  插件能用了,但也想动态注入菜单,这样才实现了自动化,要不还是人工进行菜单注入永远是半自动化,这和我们开发的思想是不想符的,下面就来说一下菜单的注入

  1、首称在WeDiscuss.Plugin.Framework 为插件公共类库中建实体类PluginMenu 和PluginMenus

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载
转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  这样我们就实现了菜单的结构,接下来就是采单的生成或注入方法:

  新建 AppPlugin 和 PluginApplication来实现菜单的初使化方法,并将生成好的菜单存放在静态变量中。

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载
转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  2、菜单初使化

  在每个插件项目中新建一类,并继承AppPlugin,重写方法:SetupExtensions 调用DefineMenuItem 实现菜单初使化,在菜单的结果中我们看到有MenuType类型,这里我们自定义,一般会用枚举来实现,可以定义为前台或后台等,一个插件可以拥有多个菜单,可以注入多个地方

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载
转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  3、菜单调用

    在需要出现插件菜单的地方,我们用以下方法实现菜单的注入并呈现

转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载
转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现概述架构 小结源码下载

  我们站在前辈的肩膀上成长,感谢所有帮助WD成长的人.

继续阅读