If we consider a typical Web app - one that is not using a push technology such as COMET, updated information will be fetched by the browser intermittely, perhaps when the user requests, perhaps when an AJAX background call is made.
In that scenario I have my service offering a Status operation.
int requestSomeWork( ... data ... ) ; // returns an id
Status getStatus( int id ); // tell me about a previously submitted request
This style is useful not only for displaying progress information but also in recovery from failure scenarios. I may provide additional methods so that we can determine what happened if the Browser or Server crashes just as we were creating a request
int[] findRequest( ... search Criteria ... ); // I think I submitted a request like ... what's its id?
If we have a "live" UI, either thick client or COMET then we can add event processing
void registerForUpdates( id, callMe );