DataSnap服务器-每个客户端请求共享DB连接或新连接



我有一个Delphi XE2 DataSnap服务器(Windows服务)连接到为REST客户端请求提供服务的后端MS SQL server 2008(同一服务器盒)
一段时间以来,一切都很好,直到最近,我遇到了一个问题,由于某种原因,DataSnap服务失去了与SQL Server的连接。

该服务无法重新建立连接,我不得不重新启动DataSnap服务才能继续
这让我思考,因为目前该服务只为所有客户端请求使用1个共享的SQL连接(TADOConnection)。我这样做是因为我不想为每个客户端请求实例化一个新的SQL连接带来开销。

我正在考虑为每个请求建立一个单独的SQL连接是否会更好,如果开销会很明显,有人能对此发表评论/建议吗?

这就是拥有一个构造良好的数据访问层的真正有用之处,该层可以进行修改以尝试不同的方法,并将数据库连接与代码的其余部分隔离开来。

如果您使用从客户端到DataSnap服务器的MIDAS(DataSnap),强烈建议使用池化方法(如mjn所建议的),因为我发现它有很大的连接开销。

我已经构建了一些web服务(流量相当低),它们在运行时使用普通的TADOConnection,并发现建立数据库连接的开销可以忽略不计,当然与从设备到服务器再返回的总体网络延迟相比
如果您发现TADOConnection在高流量环境中仍然会带来太多开销,那么您可以很容易地将自己的连接池添加到这样的系统中。

最新更新