轻量级 .NET MVC---QMVC

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,布布扣,bubuko.com

时间: 2024-10-04 23:33:20

轻量级 .NET MVC---QMVC的相关文章

谈谈.NET MVC QMVC高级开发

自从吾修主页上发布了QMVC1.0,非常感兴趣,用了半月的时间学习,真的感觉收益非浅,在此声明非常感谢吾修大哥的分享! 1.轻快简单,框架就几个类,简单,当然代码少也就运行快!单纯的MVC,使的如果你想扩展框架,可以轻易的在QMVC上增加和减少功能,也就是说更容易的去修改和读懂源码. 2.可以与webform框架融合,也就是说你用webform和mvc共同在同一个项目中运行. 3.QMVC APP开发,QMVC APP可以轻易实现多个QMVC项目合并到一个项目中运行,也可以轻易将其分离开独立运行

轻量级 Spring Mvc Api框架

相信大家开发web项目时和别人合作接口联调并不陌生,写完接口了解接口有很多种沟通方法,写wiki,看源代码,写文档等等,当然还有一些比较出名的文档框架如swagger,但是我对swagger的框架并不满意,首先他的引入不够轻量级,其次他对代理bean的支持非常差.于是我自己开发了一套轻量级spring Mvc Api

轻量级的mvc框架封装

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式.MVC把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). PHP中MVC模式也称Web MVC,从上世纪70年代进化而来. MVC的目的是实现一种动态的程序设计,便于后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能. 除此之外,此模式通过对复杂度的简化,使程序结构更加直观. MVC各部分的职能: 模型Model – 管理大部分的业务逻辑和所有的数

Jersey MVC

Jersey是JAX-RS(JavaAPI for RESTful Service)标准的一个实现,用于开发RESTful Web Application.可以参考JAX-RS的介绍(http://www.cnblogs.com/pixy/p/4838268.html),其中的用法适用于JAX-RS标准的所有实现版本. 本文只介绍Jersey MVC的使用. Jersey定义了一个Viewable的类,当资源方法返回的是Viewable对象时,就代表我们想要把结果转换成视图(MVC模式).也就是

Taurus.MVC 2.3 开源发布:增强属性Require验证功能,自带WebAPI文档生成功能

背景: 上周,把 Taurus.MVC 在 Linux (CentOS7) 上部署任务完成后. 也不知怎么的,忽然就想给框架集成一下WebAPI文档功能,所以就动手了. 以为一天能搞完,结果,好几天过去了. 本来还想集成自动化批量执行测试功能,不过想想还是放到下一版本实现吧. 感觉差不多了,就先和大伙分享一下: Taurus.MVC Nuget 更新: 昨夜,Nuget的Package升级了一下,和源码版本做了下同步. 通常源码的版本都会比Nuget包的靠前一个小版本: 目前:Taurus.MV

MVVM和MVC的总结

MVVM MVVM与MVC最大的区别就是:它实现了View和Model的自动同步,也就是当Model的属性改变时,我们不用再自己手动操作Dom元素,来改变View的显示,而是改变属性后该属性对应View层显示会自动改变.非常的神奇~ 这里我们拿典型的MVVM模式的代表,Vue,来举例 <div id="app-5"> <p>{{ message }}</p> <button v-on:click="reverseMessage&quo

从Visual Studio看微软20年技术变迁

前言 这个世界从来都不缺变革,从工业革命到晶体管和集成电路,从生活电器到物联网,从简陋人机到精致体验,我们在享受技术带来的便捷的同时,也在为复杂设计而带来的挑战和生产力下降而痛并快乐着.而迫切期盼的,就是趁手的工具.曾几何时,Visual Studio 一直就是软件开发的高效的标杆,从VB的简洁语法和简单的拖拽开始,Visual Studio 不断的完善,不断的适应快速变化的,加上成熟的生态,让微软世界里的各个伙伴们活的有滋有味. 近年来,微软开始了拥抱开源,投资云技术,在开发工具领域有明显的减

Java资源大全中文版(Awesome最新版)

目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足问题求解程序 持续集成 CSV解析 数据库 数据结构 时间日期工具库 依赖注入 开发流程增强工具 分布式应用 分布式数据库 发布 文档处理工具 函数式编程 游戏开发 GUI 高性能计算 IDE 图像处理 JSON JVM与JDK 基于JVM的语言 日志 机器学习 消息传递 杂项 应用监控工具 原生开发库 自然语言处理 网络 ORM PDF 性能分析 响应式开发库 REST框架 科学计算与分析

Struts2基础

1.Struts2的概念 Struts2 是轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层 轻量级 低侵入性,与业务代码的耦合度很低.即业务代码中基本不需要import它的包 MVC框架 Struts2实现了MVC,并提供一系列API,采用模式化方式简化业务开发过程. 2.Struts1框架与JSP/Servlet耦合非常紧密,这制约了它的发展,以至于被后来的框架陆续赶超. 3.Struts2以Xwork为核心,可以理解为WebWork的升级版. 4.什么是OGNL Obje

pureMVC java版搭建流程

转自:http://blog.csdn.net/sutaizi/article/details/6588004 pureMVC 是一个轻量级的框架 它在 flex中非常流行(和cairngorm差不多火) 目前几乎已经移植到所有平台上. 下面实现java版得pureMVC搭建 先给大家看总体的层次: 众所周知 pureMVC是一个轻量级的MVC框架 分为 Model ,View ,Controller.这三个是pureMVC的核心. 除此之外pureMVC中含有一个单例模式Facade.faca