Hi Magnus,
When you say check the progress of an async web service, do you mean a fire
and forget one-way call, or a call you initiate on the client side using a
BeginXXMethod. I've heard people call both of thes "async" - but the
meaning of Async changes.
Without an interface on a service to check the progress of a prior request
(as opposed to a request that is still ongoing), a fire and forget request
- for example "send_me_goods_via_truck" to order some kind of e-commerce
product, the caller has no way to ask the question. Thus, progress and
status requests need to be designed into the service.
In the case of the "call it in the background so my client code isn't
frozen waiting for a long call to finish" - e.g. beginXXMethod approach,
no, there is no way to check on the progress. The reason is that while
there is an open connection between the proxy and service in this case, the
proxy is in "read" mode, and the service has already dispatched the
serialized data to the method. SOAP doesn't accommodate a status or
progress data stream on this request - as each request gets at most a
single on-connection response.
If your requests of the second type are taking a long time, you are going
to need to look into why the operations are taking a long time to process
on the server side. Any processing delay of more than a few milliseconds
may be a signal that the work-partitioning in the applicaiton design will
become an issue as the number of concurrent requests is ramped up.
Good luck to you
Dan Rogers
Microsoft Corporation
--------------------