5

2 つのエンドポイントを公開するサービスがあるとします。1 つ目は NetTCPBinding で、2 つ目は任意の HttpBinding です。どちらもまったく同じサービス コントラクトを実装します。

有線で送信される内容の違いは何ですか?

  • netTcp を使用すると、メッセージは引き続き XML にシリアル化されますか? または、オブジェクトのバイナリ表現ですか?
  • メッセージを受け取るものに関して、違いは何ですか? http エンドポイントは http コマンド (get/post など) のみを理解しますが、nettcp エンドポイントは別のものを理解しますか?
  • nettcp が http よりも効率的である理由 (この場合、相互運用性は必要ありません) - オーバーヘッドはどこにありますか?

すべての場合において、メッセージが送信される前にバイナリに変換されると思います。また、http はネットワーク用語で tcp の上に位置するため、http 通信には追加の場所が必要です。

質問が少し漠然としていることに感謝しますが、うまくいけば誰かが私が尋ねようとしていることを知っているでしょう:)

4

1 に答える 1

7

WCF では、特定のバインドが必ずしも特定のエンコーディングを意味するわけではありません。さまざまなエンコーディングを使用するように、さまざまなバインディングを構成できます。Net.TCP はデフォルトでバイナリ エンコーディング (MTOM だと思います) を使用し、HTTP はデフォルトで text/xml エンコーディングを使用します。

net.tcp を使用すると、メッセージは送信者 -> net.tcp -> 受信者に移動します。HTTP では、送信者 -> http -> tcp -> http -> 受信者となります。余分なレイヤーがあります。tcp の利点は、これらの両方です。余分なレイヤーとデフォルトのエンコーディングの両方です。

バイナリ エンコーディングを使用した HTTP は、net.tcp のパフォーマンスに近づきます。

編集: 実際には、Net.TCP には他の最適化もあると思います。これは WCF-WCF 通信シナリオであるため、MS は両端を制御します。

于 2011-03-31T12:57:02.710 に答える