簡體   English   中英

WCF“單向”通信實際上是UDP嗎?

[英]Are WCF 'one way' communications actually UDP?

文章中,(朝“Windows通訊基礎”部分結束)筆者認為,變速器在WCF一種方式基本上是UDP。 這個對嗎? 我是否應該根據本文的內容假設將服務操作標記為“單向”意味着我正在使用UDP?

此外,他建議將UDP與WS-ReliableMessaging結合使用,以消除自己編寫傳輸協議的那些方面的需要……好吧,但是,如果我想在需要的情況下利用UDP的性能優勢,我應該,按照本文的建議,只需使用“單向”和WS-ReliableMessaging,我就很好了! 聽起來有點牽強我...

那么這是怎么回事? 本文建議的注意事項是什么?

不,您誤會了這篇文章。 文章說了兩件事:

  1. WCF單向操作在某種程度上類似於UDP數據報。

  2. 如果需要,可以在UDP之上實現WS-ReliableMessaging。

甚至單向操作也需要確認,重傳等來使其可靠。

在您提到的文章中:

WCF公開了多個網絡協議(最著名的是TCP),並且可以通過編寫WCF傳輸通道擴展到其他網絡協議。 WCF通過其可擴展性模型支持UDP,並且基本UDP通道的代碼將作為WinFX®SDK中的代碼示例提供。

他們在設置中使用UDP傳輸,因此在他們的情況下,是的。 如果您有使用基於TCP的傳輸的服務,則單向通信將不是UDP。

在文章的后面:

基於WCF的UDP實現是單向通道

因此,他們實際上只是在談論WCF中UDP的實現方式,而不是一般而言的WCF。

WS-ReliableMessaging依賴於接收方將確認(“ acks”)發送回發送方。 否則,發送者將無法知道消息是否需要重新發送。 在TCP中,它內置在傳輸協議中(這是TCP和UDP之間的區別之一)。

在UDP中,您放棄了TCP的“開銷”,但是如果您需要可靠的消息傳遞,您的服務器仍會向客戶端發送一些消息。

實際上,如果您更仔細地閱讀本文的這一部分,您會發現,不僅使用單向消息傳遞和WS-ReliableMessaging,還有很多其他事情。 您還必須添加UDP綁定元素( bindingElements.Add(new UdpTransportBindingElement()); )和其他類似內容。 如果您不添加這些內容,那么您仍將使用TCP。

另外要注意的是,我懷疑您需要沉迷於一些相當復雜的基准測試中,然后才能得出結論:對於Web服務,UDP實際上將具有比TCP更高的性能。 我自己還沒有進行這些測試,但是我懷疑當您的soap.udp://綁定完成時,將所有可靠的消息發送位添加為您的服務,而不是添加什么,您將擁有幾乎所有與TCP相同的開銷。 我懷疑將UDP用作傳輸綁定的原因不是由於具有任何優越的性能特征,而是為無法使用TCP(無論出於奇怪的環境原因)的特殊情況提供了替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM