Datasnap в 10.3 Rio несовместим с предыдущими версиями - PullRequest
2 голосов
/ 09 апреля 2019

У нас есть проблема с 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?

Есть ли другой способ реализовать эту функцию или есть обходной путь?

...