[转载]WCF和ASP.NET Web API在应用上的选择

http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.htmlhtml

http://msdn.microsoft.com/en-us/library/jj823172.aspxandroid

http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-apiios

 

在最近发布的Visual Studio 2012及.NET 4.5中, 微软正式推出新的网络服务框架ASP.NET Web API。做为ASP.NET MVC 4的一部分,ASP.NET Web API这套开源框架的设计目的是简化RESTful服务的开发和使用。web

ASP.NET Web API 与以前的内建HTTP服务解决方案的不一样之处在于,它一开始就是围绕HTTP协议及其消息语义构建起来的。与WCF REST或ASP.NET AJAX加ASMX相比,它不是对现有框架的加强,而是一个全新的平台。新的ASP.NET Web API的优点在于它聚集了以前各平台的各类最佳特性,结合为一个全面而不臃肿的HTTP平台。api

微软已经有了一个的Web服务框架叫作Windows Communication Foundation( WCF),它利用TCP、HTTP、MSMQ等传输协议构建“契约先行”的服务。WCF最初为基于SOAP的服务而设计,首先支持的是WS-*功能,但后 来添加了少许迎合REST的功能。在WCF 4.5也有很大的加强,具体能够看以下系列文章:安全

  1. What’s new in WCF 4.5? Let’s start with WCF configuration
  2. What’s new in WCF 4.5? A single WSDL file
  3. What’s new in WCF 4.5? Configuration tooltips and intellisense in config files
  4. What’s new in WCF 4.5? Configuration validations
  5. What’s new in WCF 4.5? Multiple authentication support on a single endpoint in IIS
  6. What’s new in WCF 4.5? Automatic HTTPS endpoint for IIS
  7. What’s new in WCF 4.5? BasicHttpsBinding
  8. What’s new in WCF 4.5? Changed default for ASP.NET compatibility mode
  9. What’s new in WCF 4.5? Improved streaming in IIS hosting
  10. What’s new in WCF 4.5? UDP transport support
  11. What’s new in WCF 4.5? WebSocket support (Part 1 of 2)
  12. What’s new in WCF 4.5? WebSocket support (Part 2 of 2)

随着时间流逝,WCF Web API为了让WCF适配到”原生”HTTP世界,遇到了不少困难。由于WCF主要是为基于SOAP的XML消息设计的,为了让Web API成为WCF一部分,须要动的手术实在有点大(至少Web API的开发者们给了我这样的印象),是基于RPC风格的API。另外一方面,ASP.NET MVC的基础设施既能优雅地处理HTTP请求和响应,又能轻松建立各类控制器,好像是建立这种新类型服务的合适途径。websocket

  • 支持URL路由,透过用户熟悉的MVC风格路由语义,生成干净的URL
  • 根据Accept标头对请求和响应的序列化形式进行内容协商(Content Negotiation)
  • 支持大量输出格式,包括JSON、XML、ATOM等
  • 默认对REST语义有完善支持,同时又不强制限定必须使用REST语义
  • 易于扩展的Formatter机制,支持添加新的输入/输出类型
  • 可经过HttpResponseMessage类、HttpRequestMessage类和强类型枚举来描述大量的HTTP操做,提供对更高级的HTTP特性的深度支持
  • 基于惯例的设计引导用户按HTTP Services的正确方式行事
  • Formatters和Filters延续了MVC的扩展模型,具有出色的扩展能力
  • 用于非Web程序时,能够脱离IIS运行(Self-hostable)
  • 具有可测试性,测试机制的设计相似于MVC

     如今咱们拥有了2个服务框架,一个基于RPC机制的WCF和一个基于HTTP的ASP.NET Web Api。在咱们的开发实践中如何进行选择呢? 能够参照知名互联网企业,不管是google,facebook,baidu,新浪仍是腾讯。他们对外开放的接口都是基于Http的Web API,在服务内部框架都是基于SOA架构设计的,通信机制都是采用RPC机制的,例如Google Protocol Buffers ,Facebook thift。 咱们彻底也能够这样搭配,在内部通信采用WCF + Protobuf-NET,参看《WCF服务上应用protobuf》,对外的服务采用ASP.NET WEB API。WCF的 TCP、Named Pipes,甚至UDP(在WCF 4.5中)绑定的性能要比HTTP强不少倍,这里有一个几年前的微软的测试报告《WCF 性能基准报告》,对外提供的服务采用Web API同时也是一个业界标准问题,用WebAPI就很容易的跨越ios,android,wp等移动终端平台,同时有很成熟的OAuth 解决安全问题。网络

微软随.NET 4.5发布新REST API框架架构

Web API 强势入门指南框架

Web API 入门指南 - 闲话安全

相关文章
相关标签/搜索