XML-RPC 实现 JAVA 与 DELPHI 通信
XML-RPC 的全称是 XML Remote Procedure Call,即 XML 远程方法调用。它是 一套允许运行在不同操作
系统、不同环境的
程序实现基于 Internet 过程调用的规 范和一系列的实现。 这种远程过程调用使用 HTTP 作为传输协议, XML 作为传送信息的编码格式。 XML-RPC 的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据 结构。 XML-RPC 是
工作在 Internet 上的远程过程调用协议。 一个 XML-RPC 消息就是 一个请求体为 xml 的 http-post 请求,被调用的方法在服务器端执行并将执行结 果以 xml 格式编码后返回。 XML-RPC 实现对比 1、XML-RPC 同 SOAP 比较:由于 Delphi SOAP 客户端存在一些性能问题和同 Java 实现存在一些兼容性问题,因此考虑采用 XML-RPC 实现,而且 XML-RPC 实现同 SOAP 实现相比较,性能要好很多。 2、XML-RPC 同 SOCKET 比较:采用 HTTP 协议可以有效穿透不同
网络防火墙,中 间件可以做成基于 MVC 的 WEB 应用服务器; 采用 XML-RPC 主要考虑客户端改 动量小、中间件容易搭建、数据传输快、稳定性高。有成熟的框架可以使用,安 全可靠。 数据传输的类型说明 < string > 字符的一个序列 < int > 有符号或无符号 32-bit 整数值 < boolean > true(1)或 false(0) < double > 有符号双精度浮点数 < dateTime.iso8601 > 日期和时间(没有时区) < base64 > 一个 base64 编码的字符串 < array > 一个数据类型序列的容器(可递归) < struct > 一个关键字-值对的容器(可递归) Delphi 组件,可以直接加载的 XML 格式字符串 TclientDataSet
通信流程 请求开始->打包请求数据->发送请求数据->delphi 端阻塞等待->Java 端多线程响 应请求->解包请求数据->处理请求->打包处理结果->发送处理结果->delphi 端停 止阻塞接收处理结果->解包处理结果->显示结果 主要问题描述 1、如何将 Java 从数据库中读出来的数据打包成 TClientDataSet 可以读取的数据 包;要解决这个
问题就需要深入了解 TclientDataSet 的 DataPackage 的
xml 格式。 TclientDataSet 的 DataPackage 格式一般如下:
-
- -
IELD attrname="EDI_CODE3" fieldtype="fixed" WIDTH="38" /> -
2、如何将新增-修改-删除后的 TClientDataSet 数据通过
Java 保存到数据库中;要 解决这个问题就需要深入了解 TclientDataSet 的 Delta 属性。 DataPackage 的结构分析 整个 XML 定义了一个 DataPacket;DataPacket 包括两个部分:MetaData 和 RowData。MetaData 包括 Fields 和 Params,即包括数据字段定义和数据集参数。 RowData 为具体记录。 下面详细分析数据字段定义的方法。 Field 节点的定义主要包括: (1) attrname 指 FieldName (2) fieldtype 指字段类型 (3) width 指需要宽度的字段类型的宽度或数字的有效位数; (4) decimals 指小数点右边的位数; Oracle 主要字段类型具体的对应信息如下表:
OracleType Char Char(n) Varchar(n) Varchar2(n) datadate Number(s,p) Number(*,p) Number(s) Num