異なるサーバー上の他のサービスへの NetTcp 呼び出しを行うサービスがあります。ChannelFactories をキャッシュし、maxOutboundConnectionsPerEndpoint を増やして最適化しようとしています。
私は GOOGLE.COM (ちなみに素晴らしい Web サイトです。聞いたことがない場合はチェックしてください) を使用して、チャネル キャッシュのしくみを理解しようとしましたが、正しくないと思います。
チャネル ファクトリの再利用 - 良い考えです。自分でチャネルをキャッシュする - 悪い考えです。すべてのチャネルが同じファクトリから作成されている限り、Wcf は既にこれを行っています。――そうですか。毎回新しいファクトリを作成すると、キャッシュされませんか?
// factory initialization
var address = "net.tcp://something:8888/testservices";
var factory = new ChannelFactory<ITestService>("configname", new EndpointAddress(address));
// do stuff
var client = factory.CreateChannel(); // you can also pass an address here. how does that effect channel caching?
それで、それは工場のものを扱います。ここで、カスタム バインディングによって達成される maxOutboundConnectionsPerEndpoint を増やしたいと思います。明確でないのは、GroupName です。実行時に URL を検索しているため、構成で個別のグループ名を指定できません。したがって、すべてのチャネル ファクトリは同じデフォルト グループ名を持つことになります。彼らは同じプールを共有する予定ですか? 各工場には独自のプールがありますか?
最後に、構成でカスタム バインディングを作成し、必要に応じて複数のチャネル ファクトリを作成/キャッシュし、それらを使用してチャネルを確立したいと考えています。そして、エンドポイントごとに maxOutboundConnectionsPerEndpoint を増やす必要があります。20 台の異なるマシンで同じサービスを呼び出している可能性があり、それぞれに最大 50 個のキャッシュ チャネルが必要です。上記のコードはそれを達成しますか?
ご協力ありがとうございました。これをカバーするリンクがある場合は、転送してください。私はそれを見つけることができませんでした。