首页 > 主页 > tongfuapi
日志:17 评论:0
北京, 东城
TFAPI的WebService第二版设计

新版本的WebService采用了PHP自带的SOAP扩展里的两个对象SoapClient和SoapServer来完成WebService的客户端和服务器端的功能,改造后的WebService包括了WSDL文件的自动生成,以及标准的SOAP接口可以与其他项目的SOAP进行无缝对接

重要:
1、新旧版本是互相不兼容的,我们需要选择一个版本来使用,并且新版本需要PHP的SOAP扩展模块支持
2、当然旧版本的好处是我们的PHP环境里可以没有SOAP扩展模块,而且对接口有一定的保护性


新版本的对象包

新版本使用了 common_webservice2 这个新的对象包,如果我们要使用新版本需要引用这个对象包。

当然我们提供了一个从外部进行新旧版本选择的常量 TFAPI_SERVICE2 如果在 config.inc 里定义了这个常量的话,系统将自动选择 common_webservice2 来作为默认的 webservice 支持

新版本开发Web服务的变化

新版本开发Web服务基本没有任何变化,区别在于初始化的时候的代码有了一些变化,以下是新旧代码对比:

旧版本初始化代码:

$webServiceProcObj = new tf_webservice_process_articles($this->dbObj, $this->pageObj);
$webServiceSrvObj = new tf_webservice_server($this->pageObj);
$webServiceSrvObj->start($webServiceProcObj);
新版本初始化代码:

$webServiceProcObj = new tf_webservice_process_articles($this->dbObj, $this->pageObj);
$webServiceSrvObj = new tf_webservice_server($this->pageObj, array(
        'serviceName'=>"articles",
        'serviceFilePath'=>__FILE__
    ));
$webServiceSrvObj->start($webServiceProcObj);
可以看出来新版本只是在旧版本的基础之上增加了两个参数,一个是Web服务的名称,一个是Web服务程序文件的路径。

新版本调用Web服务的变化

新版本调用Web服务的时候需要在初始化Web服务对象实例的时候将原来的Web服务Url地址后面加上 wsdl 参数,以下是新旧代码对比:

旧版本调用代码:

$soapClntObj = new tf_webservice_client("http://localhost/webservices/articles.php");
$soapClntObj->LoadInfo(123);
新版本调用代码:

$soapClntObj = new tf_webservice_client("http://localhost/webservices/articles.php?wsdl");
$soapClntObj->LoadInfo(123);
最后,我们总结一下新版本增加了哪些特性:

  • 新版本改成了标准的SOAP接口格式,可以与其他基于SOAP协议的程序进行无缝对接,包括其他语言开发的SOAP接口

  • 新版本依赖PHP环境扩展SOAP模块,从而直接使用了系统的代码,效率更高

  • 新版本通过标准SOAP的wsdl文档进行严格的格式控制,对Web服务的严谨性更有帮助