Delphi Rest客户端/服务器(Webbroker)+数据库+客户端同时请求

时间:2019-02-26 10:04:45

标签: rest delphi webbroker

我是REST开发的新手,我正在创建一个简单的rest API以从客户端请求数据库值。我使用了“ Delphi Web服务器应用程序”项目助手(使用TIdHTTPWebBrokerBridge和WebModule的助手,在其中创建了不同的“动作”)。它工作正常,我可以向客户提出请求。

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

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

例如:

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

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

好的,可以,但是现在由于我的休息/网络经纪人对无知功能的了解,我有些疑虑。

如果一次发出数千个请求怎么办?由于FDQuery游标在另一个记录中,服务器能否响应不正确的数据? 还是webbroker毫无问题地为每个请求创建查询?

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

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

这(Delphi Web服务器应用程序)是建立服务器的正确方法吗?与DataSnap有什么区别?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在Datasnap体系结构中(有几种口味,但是它们都有共同的体系结构),“服务器”为每个客户端连接制作ServerMethodsUnit的1个副本。 ServerClass.LifeCycle设置为Session。因此,每个客户端都可以执行服务器方法,并独立地返回任何其他客户端可能请求的结果。

在您的情况下,每个ServerMethodsUnit都将拥有自己的FdConnectionFdQuery,依此类推,如果您将设计时组件放在其中或在运行时实例化它们,后果就是一样。

这里的限制是运行Datasnap / WebBroker应用程序的硬件。 (网络带宽,RAM,硬盘速度等)

我认为

Datasnap(REST,DBX,独立,ISAPI,Apache,Linux)是客户端/服务器开发的良好基础。