WebService-架构浅析(一)
SOA(Service-Oriented Architecture) 面向服务框架SOA是一种思想,它将应用程序的不同功能单元,通过中立的契约(独立于硬件平台、操作系统和)联系起来,使得各种形式的功能单元个更好地集成。 而WebService则是SOA的一种较好的实现方式。SOA的形成如下图可以很清楚的看出来: 就目前的WebService的实现方式来说,主要有两种一种是基于SOAP协议的实现,一种是Rest风格的实现 SOAPSoap: (Simple Object Access Protocol) 简单对象存取协议,是WebService的特有协议,在WebService中作为传递消息的格式。 通过阅读W3C网站中关于Soap的介绍说明(http://www.w3.org/TR/soap12-af/),我们可以了解到以下几点: ① Soap其实是一个建立于HTTP上的上层协议(Wire Protocol电报协议,这里我觉得用上层协议更好一些) ② 使用Soap的目的是定义如何调用远程终端的中的服务(方法)。 ③ Soap中用多个NameSpace标准来区别各个远程服务。 ④ Soap中不仅可以封装简单的数据类型,还可以封装更加复杂的数据类型。 (P.S.由W3C网站上所提供的文档,我们可以了解到Soap封包的标准格式如下: HTTP报头(例如:POST /PWSDMO1.EXE/SOAP HTTP / 1.1) SOAPAction标签(指明了封包SOAP欲进行的工作。如:SOAPAction: “urn:FirstWSIntf-IFirstWS”) CR/LF标签(指明封包中XML的版本及编码所使用方法。如:<?xml version=”1.0” encoding=’UTF-8’?>) SOAP-Env:这里可以保存多个报头元素,即多个命名空间。用<SOAP-ENV:Body>开始,</SOAP-ENV:Body>结束 SOAP封包内容 ) 综上对SOAP我们可以理解为XML+HTTP并在之上的封装。 RestREST( Representation State Transfer),REST是一种软件架构模式,只是一种风格。 REST是基于HTTP协议的软件架构,它不像SOAP那样,SOAP本身承载着一种消息协议。 REST协议中重要的两个概念:(HTTP协议恰好完整地提供了这两个要点) -资源定位:HTTP协议中的URI可以完成资源定位; -资源操作:HTTP协议中的GET,POST,PUT,DELETE,HEAD请求报头可以完成资源操作。 总之它不仅把HTTP作为传输协议,也把HTTP作为数据处理工具。 SOAP和REST的比较1、成熟度(总的来说SOAP在成熟度上优于REST) SOAP虽然发展到现在已经脱离了初衷,但是对于异构环境服务发布和调用,以及厂商的支持都已经达到了较为成熟的情况。不同平台,开发语言之间通过SOAP来交互的webservice都能够较好的互通。 没有类似于SOAP的权威性协议作为规范,REST实现的各种协议仅仅只能算是私有协议,当然需要遵循REST的思想,但是这样细节方面有太多没有约束的地方。REST日后的发展所走向规范也会直接影响到这部分的设计是否能够有很好的生命力。 2、效率和易用性(REST更胜一筹) SOAP由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。 REST被人们的重视,其实很大一方面也是因为其高效以及简洁易用的特性。这种高效一方面源于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。同时,在我看来REST还有一个很吸引开发者的就是能够很好的融合当前Web2.0的很多前端技术来提高开发效率。 总结技术没有好坏,只有合适不合适,一种好的技术和思想被误用了,那么就会得到反效果。REST和SOAP各自都有自己的优点,同时如果在一些场景下如果去改造REST,其实就会走向SOAP。 下篇我们通过JDK内置的JAX-WS和JAX-RS来实现这两种形式的WebService。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |