TCPはWCFのHTTPよりも高速であることを理解していますが、どれだけ知りたいのでしょうか。HTTPを使用する大規模なアプリケーションでパフォーマンスの問題があり、netTcpに移行することで、投資を価値あるものにするのに十分なパフォーマンスの向上が得られるかどうかを検討しています。
Httpバインディングと比較してnetTCPによって送信されるデータの量の違いを知っている人はいますか?
TCPはWCFのHTTPよりも高速であることを理解していますが、どれだけ知りたいのでしょうか。HTTPを使用する大規模なアプリケーションでパフォーマンスの問題があり、netTcpに移行することで、投資を価値あるものにするのに十分なパフォーマンスの向上が得られるかどうかを検討しています。
Httpバインディングと比較してnetTCPによって送信されるデータの量の違いを知っている人はいますか?
これまでのところ多くの回答がありますが、具体的なデータはありません。
マイクロソフトは、WCF サービスの HTTP と TCP のパフォーマンス (スループット) の違いについて、質問されたことを正確に測定するテストを作成しました。(テストはパケットサイズを考慮していません!)
これが示すことは、このテストのメッセージでは、TCP/バイナリが HTTP/xml のほぼ 2 倍のスループットを提供することです。このテストのボトルネックは、ネットワークではなく、サーバーの CPU でした。メッセージがより複雑に (またはより少なく) 複雑になり、ネットワークの制約がより多く (またはより少なく) なり、アプリ コードがより多く (またはより少なく) CPU 集中型になるため、結果は異なります。しかし、これはあなたにアイデアを与えます。
実際、Stocktrader ベンチマークは、Windows Server での WCF のパフォーマンスを Linux での WebSphere のパフォーマンスと比較して、競争力のあるものでした。しかし、その一環として、MS は HTTP を使用した WCF のパフォーマンスと TCP を使用した WCF のパフォーマンスも比較しました。
それほど単純ではありません。HTTP、TCP、およびその他のトランスポートオプションには、速度以外のバランスを取るためのオプションがあります。信頼性は、アプリケーションが実際に何をするかに応じて、アプリケーションの安定性に大きな役割を果たす可能性があります。プロトコルを反転してプログラムを数回実行するだけでなく、それを良いテストと考えてください。プロトコルについて読み、オプションと要件を比較検討してください。できれば資格のあるネットワーク管理者の助けを借りて、いくつかのプログラム、負荷、パフォーマンス、およびネットワークテストを実行します。
更新:質問を変更したので、理論上のパケットサイズの測定について突っ込むのではなく、パフォーマンスの低下の原因を突き止める必要があることにも注意する必要があります。他のみんなが言っているように、テストを実行します。
ISO/OSI モデルによると、TCP はトランスポート層です。HTTP は、TCP の上に実装されたアプリケーション層です。そのため、HTTP では、何があっても常にオーバーヘッドが追加されます。
一般的。HTTP がアプリケーション層の問題のかなりの量を解決する場合は、HTTP を使用してください。HTTP は十分に確立されており、相互運用性が高く、証明されているからです。アプリケーションが HTTP を使用している場合でも、物事を進めるためにかなりの作業を行う必要があり、TCP を使用すると物事がより良く簡単になる場合は、ぜひ下位レベルのプロトコルを使用してください。
特に WCF に関しては、TCP のみの実装がどのようなものかわかりません。ただし、HTTPよりも簡単だと思います。HTTP はおそらく「防弾」通信媒体として使用されており、HTTP オーバーヘッドのコストは、プロトコルがプロキシ サーバーなどを簡単に通過するという事実によって正当化されます。
WCFの最も高価な部分はシリアル化だと思います。これと比較すると、Webサーバースタックのオーバーヘッドは約5〜10%であり、TCPのみのトランスポートでは排除されます。問題は、Webサーバーの追加の利点が必要かどうかです。
いくつかのテストをしてください!それはあなたのネットワークとあなたのサービスが実際に何をしているかに依存します。
TCP接続はスタックの下位にあり、接続が開いた後に新しい要求を作成するオーバーヘッドがないため、通常は高速になります。