WebService:RESTvsSOAP万维网正在经历从海量数据到基于服务的演进,而Web服务是这一演进的重要组成部分。什么是网络服务?Web服务是两个设备通过万维网连接的一种方式。W3C给Web服务的定义是:一种支持机器与机器之间通过网络进行交互的软件系统。它有一个以机器可理解的格式(例如WSDL)表示的接口。它根据预定义的规则使用SOAP消息与其他系统进行交互,通常使用使用XML序列化的HTTP协议与其他系统进行通信。RoyFielding提出了一种更可靠的Web应用架构:RepresentationalStateTransfer(REST)。在REST风格中,请求和响应是围绕表示资源状态构建的。资源(例如:人)可以是位于的任何东西。资源的表示通常是表示资源当前或预期状态的文档(例如XML或JSON)。什么是SOAPSOAP是一种在实现Web服务时交换结构化信息的协议。它的消息格式使用XML。它独立于传输协议(可以使用HTTP、FTP、TCP、UDP或命名管道)。基于SOAP的服务严格定义了来回传递的消息的格式。SOAP消息包含数据和操作、标头信息以及失败的错误消息。安全标准由WS-Security提供,然后是端到端的。SOAP为服务提供了向客户端描述自身(WSDL)和发现(UDDI)的机制。SOAP还提供可靠的消息机制(WS-ReliableMessageing),内置重试并提供端到端的可靠机制。什么是RESTRepresentationalStateTransfer(REST)是一种用于设计网络应用程序的架构风格。关联的客户端和服务器分别发送请求和响应。请求和响应是围绕资源的表示传输构建的(例如用户的JSON请求表示)。REST将一切抽象为资源(如用户、股票等),每个资源实现一个标准的接口(通常是HTTP接口),资源有名称和地址(URI),每个资源有一个或多个表示(如JSON或XML),它们使用HTTP通过网络传送。RESTWebAPI(或RESTWeb服务)是使用HTTP和REST原则实现的WebAPI。RESTfulAPI更关注用户界面(而不是数据存储)。提供跨平台和简化的服务组件(无状态),客户端的每个请求都包含所有状态信息,服务器不会在会话中保存客户端的上下文。SOAP与RESTSOAP相比的主要优势之一是WSDL服务描述。可以自动发现服务并生成服务代理客户端。在2.0版本中,WSDL支持所有的HTTP动词,可以很好的提供RESTful服务文档,但是WSDL比较臃肿。HTTPS仅点对点地支持RESTful服务的安全性。缺乏标准的信息系统和异常处理。并且SOAP内置了成功/重试机制,提供了基于SOAP的端到端的可靠机制。RESTful服务的主要优点之一是其数据表示的灵活性,例如,您可以将数据序列化为XML或JSON格式。RESTfulAPI很容易理解,一个元素使用URI+HTTP动词。同时,RESTful服务也是轻量级的。与xml相比,没有额外的标签。调用RESTfulAPI时,您只需要一个浏览器或任何连接到Internet的设备。
