我刚开始REST开发,我正在创建一个简单的rest来请求客户端的数据库值。我使用了“different”项目助理(使用TIdHTTPWebBrokerBridge和WebModule创建不同的‘动作’)。它工作得很好,我可以向客户提出要求。
服务器WebModule包含一个FDConnection和一些FDQuery组件来进行数据库(MySQL)查询,每个操作都使用通过请求params获得的特定参数执行一个特定的查询。
客户端应用程序使用TRESTResponse、TRESTRequest、TRESRResponse组件来发送/接收数据。
例如:
每个查询都是“特定于用户的”。
好的,它起作用了,但由于我的rest/webbroker功能无知,现在我有些疑虑。
如果一次提出数以千计的请求怎么办?服务器能否响应不正确的数据,因为FDQuery游标在另一个记录中?还是webbroker为每个请求创建的查询没有问题?
在运行时为每个请求创建FDQuery并在请求完成后销毁它更好吗?
我昨天做了一个简单的测试,运行了三个客户端应用程序实例,同时向服务器发送了300个请求(来自每个客户端的100个请求),并且运行正常,接收到了正确的数据,但我不知道这是否足够保证。
这是正确的方法(Delphi应用程序)吗?与DataSnap有什么不同?
有什么建议吗?
发布于 2019-02-27 07:58:42
在Datasnap体系结构中(有几种风格,但它们都有一个共同的体系结构),“服务器”为每个客户端连接创建一个ServerMethodsUnit副本。这是将ServerClass.LifeCycle设置为Session的结果。因此,每个客户端将能够执行一个服务器方法并将结果返回给它,独立地将任何其他客户端可能请求的内容。
在您的示例中,每个ServerMethodsUnit都有自己的FdConnection、FdQuery等等,无论您将设计时组件放在那里还是在运行时实例化它们,结果都是一样的。
这里的限制将是Datasnap/WebBroker应用程序正在运行的硬件。(网络带宽、RAM、硬盘驱动器速度等)
在我看来,Datasnap (REST、DBX、独立、ISAPI、Apache、Linux)是客户机/服务器开发的坚实基础。
https://stackoverflow.com/questions/54882947
复制相似问题