Section 7.1. Requirements for an Asynchronous Mechanism


7.1. Requirements for an Asynchronous Mechanism

To make the most of the various options available with .NET asynchronous calls, you first need to understand the generic requirements set for any modern component-oriented asynchronous calls support. These include the following:

  • The same component code should be used for both synchronous and asynchronous invocations. This allows component developers to focus on the business logic and facilitates using a standard mechanism.

  • A corollary of the first requirement is that the client should be the one to decide whether to call a component synchronously or asynchronously. This, in turn, implies that the client will have different code for invoking the call synchronously and asynchronously.

  • The client should be able to issue multiple asynchronous calls and have multiple asynchronous calls in progress. It should be able to distinguish between multiple method completions.

  • By the same token, the component should be able to serve multiple concurrent calls.

  • If component methods have output parameters or return values, these parameters or results aren't available when control returns to the client. The client should have a way to access them when the method completes.

  • Similarly, errors on the component's side should be propagated to the client side. Any exceptions thrown during the method execution should later be played back to the client.

  • The asynchronous-calls mechanism should be straightforward and simple to use (this is more a design guideline than a requirement). For example, the mechanism should hide its implementation detailssuch as the worker threads used to dispatch the callas much as possible.

When the client issues an asynchronous method call, it can then choose to:

  • Perform some work while the call is in progress, then block until completion.

  • Perform some work while the call is in progress, and then poll for completion.

  • Perform some work while the call is in progress, wait for a predetermined amount of time, and then stop waiting, even if the method execution has not yet completed.

  • Wait simultaneously for completion of multiple methods. The client can choose to wait for all or any of the pending calls to complete.

  • Receive notification when the method has completed. The notification will be in the form of a callback on a client-provided method. The callback should contain information identifying which method has just completed and its return values.

.NET offers all these options to clients, which can be confusing when you first start using asynchronous calls. This chapter will demonstrate each option and recommend when to use it. First, though, let's talk a little more about delegates.



Programming. NET Components
Programming .NET Components, 2nd Edition
ISBN: 0596102070
EAN: 2147483647
Year: 2003
Pages: 145
Authors: Juval Lowy

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net