datasnap的restful服务器
说真话,这玩意真的简单好用。但你要控制好:
1、内存泄漏和异常处理好;
2、有没有发现,通过服务器对数据库进行读写时,在资源管理器中,如果是sql server,就会看到连接1433的连接一直挂在那里。好闹心。
说主题:因为采用get or post链接,将LifeCycle设置为'Invocation'。每次客户端获取数据时,就会产生读写数据库。在DSServerModuleDestroy的方法中加上
try FDManager.Active := False; // FDConnection1.Connected := False; // 尝试关闭数据库连接 一定要关闭,否则连接一直存在 // FDManager.Active := False; // 尝试停止 FireDAC 管理器 一定要关闭,否则链接时会出错 except on E: Exception do begin if Var_Log then PostLog(llError, 'Error closing connections or manager: ' + E.Message); end; end; if Var_Log then begin PostLog(llHint, 'FDConnection:close'); end;
如此简单,就会在资源管理器TCP中,再也看不到1433的链接了。
GOODLUCK!!!
补充:
在TServerContainer中,不要随随便便增加方法。 procedure TServerContainer.DSServerClass1DestroyInstance( DSDestroyInstanceEventObject: TDSDestroyInstanceEventObject); begin if Var_Log then begin PostLog(llHint, 'DSDestroyInstanceEventObject.free'); end; end; 就因为增加了追踪日记,导致流程跑偏了。 自以为聪明,在这里又追加执行DSDestroyInstanceEventObject的Destroy。晕透了。记得有人提出这个体会:不要随随便便增加代码,不要随随便便和陌生人说话
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2023-02-18 PG把多条记录合并成字符串,用逗号分隔
2023-02-18 sqlite把多条记录合并成字符串,用逗号分隔