Web Service--入门

来源:互联网 发布:在职法律硕士 知乎 编辑:程序博客网 时间:2024/06/05 06:20

Web服务只是一个概念,他的系统架构和实现完完全全继承已有技术的,是现有应用的面向Internet的一个延伸。

 

为什么需要Web服务?

务实和追求经济利益是电子商务的需求。然而目前广泛应用的电子商务应用的体系架构使得这一商业需求很难实现,复杂的应用连接和程序代码造成了应用的高维护代价和更新代价。而作为现有技术的革新(而不是革命)的Web服务却正好能解决这一问题,成为目前应用环境中比较合理的解决方案。

 

什么是Web服务?

 

Web对象

从外部的使用者的角度而言,Web服务是一种部署在Web上的对象/组件,它具备以下特征:

完好的封装性Web服务既然是一种部署在Web上的对象,自然具备对象的良好封装性,对于使用者而言,他能且仅能看到该对象提供的功能列表。

松散耦合,这一特征也是源于对象/组件技术,当一个Web服务的实现发生变更的时候,调用者是不会感到这一点的,对于调用者来说,只要Web服务的调用界面不变,Web服务的实现任何变更对他们来说都是透明的,甚至是当Web服务的实现平台从J2EE迁移到了.NET或者是相反的迁移流程,用户都可以对此一无所知。对于松散耦合而言,尤其是在Internet环境下的Web服务而言,需要有一种适合Internet环境的消息交换协议。而XML/SOAP正是目前最为适合的消息交换协议。

使用协约的规范性,这一特征从对象而来,但相比一般对象其界面规范更加规范化和易于机器理解。首先,作为Web服务,对象界面所提供的功能应当使用标准的描述语言来描述(比如WSDL);其次,由标准描述语言描述的服务界面应当是能够被发现的,因此这一描述文档需要被存储在私有的或公共的注册库里面。同时,使用标准描述语言描述的使用协约将不仅仅是服务界面,它将被延伸到Web服务的聚合、跨Web服务的事务、工作流等,而这些又都需要服务质量(QoS)的保障。其次,我们知道安全机制对于松散耦合的对象环境的重要性,因此我们需要对诸如授权认证、数据完整性(比如签名机制)、消息源认证以及事务的不可否认性等运用规范的方法来描述、传输和交换。最后,在所有层次的处理都应当是可管理的,因此需要对管理协约运用同样的机制。

使用标准协议规范,作为Web服务,其所有公共的协约完全需要使用开放的标准协议进行描述、传输和交换。这些标准协议具有完全免费的规范,以便由任意方进行实现。一般而言,绝大多数规范将最终有W3COASIS作为最终版本的发布方和维护方。

高度可集成能力。由于Web服务采取简单的、易理解的标准Web协议作为组件界面描述和协同描述规范,完全屏蔽了不同软件平台的差异,无论是CORBADCOM还是EJB都可以通过这一种标准的协议进行互操作,实现了在当前环境下最高的可集成性。

 

Web Service "Stack"

我们已经了解到为了完成在松散耦合的环境下的对象访问,以及在基本对象访问之上的诸如事务、工作流、安全机制等。实现一个完整的Web服务体系需要有一系列的协议规范来支撑。

 Web Service"stack"

其中,绿色部分是先前已经定义好的并且广泛使用的传输层和网络层的标准:IP、HTTP、SMTP等。而蓝色部分是目前开发的Web服务的相关标准协议,包括服务调用协议SOAP、服务描述协议WSDL和服务发现/集成协议UDDI,以及服务工作流描述语言WSFL。而橙色部分描述的是更高层的待开发的关于路由、可靠性以及事务等方面的协议。黄色部分是各个协议层的公用机制,这些机制一般由外部的正交机制来完成。

从以上这个技术层次图我们看以看到,Web服务追求的第一目标是简单性。可能大家会觉得很奇怪,有那么多协议,怎么能说他简单。

首先,这些协议本身都是简单的,无论是HTTP,FTP等传统的TCP/IP系统的网络协议,还是SOAP, WSDL, UDDI,WSFL等基于XML的协议,他们设计原则中的一个最重要点就是力求简单性。相信大家如果对XML、SOAP等有深入了解的话,一定会深深体会这一点。

其次,一个可以使用的Web服务应当按照需要选用若干层次的功能,而无需所有的特性。比如在目前状况下,一个简单应用可能只要使用WSDL/SOAP就可以架构一个符合规范的Web服务了。

最后,所有的机制完全是基于现有的技术,并没有创造一个完全的新体系。无论是IPv4、HTTP、FTP这些现有的网络协议,还是SOAP、WSDL等这些基于XML而定义的协议都是遵循着一个原则:继承原有的被广泛接受的技术,这样才能使得Web服务被广泛接受。

 

SOAP:一个基于XML的可扩展消息信封格式,需同时绑定一个传输协议。这个协议通常是HTTP或HTTPS、SMTP、XMPP。

 

WSDL:一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。比如JAVA语言的wsdl2java工具。

 

UDDI:一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEBService。

 

 

调用过程:

1.发布: Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;

2.发现: Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;

3.发现: Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;

4.绑定:利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;

5.绑定: Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。

 

使用Web Service的方式

 

远端过程调用

WebService提供一个分布式函数或方法接口供用户调用,这是一种比较传统的方式。通常,在WSDL中对RPC接口进行定义。尽管最初的WebService广泛采用RPC这种方式部署,但是针对其过于紧密之耦合性的批评声也络绎不绝。原因是RPC式的WebService服务是利用一个简单的映射,把用户请求直接转换为一个特定语言编写的函数或方法。

面向服务架构

相比RPC式的WebService,面向服务架构(SOA)得到了大部分主要软件供应商以及业界专家的支持和肯定。因为SOA方式更加关注如何去连接服务而不是去特地某个实现的细节。

REST式服务

表达性状态转移(Representational statetransferREST)类似于HTTP协议,REST把接口限定在一组HTTP操作中,比如GTPPUTDELETE等以供调用,此种服务可以通过WSDL来描述SOAP消息内容,通过HTTP限定动作接口;或者完全在SOAP中对动作进行抽象。

 

小结:

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

 

 

 

 

 

0 0
原创粉丝点击