During my testing, I used smartsniff to check the HTTP requests / responses between my WS Client and the SOAP server. I was surprised to discover that the dynamic WS client would first download the remote WSDL multiple times to create the service object, which I use to get the port object, then for each operation invocation, it would retrieve the WSDL file again, even the same port object is used.
This is a huge performance slow down for dynamic client, as we all know there is lots of overhead to download something via the network. Plus that I suspect that the WSDL file is parsed again and again with each download (or otherwise why downloading it?), which also slows things down a lot.
Even for static generated client code, it would still download the WSDL again if I use the service constructor that takes the WSDL URL and serviceQName. Not much of difference compare with the dynamic client.
I am not sure if the WSDL file is locally available (via file system), the WS client would still load it / parse it multiple times.
Anyone noticed this? Or have any comments?