Dot-Net

.NET Remoting 真的被棄用了嗎?

  • August 18, 2009

每個人都在說 .NET Remoting 如何被 WCF 取代,但我想知道這有多準確。我還沒有看到任何官方消息說 Remoting 已被棄用,而且在我看來,在某些情況下,Remoting 肯定比 WCF 更有意義。即使在框架的 4.0 版中,也沒有棄用任何與遠端處理相關的對像或方法。我也理解 3.5 和 4.0 框架中的 System.AddIn 使用 Remoting。

有沒有人有任何相反的官方說法?

在文章中選擇 .NET 中的通信選項(對於 3.0,因為那是該文章的最新版本),它指出:

8 跨應用域通信

如果您需要支持同一程序內不同應用程序域中的對象之間的通信,則必須使用 .NET 遠端處理。

現在,這當然是不准確的,因為 WCF 肯定可以用於跨越 appdomain 邊界,但它是否為該場景提供了官方建議?

更新:我向 Clemens Vasters(他在擁有 Remoting 和 WCF 的團隊中)發送了這個問題:

Clemens,我知道你在同時擁有遠端處理和 wcf 的團隊中,我有幾個問題我認為我需要去源頭解決。

首先,我有一個關於遠端處理是否會消失的問題。具體來說,我們有一個相當大的應用程序,它廣泛使用遠端處理進行程序內跨應用程序域通信,我想知道這種遠端處理的使用是否被認為是“遺留”。如果是這樣,AppDomain.CreateInstance 和朋友會被其他東西取代嗎?

這是他的回复:

遠端處理是 .Net 框架的一部分,因此它不會消失。COM 從 Windows NT 3.5/Windows 95 開始就已經存在於 Windows 中,並且沒有消失,我也認為它不會很快消失。

也就是說,Remoting 的開發投資非常少。WCF 是 Remoting 的繼承者,並取代了託管程式碼的 COM/DCOM。

對於程序內、跨應用程序域通信 Remoting 是 CLR 的本機通信方式。如果您發現在短時間內抽取大量數據或大量消息時出現性能問題,您應該認真查看 WCF 和 NetNamedPipeBinding。

將其稱為遺留技術是更準確的描述。

<http://msdn.microsoft.com/en-us/library/72x4h507%28VS.85%29.aspx>

本主題特定於為與現有應用程序向後兼容而保留的遺留技術,不建議用於新開發。現在應該使用 Windows Communication Foundation (WCF) 開發分佈式應用程序。

更新:WCF 不區分 inter/intra/process/inter/intra-appdomain。如果您在 WCF 中使用單機通信,則使用命名管道——使用它應該在幾乎所有實際場景中提供良好的性能。

有關各種分佈式通信技術的性能比較,請參見此處

引用自:https://stackoverflow.com/questions/1294494