ASP.NET!这个词代表者一个单词Fat!因为他总是捆绑着太多的太多的类,太多太多的各种功能!你也许会用到,如果你反编译或阅读他们开源的源码,你会不会犹如在大海中找不到方向?不管是Web form 还是MVC。

QMVC顾名思义!Q=Quick!他崇拜灵活,简单,快捷!如果你喜欢这些特点,哪么继续阅读吧,我将给你介绍一个全新的.NET MVC框架,他的名字叫做QMVC.

什么是QMVC

QMVC是指高性能mvc框架,Q是Quick的缩写,MVC分别为Model、Controller、View的缩写。QMVC使用C#程序语言开发,采用Microsoft .NET framework 4.5类库,是用于B/S结构项目开发。QMVC项目的作者吾修师傅是一个名中国佛教信徒,他曾说,度善缘,行善事,宣扬佛法的宗旨,所以这个项目是免费开源的。
    和标准的MVC一样,QMVC采用了控制器、模型和视图组成,控制器用于处理程序逻辑,比如写入数据库、上传文件等业务处理,控制器加载数据后,将数据封装成模型类传给视图,视图通过模型中的数据显示页面内容。这样做程序的思路更加清晰,美工可以更简单的修改显示层,因为程序代码与模板独立的。

如何下载QMVC

QMVC官网:http://www.wuxiu.org/下载源码,解压后,您可以看到三个项目,wuxiu.QMVC、wuxiu.QMVC.APPS.DEMO和wuxiu.QMVC.DEMO。其中wuxiu.QMVC项目是QMVC的核心类库,用于支持MVC框架的运行。wuxiu.QMVC.DEMO为QMVC的示例项目,里面演示了QMVC的基本功能。wuxiu.QMVC.APPS.DEMO项目为演示QMVC APP示例代码。

QMVC源码

首先介绍命名空间,所有命名空间以wuxiu.QMVC开头,其中wuxiu是中文作者姓名的拼音。其中wuxiu.QMVC.APPS命名空间下存放了所有相关QMVC 应用相关类库支持者,其中类大多继承于wuxiu.QMVC中的基类实现。tbz.QMVC.Router命名空间主要存放了QMVC对URL路由功能相关的代码,用于处理Url地址的分析功能。wuxiu.QMVC.APPS.Router命名空间用于处理QMVC APP模式下的url 路由功能。

开始创建一个QMVC项目

1、打开Visual studio,新建一个基于.NET framework4.5的ASP.NET空白项目,项目名称为“myqmvc”,如图:

