我们对 Datasnap RESTfull 有一个问题,它似乎在 10.3 Rio 和 10.2 Tokyo(以及以下所有版本)之间关于 Datasnap RESTfull 功能实现不兼容。
问题:
我们有一台服务器,使用 10.2 构建,目前正在运行并为大量用户提供服务。如果我们用 Delphi 10.3 Rio 编译的服务器更新服务器,当前的 10.2 客户端(Win、MacOS、iOS、Android)会收到以下错误消息:内部:在 TJSONString 类型中找不到字段 FValue。
相反,当我们通过运行在 Amazon AWS 上的当前服务器 (10.2) 尝试使用 Delphi 10.3 Rio 编译的客户端时,我们收到以下错误消息:Internal: Field FStrBuffer cannot be found in type TJSONString。
拥有工作系统的唯一方法是使用 10.3 客户端和 10.3 服务器。但是,目前有很多用户,因此我们无法更改服务器部分并期望同时更新所有客户端(桌面和移动)。</p>
服务器上的代码:
function TServerMethods1.GetMembers: TFDJSONDataSets;
begin
sCurrentDBName := aDBName;
FDQueryMEMBERS.Close;
Result := TFDJSONDataSets.Create;
TFDJSONDataSetsWriter.ListAdd(Result, StrMEMBERS, FDQueryMembers);
end;
客户端上的代码:
procedure TMemberServer.GetMembers;
var
aDataSetLists: TFDJSONDataSets;
begin
aDataSetLists := ServerMethods.GetMembers(sDBName);
FDMemTableMembers.Active := false;
FDMemTableMembers.AppendData(TFDJSONDataSetsReader.GetListValue(aDataSetLists, 0));
end;
调查:
在 10.3 版本中System.JSON
,FValue
实现了但没有实现FStrBuffer
。
在 10.2 版本中System.JSON
,FStrBuffer
实现了但没有实现FValue
。
问题:
我们可以做些什么来保持当前的 10.2 用户正常工作并且还能够使用 10.3 Rio 更新服务器?
是否有另一种方法来实现此功能或是否有解决方法?