Fork me on GitHub

(译)Professional Asp.Net MVC4 Chapter 11

周末粗略读了下 Professional Asp.Net MVC4 ,与MVC3书的内容大致一样,如多了WEBAPI这一章节,所以看的很快,感觉还是WEBAPI还是蛮新异的于是凑合翻译了下,入个门

ASP.NET Web API

本章包含的内容?

  • 定义ASP.NET WEB API
  • WEB API入门
  • 创建一个API Controller
  • 配置WEB API
  • 比较WEB API与MVC中的路由
  • 参数绑定
  • Filter过滤Request
  • 启用依赖注入
  • 探索API编程
  • 跟踪一个应用程序

WEB API项目诞生于想要深度集成HTTP协议的Windows Communication Foundation(WCF)团队及其客户,先前的WEB服务编程模式WCF大多是对事物的抽象,这意味着在传输的过程中隐藏很多细节。WEB API 试图改变这样的编程方式,让程序员能够直接操作HTTP的编程模型。在频繁的预览版本后,先由Henrik Frystyk Nielsen(WEBAPI Team成员之一,另一位是Http规范者之一),这个新框架能为WCF客户提供了一个替代的方式,并能够更好的控制Http协议。

2011年,在Scott Guthrie的提议下重组了ASP.NET MVC与WCF WEB API团队,他一直致力于合并团队的努力,以便客户能够容易运用ASP.NET的知识去编写WEB APIs;团退融合各自平台的优秀的想法,最终 ASP.NET WEB API 诞生了,并随同ASP.NET MVC4运用在一起。

定义ASP.NET WEB API

在数字通信的今天如果有一个共同点,要属Http协议,如在我们的电脑的浏览器上,我们已经述说了二十年以上,但是现在很多人在口袋里能以智能手机的方式拥有同样功能。应用程序经常使用HTTP和JSON作为他们的信息渠道,如给家里打电话。今天的Web应用程序可能不被认为是“完成”,而是提供了某种形式的远程访问接口。

当MVC 开发人员问我要网络接口时,我常说:”ASP.NET MVC善于接受表单数据,并生成HTML;ASP.NET WEB API 善于生成结构化数据,如JSON和XML,MVC 提供了结构化的数据的支持(JsonResult and the JSON value provider),但对于以下几种形式 提供的还不够完善,包括:

  • 基于Http协议的动作而不是行为的名称
  • 接受与生成的内容不一定是面向对象的(可能是XML,也可能是图片 PDF文件或者电子名片)
  • 允许开发人员设置Content type 的类型并生成结构化的数据
  • 托管ASP.NET运行时堆栈和IIS Web服务器,而WCF早已经能够现实了

这个故事的重要组成部分,是WEB API团队试图引导您充分利用您现有的ASP.NET MVC的经验如 控制器,actions,过滤器,模型绑定,依赖注入等和WEB API的概念很相似,这使得相结合MVC和Web API的应用程序变的容易,作为一个全新的框架,WEB API 可以用一本书来论述 。本章节能有助于我们了解MVC与WEB API之间的异同,并帮助您决定是否在MVC在项目中运用 WEB API 。

WEB API入门

ASP.NET MVC4 是VS2012的组成部分 VS2010的附加部分,其安装包中就包含了ASP.NET WEB API,所有的MVC项目模板包含了必要的引用包与配置来支持MVC与WEB API,他们仅有的区别在于相同的文件默认被放在不同的位置,被标记”WEBAPI”的模板如图11-1所示,其中包含了一个API控制器的示例,任何一个MVC或API类型都能够添加到已经存在的项目中 =>在VS中 新建项 =>在控制器的项目浏览器中 =>包含创建支持EF读写操作的控制器

image

创建一个API Controller

Web API与MVC一样,都依赖于控制器,然而,WebAPI 不共享MVC中的模型,视图,控制器,他们的共同之处都是把Http请求映射到控制器上,但MVC中的模式是使用一个输出模板与试图引擎,而不是与WEB API一样直接渲染结果,WebAPI直接根据模型作为响应结果,Web API和MVC控制器的设计之间的差异实际是这两个框架之间的主要区别,本节简要说明了编写一个Web API控制器和action 的基本知识。

Examining the Sample ValuesController

posted @ 2012-12-03 15:11  花儿笑弯了腰  阅读(646)  评论(0编辑  收藏  举报