正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记。而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅。本系列文章均摘要自 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. 【python】操作excel——xlrd xlwt xlutils

    from xlutils.copy import copy import xlrd # import xlutils #打开已存在的excel rb=xlrd.open_workbook('D:\\1 ...

  2. Android深度探索--HAL与驱动开发----第六章读书笔记

    Linux驱动程序与其他类型的Linux程序一样拥有自己的规则,下面给出一个编写基本的Linux驱动的一般步骤: (1)建立Linux驱动的骨架(装载和卸载Linux驱动): (2)注册和注销设备文件 ...

  3. 团队开发——冲刺2.e

    冲刺阶段二(第五天) 1.昨天做了什么? 讨论“暂停”功能:编写软件测试计划书(引言.测试内容). 2.今天准备做什么? A.编写软件使用说明书: B.编写软件测试计划书(测试规则.测试环境): C. ...

  4. 如何快速在当前目录打开cmd命令提示符

    对于稍微熟悉电脑一些的朋友来说.cmd绝对是个很方便的东西.但是每次使用cmd都要cd半天才能到当前目录.怎么快速打开当前目录呢? 当前目录按住shift再右键.然后会看到右键菜单里有一个" ...

  5. 第二章:搭建Android开发环境

    通过对本章节内容的阅读,了解了Android底层开发所需要的各种开发工具,以及在Linux环境下怎样搭建Android底层开发环境,在Linux系统上开发Android应用程序,需要安装Linux版本 ...

  6. 动态生成tr,并将其下控件的值拼接后传到后台并保存

    有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...

  7. NOIP 考前 队列复习

    BZOJ 1127 #include <cstdio> #include <cstring> #include <iostream> #include <al ...

  8. C#语法知识

    接口: 接口可以包含方法.属性.事件.索引器或这四种成员类型的任意组合. 接口不能包含常量.字段.运算符.实例构造函数.析构函数或类型.当类或结构实现接口时,类或结构必须为该接口定义的所有成员提供实现 ...

  9. Win10/UWP开发-Ink墨迹书写

    在UWP开发中,微软提供了一个新型的InkCanvas控件用来让用户能书写墨迹,在新版的Edga浏览器中微软自己也用到了该控件使用户很方便的可以在web上做笔记. InkCanvas控件使用很简单,从 ...

  10. win764位Ruby2.0环境搭建之Ruby on Rails

    一:安装Ruby 1.在http://rubyinstaller.org 下载需要的ruby版本,因为是exe文件,所以,你可以直接安装. 安装结束后,cmd上运行 ruby -v 显示版本号.如果正 ...