君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

Web 服务的定义

Web 服务是一种新型的 Web 应用程序。它们是自适应、自我描述、模块化的应用程序,这些应用程序可以跨越Web 进行发表、定位和调用。

Web 服务所执行的功能可以是从简单的请求到复杂的商业过程中的任何事。简单的Web 服务可以提供股票报价或处理信用卡交易。一旦部署了 Web 服务,其它的应用 程序(及其它的 Web 服务)可以发现和调用所部署的服务

因为 Web 服务要满足所有这些需要,所以,有两个技术是关键的:

  1. XML 
    XML 对于 Web 中移动的结构化数据是非常重要的技术。如果 Web 要以可靠的、 自动的方式处理数据,那么 HTML 文档是满足不了此要求的。如果数据是以 XML 发送的,那么 Web 服务可以以不同的、有效的方式来处理这些数据。XML 的内容与表示的分离是很理想的。
  2. SOAP 
    SOAP,即简单对象访问协议,使用 XML 消息调用远程方法。Web 服务可以通过 HTTP 的 post 和 get 方法与远程的机器交互,但 SOAP 则更加强健和灵活。
 

Web 服务体系结构


 

在 Web 服务领域共有三个组件:

  1. 服务提供者 
    提供服务及维护注册表以使服务可用。
  2. 服务代理 
    为服务提供交换场所。服务代理充当服务提供者与服务请求者之间的中介。
  3. 服务请求者 
    与服务代理一起发现 Web 服务,然后调用这些服务以创建应用程序。

有三个 Web 服务操作:

  1. 发布/撤除发布 
    发布和撤除发布是指将服务发布至注册表(发布)或除去它们的一些项(撤除发布)。服务提供者联系服务代理来发布或不发布某个服务。
  2. 查找 
    查找操作由服务请求者和服务代理共同完成。服务请求者描述他们正在寻找的服务类型,而服务代理发布与请求最匹配的结果。
  3. 绑定 
    绑定操作发生在服务请求者和服务提供者之间。双方经过适当的商讨之后,请求者就可以访问和调用提供者所提供的服务。
 

Web 服务实现技术

对象界面描述: WSDL 
如果我们打算发布所有的 Web 服务,就需要有个描述它们的通用语言。 如果我正提供一个服务,就需要将其描述给其他人,如果我想使用一个服 务,就需要将我所寻找的服务描述出来。WSDL 就是基于此目的设计出来的。

对象访问: SOAP 
SOAP 提供一套标记来表示在 Web 上使用 HTTP 传输协议(从 SOAP 1.1 以来,SMTP 也可以) 发送的不同信息块的作用。但是,SOAP 向您提供的能力远远强于HTML。 使用 SOAP,您的程序向 SOAP 服务器发送“SOAP 请求”(一个简短的 XML 文档,描述在远程机器上要调用的方法和所有要传递给它的参数)。 SOAP 服务器将尝试用那些参数执行该方法,并将 SOAP 响应发回程序。响应可以是执行的结果,也可以是相应的错误消息。

对象界面发现: UDDI 
UDDI是用于 Web 服务注册信息的规范。正如我们已经讨论过的,发布后的Web 服务是可以相互被发现的;通过在UDDI的发布服务器中注册Web服务的信息,Web服务的请求者和代理可通过这个发布服务器找到它们所需要的服务。在发布服务器中,业务逻辑和服务都是以通用的XML 格式描述的。在这些 XML 中的结构数据很容易进行搜索、分析和处理。

对象实现: EJB, COM+, CORBA以及任何可用于对象实现的技术

 

SOAP 结构

SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单且轻量级的机制

SOAP envelope (SOAP信封)
SOAP encoding rules (SOAP编码规则)
SOAP RPC representation (SOAP RPC表示)
SOAP binding (SOAP绑定)

 

 

Request/Response Message 
Request 调用远端对象的某个方法 
Response 返回该方法运行后的输出结果

SOAP Message 结构 
SOAP 定义了一个“envelope”对象使用“envelope”包装消息,自身消息可以采用自身特定的XML词汇使用namespace来区分彼此。

SOAP例子:

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope">
<env:Header>
<ac:alertcontrol xmlns:ac="http://example.org/alertcontrol">
<ac:priority>1</ac:priority>
<ac:expires>2001-06-22 11:00am</ac:expires>
</ac:alertcontrol>
</env:Header>
<env:Body>
<alert:alert xmlns:alert="http://example.org/alert">
<alert:msg>上午11:30,发出计算机设备订货传真。</alert:msg>
</alert:alert>
</env:Body>
</env:Envelope>

 

 

Web Services Description Language(WSDL)

使用XML进行描述类似IDL, 不过是使用XML格式

描述了服务的操纵信息

Service Interface
Implementation Details
Access Protocol
Contact Endpoint

 

WSDL是早先技术的综合

IBM's NASSL
Microsoft's SDL

 

WSDL Elements

types: 描述将会使用的数据类型
message: 定义传入传出的消息格式
portType: 定义了一个入口的类型(使用了怎样的request/response消息对)
binding: 确定portType将会使用何种传输协议(SOAP/HTTP-POST/…)
port: 定义了一个关联某个binding的服务入口
service: 一组port组成的Web Service

 

 

Universal Description, Discovery and Integration(UDDI)

UDDI 注册中心包含了通过程序手段可以访问到的对企业和企业支持的服务所做的描述。此外,还包含对 Web 服务所支持的因行业而异的规范、分类法定义(用于 对于企业和服务很重要的类别)以及标识系统(用于对于企业很重要的标识)的引用。UDDI 提供了一种编程模型和模式,它定义与注册中心通信的规则。UDDI 规范中所有 API 都用 XML 来定义,包装在 SOAP 信封中,在 HTTP 上传输。

UDDI 消息的传输,通过 HTTP 从客户机的 SOAP 请求传到注册中心节点,然后再反向传输。注册中心服务器的 SOAP 服务器接收 UDDI SOAP 消息、进行处理,然后把 SOAP 响应返回给客户机。就注册中心条例而言,客户机发出的要修改数据的请求必须确保是安全的、经过验证的事务。

 

关于作者

IBM has authored this article

posted on 2013-05-15 18:39  刺猬的温驯  阅读(112)  评论(0编辑  收藏  举报