基于.NET MVC的高性能IOC插件化架构

最近闲下来,整理了下最近写的代码,先写写架构,后面再分享几个我自己写的插件

最近经过反复对比,IOC框架选择了Autofac,原因很简单,性能出众,这篇博文是我的各大IOC框架的性能测试:http://www.cnblogs.com/gengzhe/p/4370979.html

我先分析下我的系统架构:

这是整体结构图,先简单介绍下:Sun.Core是系统核心,包含了系统必要组件及基础设施的所有接口及必要拓展类。Sun.Framework是整个系统的基础设施,提供系统的运行基础,包括插件支持方面的代码都在这个项目里进行实现。Sun.Web是网站的入口点。Model是实体类项目。Module是插件。Operate是业务逻辑项目。接下来一个一个介绍,主要介绍插件化架构的实现方式。

上面两张图里面是插件化接口的核心代码,前面的一张图包含了IOC容器和插件的所有接口,后面一张图实现了插件接口,并对MVC控制器工厂及视图引擎类进行了重写。

这里是存放插件的地方,可以把编译好的功能插件及单独的网站项目拷贝到这里面,网站运行的时候能自动检索里面的插件,并加载。可以把网站所有的功能及网站内容组合成多个插件然后按需加载运行。

我这里写了两个插件的例子,上面一个是基于EasyUI的网站后台(插件化了),下面一个是对网站提供缓存的Redis缓存插件,加载插件后,网站的缓存功能就改为Redis了。

这个是插件后台,用户开发自己的插件的时候可以使用IOC容器获取Sun.Core定义的功能接口,功能的具体实现由相应的插件来实现

通过这两个图可以看到,我们的缓存插件及网站插件都加载成功了。

后面我会继续为大家讲解各部分的具体实现

 

基于.NET MVC的高性能IOC插件化架构的更多相关文章

  1. 基于.NET MVC的高性能IOC插件化架构(一)

    最近闲下来,整理了下最近写的代码,先写写架构,后面再分享几个我自己写的插件 最近经过反复对比,IOC框架选择了Autofac,原因很简单,性能出众,这篇博文是我的各大IOC框架的性能测试:http:/ ...

  2. 基于.NET MVC的高性能IOC插件化架构(二)之插件加载原理

    上一篇博文简单介绍了下插件化的代码组成部分:http://www.cnblogs.com/gengzhe/p/4390932.html,源码地址:https://github.com/luohuazh ...

  3. ASP.NET MVC 4 插件化架构简单实现-思路篇

    用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC 4 来实现每个插件都可以完全从主站点剥离出来,即使只是一个插 ...

  4. MVC 4 插件化架构简单实现

    转ASP.NET MVC 4 插件化架构简单实现-思路篇   用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC ...

  5. ASP.NET MVC 4 插件化架构简单实现-实例篇

    先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...

  6. MVC 4 插件化架构简单实现实例篇

    ASP.NET MVC 4 插件化架构简单实现-实例篇   先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集 ...

  7. 安卓架构 视频 Android 插件化架构设计

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha Android 插件化架构设计-Dream老师 自定义SDK =====

  8. 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

    **注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较 ...

  9. 转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现

    基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现   概述 在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有 ...

随机推荐

  1. IBatis增删改差的实现以及注意点

    此次进讲述对表操作的实现细节.废话不多说,代码见真章. <?xml version="1.0" encoding="utf-8" ?> <sq ...

  2. 【java基础】==与equals()方法比较

    1.八种基本类型 只有"=="方法进行判断是否相等,比较的是基本数据类型的值,没有equals()方法 2.Java类库中的类 "=="比较的是对象的句柄,即内 ...

  3. MD5和Base64

    一. 简述 MD5: 全称为message digest algorithm 5(信息摘要算法), 能够进行加密, 可是不能解密, 属于单向加密, 通经常使用于文件校验 Base64: 把随意序列的8 ...

  4. xaml的margin和css的margin对比

    css margin xaml margin 例子 1 css margin:10px 5px 15px 20px;上右下左 上外边距是 10px 右外边距是 5px 下外边距是 15px 左外边距是 ...

  5. secureCRT使用退格键(backspace)出现^H解决的方法

    刚新装了python-3.4.1,使用secureCRT连接上去,可是我在进入后,输入回格键时,屏幕显示的是^H,这个让人受不了.最终在网上找到了解决的方法,仅仅要改动一下secureCRT的配置就可 ...

  6. sgu128snack

    按我的理解大概说下题意: 有非常多个点,最多一万个,告诉你它们的坐标.如今须要构造一条闭合线.这个闭合线满足下面六点: 1必须是闭合的. 2必须用到全部的点. 3构造的线段之间若成角,则必须是90度. ...

  7. HDU--3829--Cat VS Dog【最大点独立集】

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829 题意:动物园有n条狗.m头猫.p个小孩,每一个小孩有一个喜欢的动物和讨厌的动物.如今动物园要转移一些 ...

  8. Computer Science 学习第四章--CPU 指令集和指令处理

    Instruction set Y86 指令集 运算符:addl, subl, andl, and xorl 跳转符:jmp,jle,jl,je,jne,jge, andjg 条件符:cmovle, ...

  9. mapxtreme演示V1.3

    mapxtreme演示V1.3   mapxtreme地图相关基本功能的演示其中包括 鹰眼地图,图层控制,发达,缩小,平移地图,地图模糊查询,中点工具,距离测量工具,面积测量工具,图元信息查看工具,各 ...

  10. 关于TCP/IP协议栈(转)

    1. TCP/IP协议栈 与OSI参考模型不同,TCP/IP协议栈共有4层,其中网络接口层对应OSI中的物理层和数据链路层,应用层对应OSI中的应用层.表示层和会话层. 在网络接口层的主要协议有:AR ...