WebService,WCF,WebApi区别与特点

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

  
WCF和WEB API我该选择哪个?
 
  1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF
  2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。
  3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API
  4、当你想让你的服务用于浏览器、手机、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区别与特点

posted @ 2019-06-10 10:11  惜时、笃学  阅读(3474)  评论(0编辑  收藏  举报