WebService,WCF,WebApi区别与特色

在.NET平台下,有大量的技术让你建立一个HTTP服务,像Web Service,WCF,如今又出了Web API。在.NET平台下,你有不少的选择来构建一个HTTP Services。我分享一下我对Web Service、WCF以及Web API的见解。
 Web Service
  一、它是基于SOAP协议的,数据格式是XML
  二、只支持HTTP协议
  三、它不是开源的,但能够被任意一个了解XML的人使用
  四、它只能部署在IIS上
 WCF
  一、这个也是基于SOAP的,数据格式是XML
  二、这个是Web Service(ASMX)的进化版,能够支持各类各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.
  三、WCF的主要问题是,它配置起来特别的繁琐
  四、它不是开源的,但能够被任意一个了解XML的人使用
  五、它能够部署应用程序中或者IIS上或者Windows服务中
 Web API
  一、这是一个简单的构建HTTP服务的新框架
  二、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术
  三、不像WCF REST Service.它可使用HTTP的所有特色(好比URIs、request/response头,缓存,版本控制,多种内容格式)
  四、它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可使程序更简单、更健壮
  五、它能够部署在应用程序和IIS上
  六、这是一个轻量级的框架,而且对限制带宽的设备,好比智能手机等支持的很好
  七、Response能够被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。
 

  
WCF和WEB API我该选择哪一个?
 
  一、当你想建立一个支持消息、消息队列、双工通讯的服务时,你应该选择WCF
  二、当你想建立一个服务,能够用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其余传输通道不可用的时候也能够支持HTTP。
  三、当你想建立一个基于HTTP的面向资源的服务而且可使用HTTP的所有特征时(好比URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API
  四、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API
 
鞋垫无关的!!!可是对理解有帮助的!!
 
什么是WebService?
 
W3C组织对其的定义以下,它是一个软件系统,为了支持跨网络的机器间相互操做交互而设计。Web Service服务一般被定义为一组模块化的API,它们能够经过网络进行调用,来执行远程系统的请求服务。简单的说:WebService即Web服务,它是一种跨编程语言和跨操做系统平台的远程调用技术。
 
所谓跨编程语言和跨操做平台,就是说服务端程序采用Java编写,客户端程序则能够采用其余编程语言编写,反之亦然!跨操做系统平台则是指服务端程序和客户端程序能够在不一样的操做系统上运行。
 
所谓远程调用,就是一台计算机a上的一个程序能够调用到另一台计算机b上的一个对象的方法。譬如从天气预报系统中获取某个城市的天气数据在本身系统中进行展现;从证券交易系统中获取某只股票的交易信息在本身的系统中进行展现;又譬如一个商城系统中可以展现快递的跟踪信息,而这些信息就是经过webservice从具体的快递公司的系统中获取的数据。
 
其实能够从多个角度来理解WebService,从表面上看,WebService就是一个应用程序向外界暴露出一个能经过Web进行调用的API,也就是说能用编程的方法经过Web来调用这个应用程序。咱们把调用这个WebService的应用程序叫作客户端,而把提供这个WebService的应用程序叫作服务端。从深层次看,WebService是创建可互操做的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操做性,你能够用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要咱们能够经过Web service标准对这些服务进行查询和访问。
 
WebService体系架构
 
 
Web Service = SOAP + HTTP + WSDL
 
SOAP Simple Object Access Protocol)协议是web service的主体,它经过HTTP或者SMTP等应用层协议进行通信,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不一样主机的异构系统间的计算服务处理。这里的WSDL(Web Services Description Language)web 服务描述语言也是一个XML文档,它经过HTTP向公众发布,公告客户端程序关于某个具体的 Web service服务的URL信息、方法的命名,参数,返回值等。
 
 
WebService三要素:
 
1.SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式。
 
2.WSDL (WebServices Description Language):Web服务描述语言,用来描述WebService、以及如何访问WebService
 
3.UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、
查询webService。
 

 
什么是WCF?
 
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通讯的应用程序框架,能够翻译为Windows 通信开发平台。整合了原有的windows通信的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。是Windows平台上开发分布式应用最佳的实践方式。
 
贴图图片
 
简单的归结为四大部分:
1>.网络服务的协议,即用什么网络协议开放客户端接入。
2>.业务服务的协议,即声明服务提供哪些业务。
3>.数据类型声明,即对客户端与服务器端通讯的数据部分进行一致化。
4>.传输安全性相关的定义。
 
