簡體   English   中英

WCF TCP綁定或用於網格計算的命名管道?

[英]WCF TCP binding or Named pipes for grid computing?

我正在構建一個分布式系統。 有幾種應用程序(有些是基於.Net的(C#),有些是基於C ++的(不是C ++ / CLI!))。 這些應用程序將安裝在群集中的每台計算機上(當前由Windows驅動)。 在本地PC上,我用於IPC:用於C#應用程序的MemoryMappedFiles,用於C ++應用程序的共享內存,用於C#和C ++之間的IPC的命名管道。 在Internet上,我使用WCF TCP綁定,並使用C#應用程序作為C ++應用程序的橋梁。

局域網通信中最好使用什么? 看來MPICH2使用TCP ...具有優化(禁用安全性等)的典型命名管道是否比WCF TCP綁定更快? 消息將非常大,大部分為雙類型。 在我的情況下,WCF非常方便(所有數學方法都只是合同),但是它的性能是一個問題。

請閱讀http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx

您會看到選擇取決於服務所在的位置。 希望能幫助到你。

您要混合兩個不同的層,也可以在NamedPipes上運行WCF 命名管道(雖然可以使用許多設置字),但並不是為了在兩台計算機上的兩個進程之間進行通信而設計的。

請參閱有關選擇傳輸的 MSDN頁面,以幫助您了解何時使用哪種傳輸。

每種運輸的優勢

本節描述了選擇三種主要傳輸方式中的任何一種的主要原因,並包括在其中選擇的詳細決策圖。

何時使用HTTP傳輸

HTTP是客戶端和服務器之間的請求/響應協議。 最常見的應用程序包括與Web服務器通信的Web瀏覽器客戶端。 客戶端向服務器發送請求,服務器監聽客戶端請求消息。 服務器收到請求后,將返回響應,其中包含請求的狀態。 如果成功,則返回可選數據,例如網頁,錯誤消息或其他信息。 有關HTTP協議的更多信息,請參見HTTP-超文本傳輸​​協議。

HTTP協議不是基於連接的,一旦發送響應,就不會維護任何狀態。 要處理多頁事務,應用程序必須保留任何必要的狀態。

在WCF中,HTTP傳輸綁定已針對與傳統非WCF系統的互操作性進行了優化。 如果所有通信方都在使用WCF,則基於TCP或基於命名管道的綁定會更快。 有關更多信息,請參見NetTcpBinding和NetNamedPipeBinding。

何時使用TCP傳輸

TCP是基於連接的,面向流的交付服務,具有端到端的錯誤檢測和更正。 基於連接的意思是在交換數據之前在主機之間建立通信會話。 主機是TCP / IP網絡上由邏輯IP地址標識的任何設備。

TCP提供可靠的數據傳遞和易用性。 具體地說,TCP通知數據包傳送給發送方,確保數據包以它們發送的相同順序傳送,重新傳輸丟失的數據包,並確保數據包不重復。 請注意,這種可靠的傳遞適用於兩個TCP / IP節點之間,而不是與WS-ReliableMessaging相同,后者在端點之間適用,無論它們可能包含多少個中間節點。

WCF TCP傳輸針對通信的兩端都使用WCF的情況進行了優化。 對於涉及不同機器之間通信的方案,此綁定是最快的WCF綁定。 消息交換使用BinaryMessageEncodingBindingElement進行優化的消息傳輸。 TCP提供雙工通信,因此即使客戶端位於網絡地址轉換(NAT)后面,TCP也可用於實現雙工合同。

何時使用命名管道傳輸

命名管道是Windows操作系統內核中的對象,例如進程可用於通信的共享內存部分。 命名管道具有名稱,可用於單台機器上進程之間的單向或雙工通信。

如果需要在一台計算機上的不同WCF應用程序之間進行通信,並且您希望防止與另一台計算機進行任何通信,請使用命名管道傳輸。 另一個限制是,除非具有提升的特權,否則從Windows遠程桌面運行的進程可能僅限於同一Windows遠程桌面會話。

暫無
暫無

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

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