我是REST开发的新手,我正在创建一个简单的rest API以从客户端请求数据库值。我使用了“ Delphi Web服务器应用程序”项目助手(使用TIdHTTPWebBrokerBridge和WebModule的助手,在其中创建了不同的“动作”)。它工作正常,我可以向客户提出请求。
服务器WebModule包含一个FDConnection和一些FDQuery组件以进行数据库(MySQL)查询,并且每个Action都会执行一个特定的查询,并使用通过请求参数获得的特定参数进行
。客户端应用程序使用TRESTResponse,TRESTRequest和TRESRResponse组件发送/接收数据。
例如:
每个查询都是“特定于用户的”。
好的,可以,但是现在由于我的休息/网络经纪人对无知功能的了解,我有些疑虑。
如果一次发出数千个请求怎么办?由于FDQuery游标在另一个记录中,服务器能否响应不正确的数据? 还是webbroker毫无问题地为每个请求创建查询?
在运行时为每个请求创建FDQuery并在请求完成后销毁它更好吗?
我昨天做了一个简单的测试,运行三个客户端应用程序实例,并同时向服务器发送300个请求(每个客户端100个),并且该服务器正常工作,接收正确的数据,但是我不知道这是否足以保证
这(Delphi Web服务器应用程序)是建立服务器的正确方法吗?与DataSnap有什么区别?
有什么建议吗?
答案 0 :(得分:0)
在Datasnap体系结构中(有几种口味,但是它们都有共同的体系结构),“服务器”为每个客户端连接制作ServerMethodsUnit的1个副本。 ServerClass.LifeCycle
设置为Session
。因此,每个客户端都可以执行服务器方法,并独立地返回任何其他客户端可能请求的结果。
在您的情况下,每个ServerMethodsUnit
都将拥有自己的FdConnection
,FdQuery
,依此类推,如果您将设计时组件放在其中或在运行时实例化它们,后果就是一样。
这里的限制是运行Datasnap / WebBroker应用程序的硬件。 (网络带宽,RAM,硬盘速度等)
我认为Datasnap(REST,DBX,独立,ISAPI,Apache,Linux)是客户端/服务器开发的良好基础。