RO40 – 支持XML-RPC

 
RO40 – 支持 XML-RPC                                RO40 – 支持XML-RPC_第1张图片
 RemObjects SDK 的一个大特性就是可以添加新的消息和传输类型 ( RO01 文档中查看更多关于 RemObjects SDK 的架构信息 ). 这使得可以轻松的添加支持 XML-RPC 的新消息类型 .
XML-RPC 是基于 XML 的远程过程调用规范 , 如同 SOAP, 虽然尽量简单实现 , 还是支持一下复杂数据结构 . 由于简单易用 , 所以已经用很多编程语言实现 , 包括 C, Perl, PHP, Java, Javascript , Python, Delphi .NET (RemObjects SDK 支持最后两者 ).
XML-RPC 通常使用 HTTP 所以对防火墙是友好的 . 当调用支持 XML-RPC 接口的服务时 , 将生成一个 XML 文档 . XML-RPC 请求内容如下 :
< methodCall >
 < methodName > samples.sum </ methodName >
 < params >
    < param >< value >< int > 5 </ int ></ value ></ param >
    < param >< value >< int > 3 </ int ></ value ></ param >
 </ params >
</ methodCall >
这是一个包含方法名称和参数的简单 XML 文档 , 本例中含有两个整数 ,5 3. 远程服务将读取这个请求 , 并作处理 ( 例如将两个值相加 ) 然后生成一个包含运行结果的响应 XML 文档 . 响应如下 :
< methodResponse >
 < params >
    < param >< value >< int > 8 </ int ></ value ></ param >
 </ params >
</ methodResponse >
支持下面的类型 :
  • integer
  • Boolean
  • string
  • double
  • date/time (iso8601格式)
  • base64 编码的流
  • 包含简单类型,数组或结构的一维数组
  • 包含名称/值对的结构体.其中值可以是数组,简单类型或结构体
而且 , 当处理请求时发生错误方法也可以返回异常 .
RemObjects SDK 将这些类型封装为适当的 XML-RPC 类型 ; 或作为字符串传递 . SDK 实现的 XML-RPC 可以用于写 XML-RPC 客户端也可以写 XML-RPC 服务端 .
通常当客户端或服务端不想使用冗长的 SOAP 技术时才使用 XML-RPC 做简单的远程调用 , 但是还是使用标准的通讯方式 .
支持对 PHP 客户端的代码生成 - new in 'Vinci'
我们的 XML-RPC 包含 Service Builder 代码生成插件 , 可以生成用于 PHP .inc 文件 . 由于 XML-RPC 不像 WSDL SOAP 服务一样有元数据 , 所以必须提供 XML-RPC 的服务声明 . 如果人工做 , 每个方法的 xmlrpcmsg 和每个参数的 xmlrpcval 都需要手动添加 , 非常容易出错 .
Service Builder 插件可以使其基于 PHP XML-RPC (http://phpxmlrpc.sourceforge.net/) 生成包含服务 , 类型 , 方法的 PHP .
Service Builder 中打开包含服务的 RODL 文件 , 点击主菜单的 CodeGen | PHP | Xml Rpc Interface . 将生成可以用 require or include 命令 包含在 PHP 页面中的简单的 .inc 文件 .
RO40 – 支持XML-RPC_第2张图片
PHP 页面中你可以轻松的调用服务 :
require ("SampleLibrary_intf.inc");
 
$service = new NewService('http://localhost:8099/xmlrpc');
echo "Passing 15, 12 to the remote XML-RPC server. Result: ";
echo $service->Sum(15, 12);
RO40 – 支持XML-RPC_第3张图片
调用非 RemObjects SDK XML-RPC 服务
XML-RPC 没有向 RODL WSDL 格式的元数据 , 所以使用没有用 RemObjects SDK 实现的 xml-rpc 服务 , 你需要手动在 Service Builder 中重建方法定义 , 然后使用 CodeGen 菜单生成相关语言 (Delphi, .NET PHP) 的接口 .
 
 

你可能感兴趣的:(PHP,xml,service,文档,SOAP,Delphi)