OpenSOAP Logo

OpenSOAP Project
The Middleware as Platform for IT Application Services

Menu

-首当其冲
-OpenSOAP
-推陈出新
-半部论语

-我要下载
-联袂合作
-友情链接

-温故知新
-捉虫在案
-雄心勃勃(Eng.)

-众里寻她
-联系
-Bugzilla

Japanese version
English version

OpenSOAP的构造

OpenSOAP的构造概述

OpenSOAP的构造如下图所示。

OpenSOAP Architecture

OpenSOAP由

三部分组成。

Client API与Client System�结合�负责SOAP请求信息(Envelope)的生成, �服务器提出服务要求及SOAP回答信息的解释。 服务器只要是SOAP兼容即可。

OpenSOAP服务器从由TransportInterface收到的SOAP信息中取得the method并将其传递给�应的服务程序。 根据情况, 它也许会将服务要求传给其他OpenSOAP 服务器, 或利用spool a response message� 来实�与客户的异步连接。

将�有的服务系统接到OpenSOAP 服务器上或其独立运转� 服务API可一个�有的服务系统成为Web Services。 服务API 收到SOAP请求�息后, 将解释它, 和产生应答信息。

另外, OpenSOAP 安全功能支持对证明局系统(公开密钥的取得, 注册), 和可能建立独立的证明局系统。

Client API

Client API由一组C 语言程序库提供。

OpenSOAP以缺省设置安装后, 需将/usr/local/include及/usr/local/lib分别追加到包含路径及程序库查找路径。 在编译服务程序时, 请指定程序库 -lOpenSOAPClient。 共�程序库系统需将/usr/local/lib追加成程序库查找路径。 OpenSOAP ver1.0使用客户API的OpenSOAPTransport来收发符合HTTP1.0 标准的�息。 有关OpenSOAP 客户API的编程方法请参考 编程指南

Service API

Service API亦由一组C 语言程序库提供。 除ClientAPI外, 还包含服务公开和注册用的API。

OpenSOAP API Structure

OpenSOAP以缺省设置安装后, 需将/usr/local/include及/usr/local/lib分别追加到包含路径及程序库查找路径。 在编译服务程序时, 请指定程序库-lOpenSOAPService -lOpenSOAPClient。
共�程序库系统需将/usr/local/lib追加成程序库查找路径。

OpenSOAP Service PI可以通过“标准输入输出方式”与OpenSOAP服务器通信� 及作为单体的inetd 服务, 亦可 通过一个CGI支持的http 服务器来以cgi方式工作。 另外�还可通过注多数的�� 来实�多种功能。

有关OpenSOAP 客户API的编程方法请参考 编程指南

OpenSOAP Server

OpenSOAP服务器支持Client/Service间的多对多运用。 此外�还有对应处理时间较长的服务的异步连接� 服务查寻�通过防火墙的服务器间的传送, 和OpenSOAP服务器自身认证安全等功能。

OpenSOAP服务器传输接口

OpenSOAP 服务器有一个独立运输接口。
Ver1.0 是CGI 组成的运输接口(soapInterface.cgi), 要求有一个CGI支持的http 服务器, 譬如 Apache。

服务注册

OpenSOAP服务器Ver1.0可使用标准I/O 或通过插口与服务程序连接到。
使用OpenSOAP 服务API开发服务程序时, 则须使用StdIO方式。
OpenSOAP 服务器与服务程序的连接方法由 OpenSOAP 配置文件目录内的SSML(SOAP Service Mapping Language)定义。 对每一服务程序都有做成SSML文件的必要。 当使用标准输入输出方式连接时� 服务程序的所在地点和可能选�均由SSML指定。此外, 当连接通过插口进行时, 服务程序必须登记作为inetd服务。
有关怎样登记inetd 服务及对SSML 的�细的描述参见 Please refer to this 服务器安装指南

异步处理

在OpenSOAP规格中�在请求被接受后及处理完成前� 服务器与Client的连接将被暂时切断。 服务处理结束后�其结果被暂时储存于服务器内� 直到再次来取为止。这就是所谓的异步处理。 OpenSOAP服务器收到Client的异步处理请求后� 会对Client发出一个具有独特ID号的返信。 处理结束后Client凭此ID号取出结果。

下例给出异步处理要求的头文件的记述方法。

  <SOAP-ENV:Header>
    <opensoap-header:opensoap-header-block 
    xmlns:opensoap-header="http://header.opensoap.jp/1.0/">
      <opensoap-header:ttl opensoap-header:type="second">80</opensoap-header:ttl>
      <opensoap-header:async>true</opensoap-header:async>
    </opensoap-header:opensoap-header-block>
  </SOAP-ENV:Header>

下例给出服务器发出的具有ID号的返信。

<?xml version="1.0" encoding="EUC-JP"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
encodingStyle="http://schemas.xml.soap.org/soap/encoding/">
  <SOAP-ENV:Header>
    <opensoap-header:opensoap-header-block 
    xmlns:opensoap-header="http://header.opensoap.jp/1.0/">
      <opensoap-header:message_id>
        Add.linux.opensoap.jp.2002102415243800001
      </opensoap-header:message_id>
    </opensoap-header:opensoap-header-block>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body/>
</SOAP-ENV:Envelope>

内部服务器间传送

依OpenSOAP规格�处理请求将在内部服务器间传送直至到达目的服务器为止。 OpenSOAP服务器在收到处理请求后�将参照SSML文件�如在该文件内无�关记述� 则表示本服务器无法完成处理�而将该处理要求传送给其他服务器。
目的传送服务器或在传送服务器的缺省文件)内给出� 或由Client的处理要求指定。
如传送上�及传送路径同时被指定�传送路径有先决权。

下例给出�关处理要求的记述示例。

传送上�指定时∶

  <SOAP-ENV:Header>
    <opensoap-header:opensoap-header-block 
    xmlns:opensoap-header="http://header.opensoap.jp/1.0/">
      <opensoap-header:ttl opensoap-header:type="second">80</opensoap-header:ttl>
      <opensoap-header:async>false</opensoap-header:async>
      <opensoap-header:forwarder>
        <opensoap-header:hopcount>2</opensoap-header:hopcount>
      </opensoap-header:forwarder>
    </opensoap-header:opensoap-header-block>
  </SOAP-ENV:Header>

传送路径制定时∶

  <SOAP-ENV:Header>
    <opensoap-header:opensoap-header-block 
    xmlns:opensoap-header="http://header.opensoap.jp/1.0/">
      <opensoap-header:ttl opensoap-header:type="second">80</opensoap-header:ttl>
      <opensoap-header:async>false</opensoap-header:async>
      <opensoap-header:forwarder>
        <opensoap-header:forward_path>
          http://fwdhost0.opensoap.jp/cgi-bin/soapInterface.cgi
        </opensoap-header:forward_path>
        <opensoap-header:forward_path>
          http://fwdhost1.opensoap.jp/cgi-bin/soapInterface.cgi
        </opensoap-header:forward_path>
      </opensoap-header:forwarder>
    </opensoap-header:opensoap-header-block>
  </SOAP-ENV:Header>


Copyright (C) 2001-2004 Webmasters of www.opensoap.jp. All Rights Reserved.
使用之前,请详细阅读版权声明