タイトルにあるように、このサービス動作が定義されたWCFサーバーを入手しました。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
名前付きパイプバインディングを使用していて、クライアントは次のように接続しています。
NetNamedPipeBinding binding = new NetNamedPipeBinding();
const int maxValue = 0x40000000; // 1GB
binding.MaxBufferSize = maxValue;
binding.MaxReceivedMessageSize = maxValue;
binding.ReaderQuotas.MaxArrayLength = maxValue;
binding.ReaderQuotas.MaxBytesPerRead = maxValue;
binding.ReaderQuotas.MaxStringContentLength = maxValue;
// receive timeout acts like a general timeout
binding.ReceiveTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
ChannelFactory<IDatabaseSession> pipeFactory = new ChannelFactory<IDatabaseSession>(binding, new EndpointAddress("net.pipe://localhost/DatabaseService"));
IDatabaseSession dbSession = pipeFactory.CreateChannel()
私が起動するすべてのクライアントは上記のコードを実行し、すべてのクライアントのCPU使用率は25%増加します(実際には5.クライアントではありませんが、この時点で実行可能なサービスはCPU容量全体のほぼ100%をカバーしています)。
私が探しているのは、CreateChannelが実際に何をしているのか(リソース割り当ての問題に関して)を教えてくれる一種のリソース(Webサイト/リストまたはあなたの強力な知識)です。
ヒント:実際に通信が行われていなくても、CPU使用率は増加し、チャネルのみが作成されます。