用webservice是为了支持异构平台,譬如服务器端是python/java,客户端可以是jsp/php/asp.net。
从测试角度看,个人最喜VisualStudio2010,可以用它做测试的客户端,通过webservice和服务器通信。
从接口角度看,webservice生成的代码虽然很啰嗦,可它是强类型代码,接口有变动只要编译就知道错误。
如此等等。
J2EE的EJB(SLSB)可以提供WebService,而且是支持多个客户端并发的。即两个client可以同时调用同一个接口,而且这两个接口会同时执行(因为无状态)。
例如,若同时访问同一个接口,会同时调用:
14:01:41,641 INFO [STDOUT] registerWorker start...
14:01:41,919 INFO [STDOUT] registerWorker start...
14:01:46,668 INFO [STDOUT] registerWorker #1008
14:01:46,670 INFO [STDOUT] registerWorker finished...
14:01:46,924 INFO [STDOUT] registerWorker #1009
14:01:46,926 INFO [STDOUT] registerWorker finished...
14:01:56,671 INFO [STDOUT] registerWorker exit.
14:01:56,927 INFO [STDOUT] registerWorker exit.
Python的soaplib的WebService是不支持多个客户端并发,两个Client调用同一个接口时,只能一个一个执行。
例如,若WebService的方法需要执行很长时间,那么下一个Client只能等待上一个Client执行完毕:
2012-03-14 13:53:28.810094 [debug] execute command: ./getJpeg test.flv 100,101 o.jpg
[winlin]start...
[winlin]finished...
10.33.0.231 - - [14/Mar/2012 13:53:58] "POST /vfe?wsdl HTTP/1.1" 200 951
2012-03-14 13:53:58.822021 [debug] execute command: ./getJpeg test.flv 100,101 o.jpg
[winlin]start...
[winlin]finished...
10.33.0.231 - - [14/Mar/2012 13:54:28] "POST /vfe?wsdl HTTP/1.1" 200 951