セッション・バインディングがサポートされていないとき5.1は、作成などbasicHttpBinding、WCFとして、これらの設定を使用している場合。ConcurrencyMode.SingleとInstanceContextMode.PerSession、リストは、サービスの任意の同時インスタンスまたは行為を定義していない、それはデフォルト値を使用するWCFに指示示し、それは要求を受信した各サービスの新しいインスタンスを作成して、独自のスレッドでコードを実行します。これは、返す前に5秒間待機します。
5.1デフォルトのリストと行動サービスの同時インスタンスを使用して
2 |
public interface IStockService |
5 |
double GetPrice( string ticker); |
01 |
[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single, InstanceContextMode=InstanceContextMode.PerSession)] |
02 |
public class StockService : IStockService |
06 |
Console.WriteLine( "{0}:Created new instance of StockService on thread" , DateTime.Now); |
08 |
public double GetPrice( string ticker) |
10 |
Console.WriteLine( "{0}: GetPrice called on thread {1}" , DateTime.Now, Thread.CurrentThread.ManagedThreadId); |
リスト5.2は、クライアントコードが3回GetPriceメソッドを呼び出して表示されます。クライアントコードの非同期は、このメソッドを3回呼び出してから、すべての結果が返される終了する前に待ちます。
図5.2は、出力(右側)クライアント(左)とサーバーを示しています。出力は、3つのクライアント要求が同期して送信されて表示され、5秒後に結果を返します。サーバーの出力は、サービスクラスのインスタンスを作成するために、各クライアントの要求が表示され、各要求は独自のスレッドで処理されます。basicHttpBindingがセッションをサポートしていないため、PerSessionのデフォルトの動作PerCall同じ。ConcurrencyMode.Singleのセットアップ手順は、各インスタンスは一つだけのスレッドの実行を可能にするWCFながら、要求ごとにInstanceContextMode.PerSession行動指針のWCFは、新しいインスタンスを作成します。
図5.2は、結合セッションConcurrencyModeのデフォルトInstanceContextModeと出力結果をサポートしていません。
==========
より転載
ます。https://www.cnblogs.com/llbofchina/archive/2011/06/30/2094041.htmlで再現