Delphi rest getdatasnapWebModule

у меня что-то странное в моем приложении. Интересно, что я сделал не так или чего не понял.

Цель состоит в том, чтобы создать 2 функции в ServerMethodsUnit для изменения переменной веб-модуля.

Для этого,

Я использовал мастер Datasnap Rest Server со следующими параметрами

Автономное приложение VCL Gui Без авторизации, из Tdatamodule Методы сервера EchoString и ReverseString работают хорошо.

Сначала я добавил в WebModuleUnit1 переменную var1: string;

TWebModule1 = class(TWebModule)
DSHTTPWebDispatcher1: TDSHTTPWebDispatcher;
DSServer1: TDSServer;
DSServerClass1: TDSServerClass;
ServerFunctionInvoker: TPageProducer;
ReverseString: TPageProducer;
WebFileDispatcher1: TWebFileDispatcher;
DSProxyGenerator1: TDSProxyGenerator;
DSServerMetaDataProvider1: TDSServerMetaDataProvider;

procedure DSServerClass1GetClass(DSServerClass: TDSServerClass;
var PersistentClass: TPersistentClass);
procedure ServerFunctionInvokerHTMLTag(Sender: TObject; Tag: TTag;
const TagString: string; TagParams: TStrings; var ReplaceText: string);
procedure WebModuleDefaultAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModuleBeforeDispatch(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebFileDispatcher1BeforeDispatch(Sender: TObject;
const AFileName: string; Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
procedure WebModuleCreate(Sender: TObject);
private
{ Déclarations privées }
FServerFunctionInvokerAction: TWebActionItem;
function AllowServerFunctionInvoker: Boolean;
public
{ Déclarations publiques }
var1:string;
end;

Я добавил в ServerMethodsUnit1 2 функции в ServerMethodsUnit1

функция SetVar1 (астр: строка): строка; функция GetVar1 (): строка;

и использование Datasnap.DSHTTPWebBroker (интерфейс) и WebModuleUnit1 (реализация)

function TServerMethods1.GetVar1: string;
var oweb : TWebModule1;
begin
   oweb := TWebModule1(GetDataSnapWebModule);
   result := oweb.var1;
end;

function TServerMethods1.SetVar1(astr: string): string;
var oweb : TWebModule1;
begin
   oweb := TWebModule1(GetDataSnapWebModule);
   oweb.var1 := astr;
   result := oweb.var1;
end;

все казалось нормально!

Я тестирую свои 2 функции с помощью http: // локальный: xxxx / ServerFunctionInvoker

Все работает нормально, когда у меня только одно соединение с моим веб-сервером.

Когда у меня несколько подключений, это больше не работает. У меня сложилось впечатление, что переменная используется разными экземплярами WebModule.

Пример :

    Instance 1 (Chrome) -> SetVar1('TOTO')

    Instance 2 (Firefox) -> SetVar1('HELLO')

    Instance 1 (Chrome) -> GetVar1 : return 'TOTO'

    Instance 1 (Chrome) -> GetVar1 : return 'HELLO'

    Instance 1 (Chrome) -> GetVar1 : return ''

Если я запускаю одну и ту же функцию 3 раза, у меня не будет одинакового ответа !!!

Это как если бы функция GetDataSnapWebModule не вернула правильный веб-модуль.

Что я сделал не так?

Как разделить переменную (или TfdmemTable) между двумя вызовами функции rest

Спасибо заранее за вашу помощь.

@ + Ромуальд

Когда одновременно обслуживается более одного запроса / вызова, может быть несколько экземпляров вашего TWebModule.

Brian 30.04.2018 17:33

да, есть несколько экземпляров, но когда я многократно запускаю одну и ту же функцию rest (Getvar1) в одном и том же экземпляре, я не получаю тот же результат. Альтернативой было бы знать, как обмениваться данными между несколькими функциями отдыха. Где мне сохранить эти данные? Спасибо заранее за вашу помощь. @ + Ромуальд

Romuald Kler 01.05.2018 21:39

Вы можете записывать и читать общие данные из базы данных или из файла любым из ваших серверных методов.

nolaspeaker 02.05.2018 19:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
546
0

Другие вопросы по теме