PB 采用WEBService经常无响应的问题

zqsu 2016-07-13 05:23:19
从PB9开始,PB就支持WebService开发,实际的使用过程中工作情况还是不错的。

但是,最近做了一个小应用,是在很极端的网络环境下,电脑是wifi接入的且不停移动,因此网络质量完全不能保证:高延时、经常不定期中断。在这种环境下,我发现PB的WebService Client运行中,如果正好处于接收数据的状态下网络中断,经常需要等非常长时间才会触发catch,而连续运行后常常会导致整个程序都无响应无法稳定工作。

WebService不就是为了解决无法可靠连接条件下的数据传送吗?但是PB中似乎并没有很有效的方法去控制,比如超时Cancel这样的操作。不知道大家使用中有没有遇到类似的问题,是如何解决的?

PB9和PB11.5都试过,情况差不多,11.5好一些。
...全文
1478 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyangziwo 2016-07-21
  • 打赏
  • 举报
回复
zqsu 2016-07-21
  • 打赏
  • 举报
回复
引用 2 楼 lzp_lrp 的回复:
webservice一般是30秒超时,resetful如果在pb中用posturl也一样是30秒,如果网络不稳定,用pb来实现这些技术都不好,最好用winsock + 心跳测试,然后winsock传输比较好
经过测试,如果采用OLE引用MSSOAP来访问(服务端还是PB搭建的WebService),即时在网络不稳定的时候,也很快就可以解脱出来而不会卡死,程序可以长时间稳定运行了。
zqsu 2016-07-15
  • 打赏
  • 举报
回复
引用 2 楼 lzp_lrp 的回复:
webservice一般是30秒超时,resetful如果在pb中用posturl也一样是30秒,如果网络不稳定,用pb来实现这些技术都不好,最好用winsock + 心跳测试,然后winsock传输比较好
确实,版主果然水平高。如你所说,大约20-30秒超时,而且这个超时是会导致整个程序的等待。我试着用shareobject将其拆分成子线程,试图用这个方法去控制超时,但是结果甚至更糟,PB的多线程运行的时候强行中断更不稳定。 winsock是个新的思路,我倒没试过。这越用是越底层了,好像背离了PB的优势。 我对PB在WEB Service的这个设置感到还是很奇怪,应该有一个主动的超时设置去中断以保证健壮性,否则长期连续运行下来,出错的几率总是很大的。 不管怎么说,也学习到很多东西,感谢版主的热心帮助。暂时不结贴,看看大家还有什么建议没有。
WorldMobile 2016-07-15
  • 打赏
  • 举报
回复
webservice一般是30秒超时,resetful如果在pb中用posturl也一样是30秒,如果网络不稳定,用pb来实现这些技术都不好,最好用winsock + 心跳测试,然后winsock传输比较好
pcwe2002 2016-07-13
  • 打赏
  • 举报
回复
建议改用restful方式去调用,http超时可以设置。 如果用webservice可以使用第三方调用。 建议看看这个方案 http://download.csdn.net/detail/pcwe2002/9563695

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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