欢迎来到天天文库
浏览记录
ID:8977292
大小:32.83 KB
页数:3页
时间:2018-04-13
《rest技术调研三种流行的web服务架构》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、REST技术调研,三种流行的WEB服务架构SOAPRPCoverHTTP面向服务的架构(面向消息)。简单对象访问协议(SOAP,全写为SimpleObjectAccessProtocol)是一种标准化的通讯规范,主要用于Web服务(webservice)中。SOAP的出现是为了简化网页服务器(WebServer)在从XML数据库中提取数据时,无需花时间去格式化页面,并能够让不同应用程序之间透过HTTP通讯协定,以XML格式互相交换彼此的数据,使其与编程语言、平台和硬件无关。XMLRPCoverHTTP远程过程调用(
2、面向方法)。这种远程过程调用使用HTTP作为传输协议,XML作为传送信息的编码格式。XML-RPC的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML-RPC是工作在Internet上的远程过程调用协议。一个XML-RPC消息就是一个请求体为XML的HTTPPOST请求,被调用的方法在服务器端执行并将执行结果以XML格式编码后返回。RESToverHTTP面向资源。REST设计原则显式地使用HTTP方法基于REST的Web服务的主要特征之一是以遵循RFC2616定义的协议的方式显式使用HTTP
3、方法。例如,HTTPGET被定义为数据产生方法,旨在由客户端应用程序用于检索资源以从Web服务器获取数据,或者执行某个查询并预期Web服务器将查找某一组匹配资源然后使用该资源进行响应。REST要求开发人员显式地使用HTTP方法,并且使用方式与协议定义一致。这个基本REST设计原则建立了创建、读取、更新和删除(create,read,update,anddelete,CRUD)操作与HTTP方法之间的一对一映射。根据此映射:•若要在服务器上创建资源,应该使用POST方法。•若要检索某个资源,应该使用GET方法。•若要
4、更改资源状态或对其进行更新,应该使用PUT方法。•若要删除某个资源,应该使用DELETE方法。无状态设计RESTWeb服务需要扩展以满足日益提高的性能要求。具有负载平衡和故障转移功能、代理和网关的服务器集群通常以形成服务拓扑的方式进行组织,从而允许根据需要将请求从一个服务器路由到另一个服务器,以减少Web服务调用的总体响应时间。要使用中间服务器扩大规模,RESTWeb服务需要发送完整、独立的请求;也就是说,发送的请求包括所有需要满足的数据,以便中间服务器中的组件能够进行转发、路由和负载平衡,而不需要在请求之间在本地
5、保存任何状态。完整、独立的请求不要求服务器在处理请求时检索任何类型的应用程序上下文或状态。RESTWeb服务应用程序(或客户端)在HTTPHeader和请求正文中包括服务器端组件生成响应所需要的所有参数、上下文和数据。这种意义上的无状态可以改进Web服务性能,并简化服务器端组件的设计和实现,因为服务器上没有状态,从而消除了与外部应用程序同步会话数据的需要。服务器1.生成响应,其中包括指向其他资源的链接,以使得应用程序可以在相关资源之间导航。此类响应嵌入了链接。类似地,如果请求是针对父或容器资源,则基于REST的典型
6、响应还可能包括指向父资源的子资源或从属资源的链接,以便这些资源保持连接在一起。2.生成响应,其中指明了是否可缓存,以通过减少针对重复资源的请求数量或通过完全消除某些请求来改进性能。服务器通过包括Cache-Control和Last-Modified(日期值)HTTP响应Header实现此目的。客户端应用程序1.使用Cache-Control响应Header确定是否缓存资源(创建资源的本地副本)。客户端还读取Last-Modified响应Header,并在If-Modified-SinceHeader中发回日期值,以
7、向服务器询问资源是否已更改。这称为条件GET(ConditionalGET),两个Header同时进行,因为服务器的响应为标准304代码(NotModified),如果请求的资源自从该时间以后尚未更改,则省略实际的资源。HTTP响应代码304意味着客户端可以安全地将资源表示形式的缓存本地副本作为最新版本使用,从而实际上跳过了后续GET请求,直到资源更改为止。2.发送可独立于其他请求得到服务的完整请求。这要求客户端充分利用Web服务接口指定的HTTPHeader,并在请求正文中发送完整的资源表示形式。客户端发送的请求
8、极少对先前的请求、某个会话在服务器上的存在性、服务器向请求添加上下文的能力或请求之间保留的应用程序状态做出假设。客户端应用程序与服务之间的这种协作对于基于REST的Web服务中的无状态性极为重要。它通过节省带宽和最小化服务器端应用程序状态改进了性能。有状态设计在JavaPlatform,EnterpriseEdition(JavaEE)环境中,有状态的服务需
此文档下载收益归作者所有