使用Android连接的Delphi XE2 DataSnap生命周期

使用Android连接的Delphi XE2 DataSnap生命周期,android,delphi,session,delphi-xe2,datasnap,Android,Delphi,Session,Delphi Xe2,Datasnap,我有一个带有DSServerClass.LifeCycle=Session的DataSnap服务器(公开TDSServerModule的下降类) 当客户端连接TDSServerModule时,会创建一个数据快照连接(隧道),并在会话结束时一直保留在内存中,这就可以了 当通过Android(移动连接)连接时,TDSServerModule通过调用(实例)创建/销毁。。这将创建一个REST连接 我有一个小的演示 有没有解决这个问题的办法 提前感谢,, 佩德罗·洛佩斯(Pedro Lopes)根据定义

我有一个带有DSServerClass.LifeCycle=Session的DataSnap服务器(公开TDSServerModule的下降类)

当客户端连接TDSServerModule时,会创建一个数据快照连接(隧道),并在会话结束时一直保留在内存中,这就可以了

当通过Android(移动连接)连接时,TDSServerModule通过调用(实例)创建/销毁。。这将创建一个REST连接

我有一个小的演示

有没有解决这个问题的办法

提前感谢,,
佩德罗·洛佩斯(Pedro Lopes)

根据定义,REST是无状态的。从以下文件:

对于REST客户端连接,如果在上使用了会话生命周期 服务器类,其行为类似于调用生命周期


这是故意的。你到底有什么问题?

谢谢,我的问题是读取一个大数据集。我有愚蠢的步骤:1-打开,准备;2-加载40行3-重复直到eof(),在这种情况下,您必须将状态从客户端传输到服务器。例如,使用输入参数StartRow和EndRow定义自定义servermethod,并返回包含所有行的相应数据集。这种技术被称为“增量抓取”。但在每次调用中启动查询都会降低。。。也许我必须将连接和查询存储在会话变量中。。。这是一个好的方法吗?很难正手说出什么是瓶颈。但若移动设备客户端需要数百行数据,那个么我认为重新考虑设计并不是一个坏主意。无论如何,Alister Christie有一段关于“在DataSnap REST服务器中保存状态”的精彩视频。祝你好运不要在会话中存储完整的数据集。您可以使用一个缓存来保存记录,以便所有会话都可以共享它。否则,您的服务器很快就会耗尽内存。尽可能避免会话数据。