简介 – ASP.NET MVC 4 系列
正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记。而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅。本系列文章均摘要自 Wrox 红皮书【ASP.NET MVC 4 高级编程(第4版)】,喜欢详细了解的码农兄弟也可以自行购买。
MVC 模式简介
MVC 将应用程序的用户界面(User Interface,UI)分为三个主要部分:
- 模型:描述了要处理的数据以及修改和操作数据的业务规则。
- 视图:应用程序用户界面的呈现方式。
- 控制器:一组类,处理来自用户、整个应用程序流的通信。
MVC 是一种结构模式,ASP.NET MVC 采用了大部分基于 MVC 的 Web 框架所使用的一些基本规则:
- 约定优于配置
- 不重复(DRY原则,Don't Repeat Yourself)
- 尽量保持可插拔性(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 系列的更多相关文章
- ASP.NET MVC 入门系列教程
ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...
- ASP.NET MVC学习系列(二)-WebAPI请求
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- ASP.NET MVC学习系列(二)-WebAPI请求(转)
转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- 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的无状态模 ...
- ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- 表单和 HTML 辅助方法– ASP.NET MVC 4 系列
这里有一个疑问,诸如在文本编辑器中输入 HTML 元素如此简单的任务,也需要任何帮助吗?的确,输入标签名称是很容易的事,但是确保 HTML 页面链接中的 URL 指向正确的位置.表单元素 ...
- Asp.net MVC 学习系列(一)序
题外话 公司本月开始提供早餐服务,2块天一餐,包括粥,两个包(听说是利口福供应的),一个鸡蛋.良心企业.公司原本有一个内部订餐系统,用Delphi开发的,开发的人早就走光了,也没有留下什么文档,现在项 ...
- ASP.NET MVC学习系列(一)-WebAPI初探
由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主 ...
随机推荐
- 【转】sql to_char 日期转换字符串
1.转换函数 与date操作关系最大的就是两个转换函数:to_date(),to_char() to_date() 作用将字符类型按一定格式转化为日期类型: 具体用法:to_date('2004-11 ...
- GridView在ScrollView中实现在家更多
这个本身会有bug 应该在滑动监听中作出判断的 <?xml version="1.0" encoding="utf-8"?><Relativ ...
- java 多线程
1.继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是 ...
- jdk安装及环境变量配置
JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库. jdk下载地 ...
- IOS的Crash情况在Crashlytics平台上统计解决方案的一点遗憾(截止到2015年6月14日)
平台针对特定版本的monkey操作后数量统计,按时间段定时去获取,最后根据操作批次出具分析报告: 问题是crashlytics平台仅提供一个BS登录查看WEB后台,所以无法通过API或者DB去直接获取 ...
- JMS links
http://yuxisanren.iteye.com/blog/1912587 http://somebody-hjh.iteye.com/blog/726050 http://docs.oracl ...
- 完美解决scrollView 截屏图片模糊
UIGraphicsBeginImageContext 首先说明一下UIGraphicsBeginImageContextWithOptions 和UIGraphicsBeginImageCont ...
- codeforces 721C (拓排 + DP)
题目链接:http://codeforces.com/contest/721/problem/C 题意:从1走到n,问在时间T内最多经过多少个点,按路径顺序输出. 思路:比赛的时候只想到拓排然后就不知 ...
- Caffe 源碼閱讀(六) InternalThread
类InternalThread是一个虚类,是Caffe中的多线程接口,其本质是为封装了boost::thread 看源码可以得到以下结论: 1.每个派生类都需要实现一个InternalThreadEn ...
- Win10/UWP新特性—Drag&Drop 拖出元素到其他App
在以前的文章中,写过微软新特性Drag&Drop,当时可能由于处于Win10预览版,使用的VS也是预览版,只实现了从桌面拖拽文件到UWP App中,没能实现从UWP拖拽元素到Desktop A ...