您目前已離線,請等候您的網際網路重新連線

增進資料集序列化和遠端效能

結論
本文將告訴您,如何將較大的 .NET Framework System.Data.DataSet 類別的效能最佳化,並提供一個序列化包裝函式類別範例,這個範例已進行最佳化,可以提高序列化及還原序列化較大 DataSet 類別的效率。
其他相關資訊
當您在處理序之間傳遞 System.Data.DataSet 物件時,會使用 .NET Framework Remoting 來序列化、傳輸及還原序列化 DataSet 類別。如果您從 .NET Web 服務傳回 DataSet 類別,在內部會使用 Microsoft .NET Framework System.Xml.Serialization.XMLSerializer 類別將 DataSet 資料序列化回到用戶端。如果您從裝載於 COM+ 中的 Managed 物件將 DataSet,傳回,.NET Framework Remoting 便會使用 BinaryFormatter 類別。不論 .NET Framework 使用何種遠端機制,當序列化資料時,DataSet 類別都會將內部資料轉換成 XML。

Microsoft .NET Framework 1.0 和 .NET Framework 1.1 隨附的 DataSet 類別,可以有效率地透過 .NET Framework Remoting 將 DataSet 中的小量資料 (數百列) 進行序列化。但這個序列化機制在處理較大的 DataSet (數千列) 時將失去效率,並且需要龐大的暫時性 (短暫的) 記憶體配置。這些記憶體配置會降低應用程式延展性。

注意 暫時性記憶體配置指的是在處理程式碼的部分區段時所發生的短暫記憶體配置。因此,在 DataSet 類別的序列化期間、遠端期間以及還原序列化期間,.NET Framework Remoting 會在內部配置及解除配置各種不同的 Managed 物件,以處理遠端要求。配置及解除配置越來越大的 Managed 物件會對 .NET 記憶體管理系統造成額外的壓力,並降低整體延展性。例如,應用程式如果擁有許多會產生龐大暫時性記憶體配置的 in-flight 方法引動過程,可能會在完成所有方法呼叫之前便會耗盡記憶體。

您可以使用設計正確的 Surrogate 類型或序列化包裝函式類別,大幅增進較大 DataSets 的序列化和遠端效能。如需有關搭配 .NET Framework DataSet 類別使用 Surrogate 機制或包裝函式機制 (或兩者) 的詳細資訊,請至下列 Microsoft Developer Network (MSDN) 網站:但本文並不提供實作 DataSet Surrogate 類型或序列化包裝函式類別的完整範例。

本文包含經過最佳化的序列化包裝函式類別範例,可更有效地序列化和還原序列化較大的 DataSet。這個類別可以在遠端處理的一般 DataSet 時大幅降低暫時性記憶體配置。大幅降低暫時性記憶體配置也可以增進使用較大的 DataSet 時,遠端處理端對端的時間,並增進延展性。

範例提供一個名為 DataSetSurrogate 的序列化包裝函式類別。DataSetSurrogate 類別用來做為您要進行遠端處理的 DataSet 的包裝函式類別。伺服器元件會將您要的 DataSet 傳送至 DataSetSurrogate 建構函式,然後再將 DataSetSurrogate 類別傳回用戶端。在用戶端則會使用 DataSetSurrogate.ConvertToDataSet 方法從 DataSetSurrogate 類別來擷取 DataSet

DataSetSurrogate 類別會標示為 Serializable (可序列化),且 DataSetSurrogate 類別中的所有欄位也都是可序列化的類別。因此,當您遠端處理 DataSetSurrogate 物件時,遠端基礎結構會自動序列化和還原序列化 DataSetSurrogate 物件及其所有欄位。比起使用 DataSet 類別,使用 DataSetSurrogate 類別進行序列化的主要優點是 DataSetSurrogate 類別會使用二進位格式來序列化資料。比起現有的 DataSet XML 序列化格式,使用二進位格式進行序列化在記憶體和 CPU 方面都更有效率。

注意 如果將此序列化包裝函式類別的效能提升至最高,請在遠端處理時使用 .NET Framework System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 類別。使用 .NET Framework System.Runtime.Serialization.Formatters.Soap.SoapFormatter 類別進行遠端處理的效率不如使用 DataSetSurrogate 類別。

您可以從「Microsoft 下載中心」下載下列檔案:
下載立即下載 SurrogateSample.exe 套件。 如需有關如何下載 Microsoft 支援檔案的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
119591 如何從線上服務取得 Microsoft 支援檔案
Microsoft 已對這個檔案做過病毒掃描。Microsoft 是利用檔案發佈當日的最新病毒偵測軟體來掃描檔案。檔案會儲存在安全的伺服器上,以避免任何未經授權的更改。

存取範例檔案

將 SurrogateSample.exe 檔案儲存至您電腦上的 C 磁碟機。您可從該處解壓縮資料夾結構。每一個資料夾都有包含 Readme 檔案提供更多的指示。
內容

文章識別碼:829740 - 最後檢閱時間:09/06/2006 10:08:00 - 修訂: 1.3

  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
  • kbinfo kbdownload KB829740
意見反應
>