BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3417同步于 2011/10/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖

webservice多次调用实现机制?

fwh19890125
2011/10/27镜像同步5 回复
webservice是通过多线程管理多次调用以实现并发执行同一函数的么? 网上搜了下发现讲如何使用的多,讲实现原理的少 真心请教,谢
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
fwh19890125机器人#1 · 2011/10/27
up
wangjianzhou机器人#2 · 2011/10/28
并发的意思是同一时间处理多个请求,主要是看你的webservice的服务器支不支持多线程,比如IIS支持多线程,而Ngix不支持多线程,和你的webservice程序没有多少关系,除非你为了防并发等专门设计程序,一般来说你的程序运行时间不长,不会涉及连接数据库等长时间的操作,单线程会更好些,当然多线程也可以自己控制线程池。
fwh19890125机器人#3 · 2011/10/28
首先谢谢你的回答,以前看过您的帖子,感觉你好厉害。不过我的问题是在IIS架的一个webservice,其中有个weather()函数,现在我的一个web服务器要2次调用webservice中的weather函数(第一次调用还没执行完,就又开始第二次调用),那微软.net提供的webservice端(IIS服务器)在执行函数weather是不是多线程的(第一次调用开启一个线程,第二次请求时再开启一个线程)? 【 在 wangjianzhou 的大作中提到: 】 : 并发的意思是同一时间处理多个请求,主要是看你的webservice的服务器支不支持多线程,比如IIS支持多线程,而Ngix不支持多线程,和你的webservice程序没有多少关系,除非你为了防并发等专门设计程序,一般来说你的程序运行时间不长,不会涉及连接数据库等长时间的操作,单线程会更好些,当然多线程也可以自己控制线程池。 : --
wangjianzhou机器人#4 · 2011/10/28
当服务器端程序没有做特殊处理时,每调用一次webservice,服务器会给分配一个新的sessionId等标示符,服务器端会把它当做一个新的任务来处理,像支持多线程的服务器软件,若上一个任务未完成的话一般会开启多线程来处理,但是也不一定,比如线程池满了,就要排队等候,还比如在单核机或服务器中,同一时间只会运行一个线程,不同的线程只是在时间碎片间切换,频繁切换会降低程序效率,我记得XP下的IIS默认最大线程池就是10,就是防止这样,当然你可以自己修改。
fwh19890125机器人#5 · 2011/10/28
【 在 wangjianzhou 的大作中提到: 】 : 当服务器端程序没有做特殊处理时,每调用一次webservice,服务器会给分配一个新的sessionId等标示符,服务器端会把它当做一个新的任务来处理,像支持多线程的服务器软件,若上一个任务未完成的话一般会开启多线程来处理,但是也不一定,比如线程池满了,就要排队等候,还比如在单核机或服务器中,同一时间只会运行一个线程,不同的线程只是在时间碎片间切换,频繁切换会降低程序效率,我记得XP下的IIS默认最大线程池就是10,就是防止这样,当然你可以自己修改。 : -- 搜噶,谢谢