WCF concurrency, throughput and throttling
Michele Leroux Bustamante (aka "Das Blonde") wrote a great post on WCF callback scenarios:
Callback Sync Context | Callback Concurr. Mode | Service Operation | Callback Operation | Service Concurr. Mode | Resulting Behavior |
True/ False | Single/ Reentrant/ Multiple | One-way/ Two-way | Two-way | Single | These are defaults. InvalidOperationException at the service. Operation would deadlock calling the client application since the callback is two-way and reentrancy isn’t possible. |
True | Single/ Reentrant/ Multiple | Two-way | Two-way | Reentrant/ Multiple | Service able to call client, but client is blocked because of outgoing call. |
False | Single/ Reentrant/ Multiple | Two-way | Two-way | Reentrant/ Multiple | Service able to call client, client callback object is not blocked. If client callback object tries to communicate with UI thread (i.e., setting properties of controls) it will block. |
False | Single | One-way | Two-way | Reentrant/ Multiple | Service able to call client, client callback object is not blocked. Client callback object can communicate with UI thread using Invoke() from callback thread. Client can issue multiple calls to service but only one callback can be processed at a time. |
False | Multiple | One-way | Two-way | Reentrant/ Multiple | Service able to call client, client callback object is not blocked. Client callback object can communicate with UI thread using Invoke() from callback thread. Client can issue multiple calls and multiple callbacks can be processed at a time. |
False | Multiple | One-way | One-way | Single/ Reentrant/ Multiple | Service able to call client, client callback object is not blocked. Client callback object can communicate with UI thread using Invoke() from callback thread. Client can issue multiple calls and multiple callbacks can be processed at a time. |
False | Multiple | Two-way/ Multi-threaded Client | Two-way | Reentrant/ Multiple | Service able to call client, client callback object is not blocked. Client callback object can communicate with UI thread using Invoke() from callback thread. Multiple calls from client can be processed at the service, and multiple callbacks can be processed at the client. |
False | Multiple | Two-way/ Multi-threaded Client | Two-way | Reentrant/ Multiple | Service able to call client, client callback object is not blocked. Client callback can communicate with UI thread using Invoke() from callback thread. Multiple calls from client can be processed at the service, and multiple callbacks can be processed at the client. |
No comments:
Post a Comment