選擇 .NET 中的通訊選項
.NET Framework 提供數種方法與不同應用程式定義域中的物件進行通訊,每種方法都專為特定的專業層級和彈性而設計。例如,隨著網際網路的不斷成長,因為 XML Web Service 是依 HTTP 通訊協定的共通基礎結構和 SOAP 格式 (使用 XML) 所建置而成,所以 XML Web Service 已成為更具吸引力的通訊方法。這些是公用標準,可直接與目前的 Web 基礎結構搭配使用,而不需擔心其他的 Proxy 或防火牆問題。
因為許多應用程式需要的功能是使用 ASP.NET 建立的 Web 服務所不支援的,所以有些應用程式無法使用 ASP.NET Web 服務。下節協助您決定想用於應用程式的分散式應用程式支援類型。
ASP.NET、企業服務還是 .NET 遠端處理?
ASP.NET、企業服務和 .NET 遠端處理都是處理序間通訊 (IPC) 的實作。ASP.NET 提供由網際網路資訊服務 (IIS) 裝載的基礎結構,能夠完善地處理基本型別、支援部分進階 Web 服務通訊協定 (搭配 Web 服務擴充程式 (WSE) 使用時),且為 Web 應用程式開發人員所熟悉。企業服務是 COM+ 的 Managed 實作,其提供 COM+ 結構所有的彈性和豐富性。.NET 遠端處理是可擴充的泛型 IPC 系統,可以自我裝載或裝載在 IIS 中,以開發和部署分散式物件導向應用程式。.NET 遠端處理的可外掛式架構允許您使用自訂通訊協定和 Wire 格式。
程式撰寫模型的選擇應根據三項主要準則:商務需求、整合需求,以及您所熟悉的程式撰寫模型。此外,下列依優先權順序列出的準則,可協助您選擇所需要的分散式應用程式技術類型。
安全性需求
在三種程式撰寫模型當中,企業服務具有最豐富的安全性功能,能夠滿足大多數的案例。ASP.NET 透過 IIS 提供驗證,並透過 SSL 提供加密,對於保護網際網路規模的應用程式十分有用。在最新版的 .NET Framework 中,已提高 .NET 遠端處理的安全性。在舊版 .NET 遠端處理中,如果您需要加密呼叫或驗證用戶端,則必須使用 IIS 中所裝載的 HTTP 架構應用程式,不論它是 ASP.NET 應用程式還是遠端處理應用程式。在目前版本中,TcpChannel 和 HttpChannel 支援 SSPI 加密及 Windows 整合式驗證。IpcChannel 也支援 Windows 驗證和直接設定具名管道上的存取控制清單 (ACL)。因為不建議跨網際網路使用遠端物件,所以現在有一些案例需要使用 HttpChannel。如果必須跨網際網路進行通訊,則建議您使用 ASP.NET 建立 XML Web Service。
![]() |
---|
基於安全性的考量,強烈建議您經由安全通道公開遠端端點。絕對不要將不安全的遠端端點公開到網際網路。 |
互通
如果您需要與不同的作業系統互通,則應使用 ASP.NET 所建立的 XML Web Service。與 .NET 遠端處理比較起來,ASP.NET 檔案提供相當大的彈性,可定義 SOAP 通訊的型態和方式。這樣的彈性使不同平台和用戶端間的互通更為簡單。.NET 遠端處理的目的不是用於與非 .NET 的平台進行互通。
.NET Framework 遠端處理的目的不是用於與 Web 服務進行互通。如需應選擇 Web 服務還是遠端處理的詳細資訊,請參閱效能最佳作法簡介中的<如何選擇 Web 服務、遠端處理或企業服務>(英文),以及改良 .NET 應用程式效能和延展性中的<選擇 Web 服務、企業服務和 .NET 遠端處理的指導方針>(英文)。
速度
如果速度是很重要的因素,則企業服務可提供最佳的分散式應用程式效能。應用程式要求實際處理後,.NET 遠端處理與 ASP.NET 檔案間的效能差異已極小。如果您使用 .NET 遠端處理進行跨機器處理,則搭配 BinaryFormatter 的 TcpChannel 具有最佳的效能。在同一部機器上,則應搭配 BinaryFormatter 使用 IpcChannel。
延展性 (Scalability)
在 IIS 內裝載應用程式將可提供您所需要的延展性。自我裝載的 .NET 遠端處理需要您建置自己的縮放基礎結構。如果您考慮使用 IIS 並搭配 .NET 遠端處理以取得延展性,則應考慮改為使用 ASP.NET 建立 Web 服務。
使用 Common Language Runtime 功能
因為企業服務和 .NET 遠端處理較能充份利用 .NET 用戶端,所以您可以在應用程式中,使用以 ASP.NET 建立之 XML Web Service 所無法使用的 .NET 功能,這些功能包括:
介面
CallContext
[屬性]
索引子
C++
用戶端與伺服器應用程式間的型別精確度
如果這些功能很重要,請選擇企業服務 (可能的話),如果不行,再選擇 .NET 遠端處理。
物件導向應用程式設計
企業服務和 .NET 遠端處理物件都是物件,所以可視為物件處理。因此,您可在應用程式中使用 ASP.NET 所無法使用的下列物件導向功能。
遠端物件的物件參考
數個物件啟動選項
物件導向狀態管理
分散式物件存留期管理
如果這些功能很重要,請選擇企業服務 (可能的話),如果不行,再選擇 .NET 遠端處理。
自訂傳輸或 Wire 格式:如果您需要支援自訂傳輸 (例如使用者資料包通訊協定 (UDP)) 或自訂 Wire 格式 (例如 CSV),則 .NET 遠端處理是唯一可符合這些需求的可外掛式架構。
跨應用程式定義域通訊:如果您需要以同一處理序支援不同應用程式定義域中之物件間的通訊,則必須使用 .NET 遠端處理。
下列各節包含使用 ASP.NET 所建立之 XML Web Service、System.Net 命名空間、企業服務與 .NET 遠端處理間之部分差異的簡短摘要。
XML Web Service
如果您使用 Web 應用程式模型和 ASP.NET HTTP 執行階段 (包括 Microsoft Visual Studio .NET 中的強大支援) 建置 Active Server Pages (ASP) 應用程式,則使用 ASP.NET 所建立的 XML Web Service 會有不錯的效果。使用 XML Web Service 基礎結構,您可輕易地建立其他應用程式所用的元件,或使用其他人使用最適合 Web 架構應用程式之通訊協定、格式和資料型別所建立的元件。不支援電腦間的實際型別精確度,而且只可傳遞部分型別的引數。如需詳細資訊,請參閱使用 ASP.NET 和 XML Web Service 用戶端建立的 XML Web Service。
System.Net 命名空間
您可使用 System.Net 命名空間中的類別,從通訊端層級建置整個通訊結構。也可使用 System.Net 類別,實作可插入至遠端處理架構中的通訊協定和序列化格式。如需詳細資訊,請參閱網路程式設計。
企業服務
企業服務是依 .NET 遠端處理基礎結構所建置而成,可提供 COM+ 分散式物件模型所有的豐富性和彈性 (包括支援廣泛的分散式交易)。
.NET 遠端處理
.NET 遠端處理提供任意數目之完整通訊案例 (包含 XML Web Service ) 的工具。使用 .NET 遠端處理,您可以:
不論應用程式定義域是主控台應用程式、Windows Form、IIS、XML Web Service 還是 Windows 服務,都可在任何類型的應用程式定義域中發行或取用服務。
在二進位格式化的通訊中保留完整的 Managed 程式碼型別系統精確度 (包括泛型型別的支援)。
注意事項
XML Web Service 使用 SOAP 格式,並不會保留所有型別詳細資料。
以傳址方式傳遞物件,並返回特定應用程式定義域中的特定物件。
直接控制啟動特性和物件存留期。
實作並使用協力廠商通道或通訊協定,以針對您特定的需求擴充通訊。
直接參與通訊處理序,建立所需要的功能。