WCFを使用してクライアント/サーバースタイルのアプリを作成していますが、NetTcpBindingが永続的な接続を提供するかどうかを説明するドキュメントが見つかりませんか?
クライアントに接続して、一度に数週間サーバーに接続したままにしてもらいたいです。(はい、切断などを処理する必要があることはわかっています。)
NetTcpBindingは、このような長い接続を可能にしますか?もしそうなら、私が指定する必要があるものはありますか、それともこのデフォルトの動作ですか?
サービスホストとクライアントプロキシを有効にして開いたままにしておく限り、WCFの基になる接続も開いたままにする必要があります。その下でも、 NetTcpBindingのMSDNページにあるように、バインディングはTCP接続プールからの接続を使用しているようです。
NetTcpBindingは、サービスのホストDNS名とサービスがリッスンしているポート番号に基づいてTCP接続プールを使用します。
私はTCP接続プールの仕組みの専門家ではありません。詳細については、 ServerFaultなどの姉妹サイトを試してみてください。
これらすべてを制御したい場合は、すぐに使用できるNetTcpBinding用に調整できる唯一のプロパティはですMaxConnections
。ただし、本当に深く掘り下げたい場合は、TcpTransportBindingElementを使用して独自のカスタムバインディングを構築することもできます。これにより、TcpConnectionPoolSettingsをさらに細かく制御できます。
いずれにせよ、私が思い切って推測した場合、サービスホストとクライアントプロキシの構築には、プールから接続を取得するために費やされる時間よりもはるかに長い時間がかかると思います。したがって、これら2つを開いたままにしておくと十分な場合があります。あなたの要件。
コメントで接続を開いたままにしておきたい理由を尋ねたのは、それ自体が要件になることはほとんどないからです。ただし、速度と応答時間は実際の要件であるため、おそらくこれらの要件を明示的にし(速度の必要性を定量化/限定)、いくつかのテストを実行して、状況に最適/必要なものを判断することをお勧めします。