Understood, but you are missing something here. You will need a refresh to
update the client with whatever happens on the server. If you don't refresh
there is no possible way of notifying the client that you are making
progress because your main process cannot update the client while it is
polling the webservices.
On each refresh you will need to read a variable which tells you the
percentage completion, typically stored in session or viewstate. This
variable is set by your procedure which iterates over the webservices. So
for example, as you pass thru each webservice and you retrieve a request,
your percentage complete becomes x/15 * 100. You set that viewstate
variable. At this point, you force an immediate screen refresh. But your
code moves on in the iteration. The refresh updates the client with the
percentage completed. This algorithm persists until all the iteration is
done.
Alternatively, if the output of each webservice is not dependent on the next
webservice call, I suggest you thread the application. For example, if you
spawned five threads, each thread queries 3 webservices all done at the same
time, you can potentially improve performance 5 fold because each thread
will be executing at roughly the same time (more or less).
Put another way, if you send your son to town to get the morning paper, you
cannot have the paper until he comes back. You will be left waiting for as
long as he takes to get the paper. On the other hand if you send him with
his sister (threading) and periodically, his sister leaves him in town to
come back to let you know what is happening, you receive valuable updates
and your wait time is 'easier'.
Regards