它是.NET框架的一部分,由 .NET Framework3.0 开始引入,与Windows Presentation Foundation及Windows Workflow Foundation并行为新一代 Windows操做系统以及 WinFX 的三个重大应用程序开发类库。在 .NET Framework2.0 以及前版本中,微软发展了 Web Service(SOAP with HTTP communication),.NET Remoting (TCP/HTTP/Pipeline communication) 以及基础的 Winsock 等通讯支持。因为各个通讯方法的设计方法不一样,并且彼此之间也有相互的重叠性,对于开发人员来讲,不一样的选择会有不一样的程序设计模型,并且必需要从新学习,让开发人员在使用中有许多不便。同时,面向服务架构(Service-Oriented Architecture) 也开始盛行于软件工业中,所以微软从新查看了这些通讯方法,并设计了一个统一的程序开发模型,对于数据通讯提供了最基本最有弹性的支持,这就是 Windows Communication Foundation。
 
WCF体系结构
 
Windows通讯基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK)。WCF为服务提供了运行时环境(Runtime Environment),使得开发者可以将CLR类型公开为服务,又可以以CLR类型的方式使用服务。理论上讲,建立服务并不必定须要WCF,但实际 上,使用WCF却可使得建立服务的任务事半功倍。WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及 各类协议的管理。
 
正由于如此,WCF才可以提供服务之间的互操做性。WCF还为开发者提供了大多数应用程序都须要的基础功能模块,提升了开发者的效率。WCF的第一 个版本为服务开发提供了许多有用的功能,包括托管(Hosting)、服务实例管理(Service Instance Management)、异步调用、可靠性、事务管理、离线队列调用(Disconnected Queued Call)以及安全性。同时,WCF还提供了设计优雅的可扩展模型,使开发人员可以丰富它的基础功能。事实上,WCF自身的实现正是利用了这样一种可扩展 模型。本书的其他章节会专一于介绍这诸多方面的内容与特征。WCF的大部分功能都包含在一个单独的程序集System.ServiceModel.dll 中,命名空间为System.ServiceModel。
 
WCF是.NET 3.0的一部分,同时须要.NET 2.0的支持,所以它只能运行在支持它的操做系统上。目前,这些操做系统包括Windows Vista(客户端和服务器)、Windows XP SP2和Windows Server 2003 SP1以及更新的版本。
 

 
什么是Web API?
 
官方解释: 

 
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework. 
 

WebAPI体系结构-WebService, WCF, WebApi 的区别与应用
 
    
在图上能够看出来,Web API 与SignalR一块儿同为构建Service的框架。Web API负责构建http常规服务,而SingalR主要负责的是构建实时服务,例如股票,聊天室,在线游戏等实时性要求比较高的服务。 
  
为何要用Web API?
 
Web API最重要的是能够构建面向各类客户端的服务。另外与WCF REST Service不一样在于,Web API利用Http协议的各个方面来表达服务(例如 URI/request response header/caching/versioning/content format),所以就省掉不少配置。
 
WebApi 功能简介:
 
1.支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操做。
2.经过不一样的http动做表达不一样的含义,这样就不须要暴露多个API来支持这些基本操做。
3.请求的回复经过Http Status Code表达不一样含义,而且客户端能够经过Accept header来与服务器协商格式,例如你但愿服务器返回JSON格式仍是XML格式。
5.请求的回复格式支持 JSON,XML,而且能够扩展添加其余格式。
6.原生支持OData。
7.支持Self-host或者IIS host。
8.支持大多数MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。
 
什么地方须要用Web API?
 
当你遇到如下这些状况的时候,就能够考虑使用Web API了。
 
须要Web Service可是不须要SOAP
须要在已有的WCF服务基础上创建non-soap-based http服务
只想发布一些简单的Http服务,不想使用相对复杂的WCF配置
发布的服务可能会被带宽受限的设备访问
但愿使用开源框架,关键时候能够本身调试或者自定义一下框架
Web API 与MVC的区别
MVC主要用来构建网站,既关心数据也关心页面展现,而Web API只关注数据
Web API支持格式协商,客户端能够经过Accept header通知服务器指望的格式
Web API支持Self Host,MVC目前不支持
Web API经过不一样的http verb表达不一样的动做(CRUD),MVC则经过Action名字表达动做
Web API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,所以model binding/filter/routing等功能有所不一样 最后,
Web API很是适合构建移动客户端服务

 

WebService,WCF,WebApi区别与特色web

相关文章
相关标签/搜索