2

誰も私に正しく答えたり、この問題に対する公式のリソースを提供したりしません。サーバーと多くのモジュールがあります。各モジュールは名前付きパイプを作成し、サーバーはモジュールごとに 1 つの名前付きパイプを作成します。同時に持つことができる名前付きパイプの数を知る必要があります。

10 台のクライアントを 1 台のサーバーに接続するつもりはありません。常に1つのクライアントと1つのサーバーを接続したいのですが、このパイプは何本まで作れますか?

C# で WCF を使用していることに注意してください。

4

2 に答える 2

4

Windows で作成された各名前付きパイプは、いくつかのシステム リソースを使用します。つまり、作成できるパイプの数には実質的な制限があります。見る:

名前付きパイプが作成されるたびに、システムは、カーネルが使用する物理メモリである非ページ プールを使用して、インバウンドおよび/またはアウトバウンド バッファーを作成します。作成できるパイプ インスタンス (およびスレッドやプロセスなどのオブジェクト) の数は、使用可能な非ページ プールによって制限されます。

正確な数値制限はシステムによって異なりますが、数千ではないにしても、少なくとも数百のオーダーになる可能性があります。

WCF 名前付きパイプ バインディングを使用してパイプを作成する場合、このバインディングが使用されているパイプに関するメタデータを公開する方法により、ベース アドレスごとに 1 つのパイプしか作成できません。したがって、ベース アドレス + 相対アドレスではなく、絶対 URI アドレスを使用して WCF エンドポイントを定義することをお勧めします。これを実行し、エンドポイントごとに一意の絶対アドレスを作成するための適切なスキームを設計する場合、作成できる WCF エンドポイントの数に制限はありません。

特定のシステムにおける実際の限界は、経験的にしか発見できません。目標が数十のエンドポイントを持つことである場合、これを快適に達成できると思います。何千も同時に動作させたい場合は、システム リソースの実質的な制限を利用することができます。これを確実に判断するには、テストのみが必要です。

于 2013-08-07T08:21:12.737 に答える
0

最初に、質問を適切に説明する必要があることをお伝えしたいと思います。そうしないと、ここで誰もあなたを助けてくれません。あなたが直面した問題がどこにあるのかを説明し、いくつかのコードも示してください。

あなたの説明から、あなたが望むのはこれであることがわかりました: Number of Clients that can connect to a Named Pipe .

于 2013-08-05T11:25:52.717 に答える