У нас есть проблема с Datasnap RESTfull, похоже, что она несовместима с 10.3 Рио и 10.2 Токио (и все ниже) в реализации функции Datasnap RESTfull.
Проблема:
У нас есть сервер, построенный на 10.2, который в настоящее время работает и обслуживает множество пользователей.Если мы обновим сервер сервером, скомпилированным с Delphi 10.3 Rio, текущий клиент 10.2 (Win, MacOS, iOS, Android) получит следующее сообщение об ошибке: Internal: Поле FValue не может быть найдено в типе TJSONString.
И наоборот, когда мы пробуем клиент, скомпилированный с Delphi 10.3 через текущий сервер (10.2), работающий на Amazon AWS, мы получаем следующее сообщение об ошибке: Internal: Поле FStrBuffer не может быть найдено в типе TJSONString.
Единственный способ получить работающую систему - это использовать клиент 10.3 с сервером 10.3.Но в настоящее время существует много пользователей, поэтому мы не можем изменить серверную часть и ожидаем одновременного обновления всех клиентов (настольных и мобильных).
Код на сервере:
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?
Есть ли другой способ реализовать эту функцию или есть обходной путь?