delphi xe3 的datasnap 性能和稳定性真的这么差吗?

hero0101 2013-02-01 03:35:48
有个应用要做成分布式的,客户端数目500左右。

尝试用XE3的 Datasnap 开发应用服务器,后台数据库sql 2008.

测试说明:
1、服务器架在局域网的一台 dell 小型服务器上。

2、客户端测试程序 Test.exe ,就一个按钮:
SQLConnection1.DriverName := 'DataSnap';
SQLConnection1.Params.Clear;
SQLConnection1.Params.Values['CommunicationProtocol'] := cbbProtocol.Text;
SQLConnection1.Params.Values['HostName'] := cbbHostName.Text;
SQLConnection1.Params.Values['UserName'] := '';
SQLConnection1.Params.Values['Password'] := '';
SQLConnection1.Params.Values['Port'] := editPort.Text;

for i := 1 to 100 do
begin
SQLConnection1.Open;

ClientDataSet1.Close;
ClientDataSet1.DataRequest(MemoSql.Text);
ClientDataSet1.Open;

SQLConnection1.Close;
end;

sql语句执行的结果是取得 3600 条数据,字段数 8 个。单个客户端执行的话没有问题,同时启动300个客户端的时候,很难稳定执行。要么,拒绝连接,要么 Login 超时,要么直接服务器内部错误,一旦出现内部错误,客户端就再也连接不上了。服务器端的 PoolSize 已经设置为 1200 了。

我的意思是,服务器可以很忙,可以让客户端程序等待,但是绝对不能出现错误,我之前用过C#的 Remoting 和 WCF 做过类似测试,很稳定。

有哪位用过 Delphi 2010 版本以后的 Datasnap,出来指点一下。
...全文
3176 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jizza 2015-07-15
  • 打赏
  • 举报
回复
新手拜帖学习,继续呀,我还等着下文呢
jialiu830205 2014-06-24
  • 打赏
  • 举报
回复
你代码写得明显有问题,你在循环中对数据库频繁开闭效率肯定不高,另外,你应该在服务器端把结果处理完,然后只把最轻量的数据返回给客户端来做显示。
lpfcqf 2013-06-24
  • 打赏
  • 举报
回复
datasnap主要适合于轻量级的应用。重量级的还是力不从心。 不过在轻量级的应用领域,感觉还是不错的。
lyhoo163 2013-05-05
  • 打赏
  • 举报
回复
我用了,很稳定,主要是代码的效率如何。
sztony 2013-05-04
  • 打赏
  • 举报
回复
把连接方式设为:INVOCATION, 默认为:SESSION 采用线程池体系结构, 估计会有大的改善。
talen_lu 2013-03-29
  • 打赏
  • 举报
回复
我用了,还是很稳定的, 楼上说得对。
「已注销」 2013-03-28
  • 打赏
  • 举报
回复
如果200个人同时请求3600条数据,而服务器如果产生200个线程去取,如果数据库连接驱动不合理,直接提交10M的socket接收,系统的锁定页面内存池和非页面内存池很容易用尽。导致内核执行失败,各种未知问题都会出现。。。。 做三层要想工业强度的稳定性和可控性,还是得自己用socket开发中间层,而且对数据库的连接也要很慎重。 另外你3600条取回来也不合理。三层开发的模式就是倾向于瘦客户端,计算完了把结果输出到客户端,你取那么多数据回来做甚。 datasnap的可靠性也是基于一定的环境基础的,如果不加限制的使用,什么服务器都会挂。
「已注销」 2013-03-28
  • 打赏
  • 举报
回复
这个情况跟后端连数据库的驱动有关系。
酣酣 2013-03-28
  • 打赏
  • 举报
回复
RemObjects吧!
ahua419880 2013-03-28
  • 打赏
  • 举报
回复
SQLConnection1.Open 耗时很长,有时甚至要达几秒,连接上就不要断开了。共用连接是必须的。 造成这个
Q287413288 2013-02-25
  • 打赏
  • 举报
回复
我也开发分布式系统,欢迎探讨
勉励前行 2013-02-02
  • 打赏
  • 举报
回复
SQLConnection1.Open 耗时很长,有时甚至要达几秒,连接上就不要断开了。共用连接是必须的。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