OpenSOAP的构造
OpenSOAP的构造概述
OpenSOAP的构造如下图所示。

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由一组C 语言程序库提供。
OpenSOAP以缺省设置安装后, 需将/usr/local/include及/usr/local/lib分别追加到包含路径及程序库查找路径。
在编译服务程序时, 请指定程序库 -lOpenSOAPClient。
共�程序库系统需将/usr/local/lib追加成程序库查找路径。
OpenSOAP ver1.0使用客户API的OpenSOAPTransport来收发符合HTTP1.0 标准的�息。
有关OpenSOAP 客户API的编程方法请参考
编程指南。
Service API亦由一组C 语言程序库提供。
除ClientAPI外, 还包含服务公开和注册用的API。

OpenSOAP以缺省设置安装后,
需将/usr/local/include及/usr/local/lib分别追加到包含路径及程序库查找路径。
在编译服务程序时, 请指定程序库-lOpenSOAPService -lOpenSOAPClient。
共�程序库系统需将/usr/local/lib追加成程序库查找路径。
OpenSOAP Service PI可以通过“标准输入输出方式”与OpenSOAP服务器通信�
及作为单体的inetd 服务, 亦可
通过一个CGI支持的http 服务器来以cgi方式工作。
另外�还可通过注多数的��
来实�多种功能。
有关OpenSOAP 客户API的编程方法请参考
编程指南。
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.
使用之前,请详细阅读 版权声明。
|