tags:

views:

123

answers:

2

This question is related to: http://stackoverflow.com/questions/784918/asmx-web-service-slow-first-request.

I inherited a proxy to a legacy ASMX Service. Basically as the post above states, the first call performance is literally 10 times slower than the subsequent calls. I went ahead and turned on ‘Generate serialization assembly' on the project that contains the proxy. The 'serializers' assembly is actually generated. However, I haven't seen any performance increase at all. Do I need to do anything else other than make sure the 'serializers' assembly is in the client's bin directory? Do I have to 'link' the proxy to the 'serializers' assembly during proxy generation (wsdl.exe)? I guess I'm stuck at this point. J Saunders where u at? :)

A: 

I think your real problem has to do with the daily reloading of the web service. Is it possible to install a post-reboot batch script that makes the first call to the web service to the server? This is what we had to do in one of my previous contracts, and it really made all the difference.

code4life
A: 

There is actually a lot more to start up time than just creating the serialisation assemblies. Creating the AppDomain, JITing all of the methods, parsing config files and so on can all take quite a bit of time.

You don't actually say how much "10 times" actually is, but 10-15 seconds for the very first request is not unusual in my experience.

If you're running Windows Server 2008, you can try Application Warm-Up which is basically just a tool that automatically makes requests for pages when the IIS worker process is recycled, or the server is rebooted and so on. But it's not hard to write such a script yourself, really, as code4life says (Application Warm-Up has features which make it work a bit better than what you can do "manually", but the manual way is still quite effective in my experience).

Dean Harding
Yeah is about 6 or 7 seconds for the 1st request. However, I'm just surprised that adding the the serialization assemblies didn't have any effect. Application Warm up is not an option at this point. Thanks for the reply
Buzzer