程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> .NET Remoting與ASP.NET Web服務性能比較

.NET Remoting與ASP.NET Web服務性能比較

編輯:關於ASP.NET

摘要:本文對 Microsoft ASP.NET Web 服務與 Microsoft .NET Remoting 的相對性能進行比較。Microsoft ASP.NET Web 服務的互操作性最好,並完全支持 HTTP 上的 WSDL 和 SOAP;而 Microsoft .NET Remoting 可實現公共語言運行庫類型系統的高保真,並支持其他數據格式和通信通道。

從 MSDN Code Center 下載 BDADotnet.msi 示例代碼(英文)。

簡介

ASP.NET Web 服務和 .NET Remoting 為分布式應用程序中的進程間通信提供了一整套設計選項。通常,ASP.NET Web 服務的互操作性最好,並完全支持 HTTP 上的 WSDL 和 SOAP;而 .NET Remoting 可實現公共語言運行庫類型系統的高保真,並支持其他數據格式和通信通道。有關詳細信息,請參閱 ASP.NET Web 服務還是 .NET Remoting:如何選擇。

本文主要對這兩項技術的相對性能進行比較。

ASP.NET Web 服務

ASP.NET 提供以 Microsoft® IIS 作為宿主的基礎結構,支持 SOAP、XML 和 WSDL 等行業標准。盡管 .NET Remoting 也支持 IIS 宿主和 HTTP 上的 SOAP,但 ASP.NET 卻可提供最高級別的 SOAP 互操作性,包括對 SOAP Section 5 和 Document/Literal 的支持。

ASP.NET 可以充分利用 IIS 具有的功能,如安全性和日志記錄。IIS 宿主也很強大,因為它可以在 Aspnet_wp.exe 終止後重新生成它。此外,由於 ASP.NET Web 服務的服務器和客戶端的配置都已簡化,因此與使用 .NET Remoting 提供的服務相比,它的創建和使用更為容易。

.NET Remoting

.NET Remoting 更具通用性和擴展性,允許在使用不同傳輸協議和序列化格式的對象間進行通信。它支持二進制、SOAP、自定義格式以及 TCP、HTTP 和自定義協議。支持多對象創建和生存期模式,包括 Singleton、SingleCall 和 Client-Activated。Remoting 需要一個主機進程,可以是 IIS、Microsoft® Windows 服務或用 .NET 編寫的可執行文件。

在具有 ASP.NET 的 IIS 中宿主使用 SOAP 格式化程序的 .NET Remoting 對象時,該對象可以公開為 XML Web 服務。由於有效負載以 HTTP 上的 SOAP 進行編碼,因此任何支持 SOAP 編碼格式的客戶端均可通過 Internet 訪問該對象。使用 HTTP 協議的另一個優點是它通常可以暢通無阻地通過大多數防火牆。TCP 通道和二進制格式化程序可以部署在服務器和客戶端均運行 .NET Framework 的 Intranet 環境中。此方法的性能最佳,因為在使用原始套接字通過網絡傳輸數據時使用了效率高於 HTTP 的自定義協議。盡管此方法在封閉環境中可以提供出眾的性能,但它不能部署於客戶端未運行 .NET Framework 的跨平台方案。

IIS 主機使用安全套接字層 (SSL) 為網絡級保護提供安全通信,您也可以利用 IIS 和 ASP.NET 身份驗證和授權。TCP 通道以及不通過 IIS 宿主的 HTTP 通道不支持安全套接字傳輸,因此其數據以明文形式傳輸。如果使用的是 TCP 通道或由非 IIS 進程宿主的 HTTP 通道,則您需要負責實現其安全性。

測試方案

分布式應用程序中進程間通信的性能取決於以下因素:

用於跨遠程邊界的應用程序間傳輸信息的通道(包括 TCP 和 HTTP)占用的系統開銷量。TCP 套接字比 HTTP 更為有效。

另一個因素是序列化。序列化流可以通過 XML、SOAP 或壓縮二進制表示法進行編碼。ASP.NET Web 服務使用 XMLSerializer 類將對象序列化為 XML 流,XML 流的速度非常快,但由於存在 XML 分析,因而需要一定的系統開銷。Remoting 分別使用 BinaryFormatter 和 SOAPFormatter 將對象序列化為二進制格式和 SOAP 格式。由於這些格式化程序使用反射,因而對於引用對象很快,但對於必須經過裝箱或取消裝箱來通過反射 API 傳遞的值類型則較慢。此外,SOAPFormatter 還需要額外的系統開銷以生成編碼的 SOAP 消息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved