1

この記事 (「Windows Communication Foundation」セクションの後半) で著者は、WCF での一方向の送信は本質的に UDP であると提案しています。これは正しいです?この記事の内容に基づいて、サービス操作を「一方向」としてマークすることは、UDP を使用していることを意味すると想定する必要がありますか?

さらに、UDP を WS-ReliableMessaging と組み合わせて使用​​して、トランスポート プロトコルのこれらの側面を自分で作成する必要をなくすことを提案しています。 、この記事の提案に従って、「一方向」と WS-ReliableMessaging を使用するだけでいいのです!? 私には少し遠いように聞こえます...

それで、ここでの取引は何ですか?この記事が示唆していることの警告は何ですか?

4

4 に答える 4

2

いいえ、あなたは記事を誤解しています。記事は2つの異なることを言っています:

  1. WCF の一方向操作は、UDP データグラムに多少似ています。

  2. WS-ReliableMessaging は、必要に応じて UDP の上に実装できます。

一方向の操作でさえ、それらを信頼できるものにするために確認応答、再送信などが必要です。

于 2012-01-09T23:02:01.050 に答える
1

あなたが言及した記事から:

WCF は複数のネットワーク プロトコル (特に TCP) を公開し、WCF トランスポート チャネルを作成することで他のネットワーク プロトコルに拡張できます。WCF は、その拡張モデルを通じて UDP をサポートします。基本的な UDP チャネルのコードは、WinFX® SDK のコード サンプルとして提供されます。

彼らはセットアップでUDPトランスポートを使用しているので、彼らの状況ではそうです。TCP ベースのトランスポートを使用するサービスがある場合、一方向通信は UDP ではありません。

そして記事のさらに下:

UDP の WCF ベースの実装は一方向チャネルです。

したがって、彼らは実際には、WCF での UDP の実装方法についてのみ話しているだけで、WCF 全般については話していません。

于 2012-01-09T22:59:36.517 に答える
1

WS-ReliableMessaging は、受信者が確認応答 (「ack」) を送信者に送り返すことに依存しています。そうしないと、送信者はメッセージの再送信が必要かどうかを知る方法がありません。TCP では、これはトランスポート プロトコルに組み込まれています (これは、TCP と UDP の違いの 1 つです)。

UDP では、TCP の「オーバーヘッド」を回避していますが、信頼できるメッセージングが必要な場合でも、サーバーはクライアントに何かを送り返しています。

于 2012-01-09T23:00:00.320 に答える
1

実際、記事のそのセクションをもう少し詳しく読むと、一方向のメッセージングと WS-ReliableMessaging を使用するだけでなく、かなり多くの機能があることがわかります。また、UDP バインディング要素 (.eg, bindingElements.Add(new UdpTransportBindingElement());) などを追加する必要があります。これらを追加しなければ、依然として TCP を使用することになります。

追加の注意として、UDP が実際に Web サービスの TCP よりも高いパフォーマンスを発揮すると結論付ける前に、かなり洗練されたベンチマークに没頭する必要があるのではないかと思います。私はこれらのテストを自分で行ったことはありませんが、soap.udp://バインディングがすべての信頼できるメッセージング ビットとその他のものをサービスに追加するまでに、TCP とほぼ同じオーバーヘッドが発生するのではないかと考えています。UDP がトランスポート バインディングとして利用できる理由は、優れたパフォーマンス特性のためではなく、TCP (奇妙な環境上の理由で) が利用できないシナリオのコーナー ケースに代替手段を提供するためだと思います。

于 2012-01-09T23:00:28.843 に答える