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

    1.转换函数 与date操作关系最大的就是两个转换函数:to_date(),to_char() to_date() 作用将字符类型按一定格式转化为日期类型: 具体用法:to_date('2004-11 ...

  2. GridView在ScrollView中实现在家更多

    这个本身会有bug  应该在滑动监听中作出判断的 <?xml version="1.0" encoding="utf-8"?><Relativ ...

  3. java 多线程

    1.继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是 ...

  4. jdk安装及环境变量配置

    JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库. jdk下载地 ...

  5. IOS的Crash情况在Crashlytics平台上统计解决方案的一点遗憾(截止到2015年6月14日)

    平台针对特定版本的monkey操作后数量统计,按时间段定时去获取,最后根据操作批次出具分析报告: 问题是crashlytics平台仅提供一个BS登录查看WEB后台,所以无法通过API或者DB去直接获取 ...

  6. JMS links

    http://yuxisanren.iteye.com/blog/1912587 http://somebody-hjh.iteye.com/blog/726050 http://docs.oracl ...

  7. 完美解决scrollView 截屏图片模糊

    UIGraphicsBeginImageContext   首先说明一下UIGraphicsBeginImageContextWithOptions 和UIGraphicsBeginImageCont ...

  8. codeforces 721C (拓排 + DP)

    题目链接:http://codeforces.com/contest/721/problem/C 题意:从1走到n,问在时间T内最多经过多少个点,按路径顺序输出. 思路:比赛的时候只想到拓排然后就不知 ...

  9. Caffe 源碼閱讀(六) InternalThread

    类InternalThread是一个虚类,是Caffe中的多线程接口,其本质是为封装了boost::thread 看源码可以得到以下结论: 1.每个派生类都需要实现一个InternalThreadEn ...

  10. Win10/UWP新特性—Drag&Drop 拖出元素到其他App

    在以前的文章中,写过微软新特性Drag&Drop,当时可能由于处于Win10预览版,使用的VS也是预览版,只实现了从桌面拖拽文件到UWP App中,没能实现从UWP拖拽元素到Desktop A ...