Delphi的断开记录集/数据集

时间:2016-11-28 02:41:57

标签: delphi soap tclientdataset

我有一个用Delphi 7编写的3层应用程序,它使用基于WebBroker的SOAP服务器(独立的exe),SOAP客户端程序通过HTTPRIO组件进行通信。

这不是DataSnap应用程序。相反,服务器将数据作为ADTG格式的断开连接的ADO记录集发送到客户端,该记录集对应于传递给SOAP请求的SQL字符串。 (服务器首先对其进行压缩并将其转换为Base64,以便作为“字符串”结果轻松传输回客户端。)

我直接使用返回的记录集遍历其行和字段(即不需要使用DataSet组件),因为这是我很自在的事情,因为在Microsoft Access中使用VBA进行了多年的编程。 幸运的是,它也可以直接分配给TADODataset组件的Recordset属性,以便我可以将它绑定到QuickReport。

我现在想将我的客户端程序升级到FireMonkey,以便我可以为Windows和OSX编译它,并假设我将无法再使用ADO Recordsets,至少在Mac环境中不会。

在准备转换为FireMonkey时,我能做的最佳数据格式是什么 a)断开并“手动”传输, b)加载到数据集组件中,以便我可以在其上建立报告,以及 c)如果可能的话,在代码中处理数据而不必先将其加载到组件中?

这最后一项对我来说很重要,不仅因为我习惯于在不使用组件的情况下处理数据,而且因为我经常在线程中请求数据,以便在后台检索它而不会锁定用户界面。据我了解,组件和线程不会在一起。

关于最佳前进方向的任何建议?

1 个答案:

答案 0 :(得分:1)

我会发送一些每个表示值,例如真正的XML或JSON,而不是一些二进制base-64编码的内容。并切换到REST方法,这比SOAP更容易实现。

然后,您可以从JSON对象数组或JSON数组值中填充TDataSet(如果您不希望通过线路将列名称作为对象字段名称传输)。

JSON / REST的优势在于您可以重用相同的服务器逻辑,将其内容发布到HTML5 javascript客户端(移动或Web)或第三方应用程序或服务。