首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi客户机/服务器(webbroker) +数据库+同时客户端请求

Delphi客户机/服务器(webbroker) +数据库+同时客户端请求
EN

Stack Overflow用户
提问于 2019-02-26 10:04:45
回答 1查看 1.9K关注 0票数 0

我刚开始REST开发,我正在创建一个简单的rest来请求客户端的数据库值。我使用了“different”项目助理(使用TIdHTTPWebBrokerBridge和WebModule创建不同的‘动作’)。它工作得很好,我可以向客户提出要求。

服务器WebModule包含一个FDConnection和一些FDQuery组件来进行数据库(MySQL)查询,每个操作都使用通过请求params获得的特定参数执行一个特定的查询。

客户端应用程序使用TRESTResponse、TRESTRequest、TRESRResponse组件来发送/接收数据。

例如:

  • 客户端请求为特定用户提供一些值,将“user = user1”和"passwd =*“作为请求params发送。
  • 服务器执行查询"select * from xxx其中user = user1和passwd = ...….“并将响应发送给客户端。

每个查询都是“特定于用户的”。

好的,它起作用了,但由于我的rest/webbroker功能无知,现在我有些疑虑。

如果一次提出数以千计的请求怎么办?服务器能否响应不正确的数据,因为FDQuery游标在另一个记录中?还是webbroker为每个请求创建的查询没有问题?

在运行时为每个请求创建FDQuery并在请求完成后销毁它更好吗?

我昨天做了一个简单的测试,运行了三个客户端应用程序实例,同时向服务器发送了300个请求(来自每个客户端的100个请求),并且运行正常,接收到了正确的数据,但我不知道这是否足够保证。

这是正确的方法(Delphi应用程序)吗?与DataSnap有什么不同?

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-27 07:58:42

在Datasnap体系结构中(有几种风格,但它们都有一个共同的体系结构),“服务器”为每个客户端连接创建一个ServerMethodsUnit副本。这是将ServerClass.LifeCycle设置为Session的结果。因此,每个客户端将能够执行一个服务器方法并将结果返回给它,独立地将任何其他客户端可能请求的内容。

在您的示例中,每个ServerMethodsUnit都有自己的FdConnectionFdQuery等等,无论您将设计时组件放在那里还是在运行时实例化它们,结果都是一样的。

这里的限制将是Datasnap/WebBroker应用程序正在运行的硬件。(网络带宽、RAM、硬盘驱动器速度等)

在我看来,Datasnap (REST、DBX、独立、ISAPI、Apache、Linux)是客户机/服务器开发的坚实基础。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54882947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档