最近在网上看了一个帖子: 主题: 客户端用delphi写,服务器端用java写,这样的模式是否可行呢? 其中用户 greateWei 的思路 提醒了我:使用 XML_RPC的方式 进行不同语言的交互。
以前在某软件公司做过 JAVA => XML => HTTP = >XML => DELPHI 的 系统,没有使用其他的技术,仅使用了 IDHTTP组件来获取XML。唯一的感觉就是构造过程比较麻烦,特别是构造 XML 时。现在用于有个组件了XML-RPC。 系统架构实现基于几点考虑: 1、XML-RPC同SOAP比较:由于Delphi SOAP客户端存在一些性能问题和同Java实现存在一些兼容性问题,因此考虑采用XML-RPC实现,而且XML-RPC实现同SOAP实现相比较,性能要好很多; 2、XML-RPC同SOCKET比较:采用HTTP协议可以有效穿透不同网络防火墙; 3、采用XML格式交换数据,而不采用XML-RPC标准格式交换数据,主要是由于XML-RPC格式比较简单,复杂的数据格式很难满足需求,直接使用对象XML数据流方式,有利于系统扩展; 今天小试了Apache XML-RPC:http://ws.apache.org/xmlrpc/,与 Delphi XML-RPC:http://sourceforge.net/projects/delphixml-rpc/ ,使用 Apache的 在 服务器 使用,而 Delphi 地作为客户端使用。发现了一个问题:使用 Delphi XML-RPC库时,不不支持中文。 通过GOOGLE 各种 信息,和 察看 Delphi XML-RPC库 的源代码,发现 其中的XML解析单元 LibXmlParser.pas 不支持 亚洲 字符集。于是产生了修改 XML解析单元 LibXmlParser.pas 的念头。 最后发现 问题出现在这几句: CurContent := CurContent + CHR (StrToIntDef ('$'+Copy (Name, 3, MaxInt), 32)) 和 CurContent := CurContent + CHR (StrToIntDef (Copy (Name, 2, MaxInt), 32)); 当 存在多字节字符 时,使用 CHR 就有问题。是用 WideChar 即可解决问题。 本文来源:http://blog.csdn.net/tanminr/archive/2007/08/10/1736007.aspx
|