2、添加引用tbz.QMVC.dll,下载地址:(http://www.wuxiu.org/downloads.html),版本tbz.qmvc.1.0,如图:

3、新建Global.asax文件,并在Application_Start和Application_BeginRequest事件中增加代码:

        protected void Application_Start(object sender, EventArgs e)
{
RouterManager.RegisterDefaultRouter(this.GetType());
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
wuxiu.QMVC.QMVCCore.page_BeginRequest(new HttpContextWrapper(this.Context));
}

4、在“解决方案资源管理器”中创建文件夹“Controllers、Models、DefaultViews”,并在DefaultViews创建文件夹Home,如图:

说明:DefaultViews中的Default为默认视图,用户还可以创建BlueViews、RedViews等不同主题的主题,可以灵活通过qmvc提供的主题功能实现。DefaultViews中的Home对着了Controllers中的HomeController,这件文件夹用于存放HomeController中的视图。

5、打开项目跟目录中“web.config”文件,添加system.webServer节点下配置项:

 <modules runAllManagedModulesForAllRequests="true"/>

说明:这表示告诉iis将所有请求交给模块程序,这里意思是将所有请求交给asp.net先处理。

然后将system.web节点下compilation节点中增加内容:

<assemblies>
<add assembly="System.Web.WebPages.Razor2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=14679ed9c77dd5f5" />
<add assembly="System.Web.WebPages2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=14679ed9c77dd5f5" />
<add assembly="System.Web.Razor2, Version=9.0.0.1, Culture=neutral, PublicKeyToken=14679ed9c77dd5f5" />
</assemblies>
<buildProviders>
<remove extension=".cshtml"/>
<add
extension=".cshtml"
type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor2"/>
</buildProviders>
</compilation>

6、在DefaultViews目录下新建web.config文件,在Configuration节点下添加以下代码:

    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor2">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor2" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor2" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<pages pageBaseType="wuxiu.QMVC.MVCRzorPageBase">
<namespaces>
<add namespace="wuxiu.QMVC" />
</namespaces>
</pages>
</system.web.webPages.razor>

说明,这代码码告诉asp.net编译器Razor模板引擎交给qmvc去编译,配置不当将会引起Razor引擎浏览时出错。

7、到这里,一个QMVC的项目框架就搭建完成了,后面实现一个简单的QMVC程序。在Models目录下新建下个类文件“Home_Index.cs”,代码如下:

using System;
  namespace myqmvc.Models
  {
   public class Home_IndexModel
   {
   public string MSG { get; set; }
   }
  }

Contrllers目录下创建一个ComeController.cs的类文件(注,必须以Controller结尾),代码如下:

using System;
using System.Web;
using wuxiu.QMVC; namespace myqmvc.Controllers
{
public class HomeController:ControllerBase
{
public ViewResult Index()
{
Models.Home_IndexModel model = new Models.Home_IndexModel();
model.MSG = "hello world!";
return View(model);
}
}
}

8、在DefaultViews\Home中新建下个index.cshtml的视图,如图:

代码如下:

  @{myqmvc.Models.Home_IndexModel model = Model;}
  <!DOCTYPE html>
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <title>QMVC web page</title>
  </head>
  <body>
   <h1>QMVC is runing!</h1>
   <div>msg:@model.MSG</div>
  </body>
  </html>

9、关闭index.cshtml,按F5运行,看下效果吧!

尊重原创,转载请注明出处 ^_^

高性能.NET MVC之QMVC!的更多相关文章

  1. 谈谈.NET MVC QMVC高级开发

    自从吾修主页上发布了QMVC1.0,非常感兴趣,用了半月的时间学习,真的感觉收益非浅,在此声明非常感谢吾修大哥的分享! 1.轻快简单,框架就几个类,简单,当然代码少也就运行快!单纯的MVC,使的如果你 ...

  2. QMVC

    高性能.NET MVC之QMVC! ASP.NET!这个词代表者一个单词Fat!因为他总是捆绑着太多的太多的类,太多太多的各种功能!你也许会用到,如果你反编译或阅读他们开源的源码,你会不会犹如在大海中 ...

  3. 合格PHP工程师的知识结构

    摘自http://www.cnblogs.com/ftx5410/p/7204672.html 一下子就想了这么多,后续想到了再补,请大家多多指教.其实编程使用什么语言不重要,最重要的是思想,编程的思 ...

  4. 【转】合格PHP工程师的知识结构

    PHP的运行环境 连环境都搞不起来,就是你有多么喜欢PHP,那也是白搭,开始我们大多会使用集成环境软件例如xampp,wamp.随着知识的增加慢慢要学会自己搭建运行环境,例如 Linux(Ubuntu ...

  5. 合格PHP工程师的知识结构 (转载)

    工作有些年头了,从学校开始自学ASP,偶然因为PHP一个功能爱上它(ASP上传代码要写好多,PHP基本几行就搞定了),从此走上了 ”拍黄片“ 之路.结合这几年的工作经验,说说我对PHP工程师知识结构的 ...

  6. php知识结构

    PHP的运行环境 连环境都搞不起来,就是你有多么喜欢PHP,那也是白搭,开始我们大多会使用集成环境软件例如xampp,wamp.随着知识的增加慢慢要学会自己搭建运行环境,例如 Linux(Ubuntu ...

  7. 高性能的关键:Spring MVC的异步模式

    我承认有些标题党了,不过话说这样其实也没错,关于“异步”处理的文章已经不少,代码例子也能找到很多,但我还是打算发表这篇我写了好长一段时间,却一直没发表的文章,以一个更简单的视角,把异步模式讲清楚. 什 ...

  8. 基于Spring + Spring MVC + Mybatis 高性能web构建

    基于Spring + Spring MVC + Mybatis 高性能web构建 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJs,做了大量的研究,对前后端交互 ...

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

    基于.NET MVC的高性能IOC插件化架构 最近闲下来,整理了下最近写的代码,先写写架构,后面再分享几个我自己写的插件 最近经过反复对比,IOC框架选择了Autofac,原因很简单,性能出众,这篇博 ...

随机推荐

  1. Crowd Control(输出不在最大值最小化的最短路上的边)

    题意: 就是求完最大值最小化  然后输出在这条最大值最小化的最短路上的点的不在最短路上的边,emm.... 解析: 很明显,先套spfa最大值最小化模板,emm... 在更新d的时候 用一个pre去记 ...

  2. 学习Spring Boot:(九)统一异常处理

    前言 开发的时候,每个controller的接口都需要进行捕捉异常的处理,以前有的是用切面做的,但是SpringMVC中就自带了@ControllerAdvice ,用来定义统一异常处理类,在 Spr ...

  3. 【Cf #292 D】Drazil and Morning Exercise(树的直径,树上差分)

    有一个经典的问题存在于这个子问题里,就是求出每个点到其他点的最远距离. 这个问题和树的直径有很大的关系,因为事实上距离每个点最远的点一定是直径的两个端点.所以我们可以很容易地进行$3$遍$Dfs$就可 ...

  4. wazuh官方安装指南(中文译版本)

      安装Wazuh服务器 Wazuh服务器可以安装在任何类型的Unix操作系统上.最常见安装在Linux上.如果可以为您的系统提供自动化脚本,则安装过程会更容易,但是,从源码构建和安装也非常简单. 通 ...

  5. HDU 4825 tire树

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total S ...

  6. P4887 第十四分块(前体) 莫队

    题意: 给你一个序列,每次询问l,r问多少个a[i]^a[j]有k个1,k固定. 序列长度1e5,a[i]<=2^14 时限1s,空间40M 题解: 个人其实开始没什么思路,看了题解也好久,题解 ...

  7. 「Vue」自定义指令

    #全局自定义指令1.使用Vue.directive()定义全局的指令 v-focus2.参数1 指令的名称,在定义的时候,指令的名称前面不需要加v-前缀3.但是在调用的时候必须在指令名称前 加上v-前 ...

  8. Linux 下搭建 Svn+Apache

    一.安装apache 1.检查apache是否安装 rpm -qa|grep httpd 2.使用yum安装apache yum -y install httpd 3.记住安装的版本号 httpd.x ...

  9. webapi框架搭建-数据访问ef code first

    webapi框架搭建系列博客 为什么用ef? 我相信很多博友和我一样都有这种“选择困难症”,我曾经有,现在也有,这是技术人的一个通病——总想用“更完美”的方式去实现,导致在技术选择上犹豫不决,或总是推 ...

  10. bzoj千题计划132:bzoj1189: [HNOI2007]紧急疏散evacuate

    http://www.lydsy.com/JudgeOnline/problem.php?id=1189 二分答案 源点向人连边,流量为1 门拆为mid个点,同一个门的第j个点向第j+1个点连边,流量 ...