正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记。而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅。本系列文章均摘要自 Wrox 红皮书【ASP.NET MVC 4 高级编程(第4版)】,喜欢详细了解的码农兄弟也可以自行购买

MVC 模式简介

        MVC 将应用程序的用户界面(User Interface,UI)分为三个主要部分:

  1. 模型:描述了要处理的数据以及修改和操作数据的业务规则。
  2. 视图:应用程序用户界面的呈现方式。
  3. 控制器:一组类,处理来自用户、整个应用程序流的通信。

       MVC 是一种结构模式,ASP.NET MVC 采用了大部分基于 MVC 的 Web 框架所使用的一些基本规则:

  1. 约定优于配置
  2. 不重复(DRY原则,Don't Repeat Yourself)
  3. 尽量保持可插拔性(pluggability) 

Razor 视图引擎

      Razor 简洁、富有表现力、灵活。书中有一句总结较为经典:我一直在寻找 Razor 的语法规则,直到有人告诉我不要再想了,直接输入“@”符号就可以开始编写代码了,我才意识到原来 Razor 本无规则

ASP.NET Web API      

       它是一个提供了 ASP.NET MVC 开发风格的框架,专门用来编写 HTTP 服务。下面是一些类似 MVC 的 Web API 功能,但只适用于 HTTP 服务域

  • 路由:ASP.NET Web API 使用同样的路由系统,将 URL 映射到控制器操作。它按照约定将 HTTP 动词映射到操作,从而实现将路由融入 HTTP 服务上下文,使得代码更易于阅读,也鼓励了 RESTful 服务设计
  • 模型绑定和验证:和 MVC 简化映射输入值(表单域、cookies、URL参数等)到模型值的过程一样,ASP.NET Web API 自动把 HTTP请求值映射到模型。
  • 过滤器:MVC 使用过滤器以便通过特性向操作添加行为。例如,向某个 MVC 操作添加 [Authorize] 特性会阻止匿名用户访问,匿名用户将被重定向到 Login 页面。
  • 基架:也拥有 ASP.NET MVC 基架。
  • 简易的单元测试:和 MVC 很像,ASP.NET Web API 建立在依赖注入和避免全局状态使用的概念之上。

      

       此外,ASP.NET Web API 专门为 HTTP 服务的开发,添加了一些新的概念和功能

  • HTTP 编程模型:为了更好的处理 HTTP 请求和响应,Web API 开发经验得到优化,提供了一个强类型的 HTTP 对象模型、HTTP 状态码和容易访问的 headers等。
  • 基于 HTTP 动词的动作调度:MVC 根据操作方法的名称来调度,而 Web API 则根据 HTTP 动词自动调度操作方法。例如,一个 GET 请求会被自动调度到一个名为 GetItem 的控制器操作。
  • 内容协商:浏览器或其他 HTTP 客户端给出它们的响应格式优先级,而服务器用它支持的首选格式做出响应。这样,我们的控制器就能提供 XML、JSON 或其它内容来响应客户端最想要的格式。
  • 基于代码的配置:服务配置是复杂的。WCF 采用冗长复杂的配置文件来完成配置,而 Web API 完全通过代码配置。 

其他功能      

       通过代码进行的额外功能逻辑配置正开始集中到 Global.asax 中的 Application_Start 方法中,庆幸的是 ASP.NET MVC 中,这些配置已经转移到 App_Start 目录下的静态类中:

  • AythConfig.cs:配置安全设置,其中包括站点的 OAuth 登录。
  • BundleConfig.cs:注册捆绑微小系统。默认添加一些捆绑,包括 jQuery、jQueryUI、jQuery 验证、Mondernizr 和默认的 CSS 引用。
  • FilterConfig.cs:用来注册全局 MVC 过滤器!尽管只默认注册了一个 HandleErrorAttribute,但这里绝对是注册其它过滤器的好地方
  • RouteConfig.cs:存放 MVC 配置语句、路由配置的鼻祖。
  • WebApiConfig.cs:用来注册 Web API 路由,以及设置任何其他 Web API 配置设置。

简介 – ASP.NET MVC 4 系列的更多相关文章

  1. ASP.NET MVC 入门系列教程

    ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...

  2. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  3. ASP.NET MVC学习系列(二)-WebAPI请求(转)

    转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...

  4. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

  5. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  6. ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  7. 表单和 HTML 辅助方法– ASP.NET MVC 4 系列

           这里有一个疑问,诸如在文本编辑器中输入 HTML 元素如此简单的任务,也需要任何帮助吗?的确,输入标签名称是很容易的事,但是确保 HTML 页面链接中的 URL 指向正确的位置.表单元素 ...

  8. Asp.net MVC 学习系列(一)序

    题外话 公司本月开始提供早餐服务,2块天一餐,包括粥,两个包(听说是利口福供应的),一个鸡蛋.良心企业.公司原本有一个内部订餐系统,用Delphi开发的,开发的人早就走光了,也没有留下什么文档,现在项 ...

  9. ASP.NET MVC学习系列(一)-WebAPI初探

    由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主 ...

随机推荐

  1. marquee 实现首尾相连循环滚动效果

    <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标签不仅可以滚动文字,也可以滚动图片,表格等  marquee标签不是HTML3.2 ...

  2. C++中的文件读取结束

    while(cin>>N>>M) { } ok???

  3. PCB设计规则考量之初识

    PCB的设计规则可以分布局与走线.布局里最简单的原则就是避免信号之间的干扰,有把模拟部分与数字部分分开,把开关电源与数字部分分开,把端去耦电容靠近端点,而且从端点出来的电容容值按从小到大摆放效果会好些 ...

  4. 华为交换机sflow配置

    华为交换机sflow功能配置 1.配置交换机的sflow流发送 [系统视图]sflow agen ip  x.x.x.x                 设置sflow输出源 [系统视图]sflow ...

  5. 基于vue2.0的分页组件开发

    今天安排的任务是写基于vue2.0的分页组件,好吧,我一开始是觉得超级简单的,但是越写越写不出来,写的最后乱七八糟的都不知道下句该写什么了,所以重新捋了思路,小结一下- 首先写组件需要考虑: 要从父组 ...

  6. 标准盒子模型和IE盒子模型

    标准盒子模型 = margin + border + padding + content (content =  width | height) IE盒子模型 = margin + content ( ...

  7. 使用Application对象简单完成网站总访问人数的统计

      Global.asax文件: using System.IO; protected void Application_Start(object sender, EventArgs e) { Fil ...

  8. Mac、Linux更换命令行svn diff为P4Merge、vimdiff

    2015-01-21 21:25:52 这里先把那个程序员大神的博客地址贴一下(PS:大神,我不是为了抄袭哦,真是怕自己忘记了),http://www.ccvita.com/445.html,里面还有 ...

  9. C++ 箴言

    1.把C++当成一门新的语言学习: 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C++ Programming Language ...

  10. ln 软硬链接

    链接 在谈软链接与硬链接之前,先来说说文件系统基础知识. Linux 系统中,一切皆文件. 文件包含两部分:文件属性与权限(inode),文件内容(data-block). 一个文件可由1个inode ...