DataSnap服务器 - 按客户端请求共享数据库连接或新连接?

时间:2012-07-26 08:42:35

标签: sql delphi rest ado datasnap

我有一台Delphi XE2 DataSnap服务器(Windows服务)连接到服务REST客户端请求的后端MS SQL Server 2008(同一服务器盒)。 直到最近,一切都运行良好,我遇到了一个问题,由于某种原因,DataSnap服务失去了与SQL Server的连接。

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

我正在考虑为每个请求建立一个单独的SQL连接是否真的会更好,如果开销会很明显 - 是否可以对此进行评论/建议?

1 个答案:

答案 0 :(得分:3)

这是一个构造良好的数据访问层,可以修改以尝试不同的方法并将数据库连接与其余代码隔离开来,这非常有用。

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

我已经构建了一些在运行时使用普通TADOConnection的Web服务(相当低的流量),并且发现建立数据库连接的开销可以忽略不计,当然与从设备到网络的整体网络延迟相比服务器和后面。
如果您发现TADOConnection在高流量环境中仍然会产生过多的开销,您可以轻松地将您自己的连接池添加到这样的系统中。