[續前].NET Framework 3.5 版中的新增功能(2)[整理]
.NET Framework 3.5 版中的新增功能體現在以下諸多方面:
- .NET Compact Framework
- ASP.NET
- 增益集和擴充性(AddIn)
- 公用語言運行庫
- 密碼系統(Cryptography)
- 網路
- WPF(Windows Presentation Foundation)
- WCF(Windows Communication Foundation)
- WF (Windows Workflow Foundation)
- Windows表單(Windows Forms)
- LINQ
- 運算式分類樹(Expression Trees)
- C#,C++.net, VB.net等程式設計語言的豐富和完善
增益集和擴充性(AddIn)
.NET Framework 3.5 中的 System.AddIn.dll 程式集向可擴充應用程式的開發人員提供了強大而靈活的支援。它引入了新的結構和模型,可協助開發人員完成嚮應用程式添加擴充性的初始工作,並確保開發人員的擴充在宿主應用程式發生更改時仍可繼續工作。該模型提供了以下功能:
- 發現
使用 AddInStore 類可以很容易地在電腦上的多個位置中尋找和管理增益集集。可以使用此類來按照增益集的基底類型搜尋和擷取有關它們的資訊,而不必載入它們。
- 啟用
使用 AddInToken 類可以輕鬆地啟用應用程式選中的增益集。只需選擇隔離和沙箱層級,系統就會完成剩餘的工作。
- 隔離
提供了對應用程式定義域和增益集的進程隔離的內建支援。每個增益集的隔離等級由宿主控制。系統將處理應用程式定義域和進程的載入,並在這些域和進程的增益集停止運行後關閉它們。
- 沙箱
可以輕鬆地將增益集配置為具有預設信任層級或自訂信任層級。提供的支援包括 Internet、Intranet、完全信任和“與宿主相同”許可權集,以及讓宿主指定自訂許可權集的重載。
- UI 構成
增益集模型支援直接構成跨應用程式定義域邊界的 Windows Presentation Foundation (WPF) 控制項。可以輕鬆地允許增益集直接構成宿主的 UI,同時保留隔離、卸載能力、沙箱和版本控制的好處。
- 版本控制
增益集結構使宿主可以引入新版本的宿主物件模型,而不中斷現有增益集或不影響開發人員對新版本的體驗。
公用語言運行庫(Common Language Runtime)
- HashSet 集合
HashSet<(Of <(T>)>) 提供對 .NET Framework 的高效能集合運算。集合是一組不重複出現且無特定順序的元素。有關更多資訊,請參見 HashSet 集合類型。
- 診斷 (EventSchemaTraceListener 類)
EventSchemaTraceListener 類提供端到端、符合架構的事件的跟蹤。可以對包含跨線程、AppDomain、進程和電腦邊界的異類組件的系統使用端到端跟蹤。已定義一個標準化事件架構來啟用跨這些邊界的跟蹤。此架構由多種跟蹤技術共用,其中包括類似事件查看器這樣的 Windows Vista 診斷工具。該架構還可支援添加符合架構的自訂元素。
EventSchemaTraceListener 類已針對日誌記錄效能進行了調整,現在隱式支援無鎖定的跟蹤。
- I/O 和管道
管道提供在同一台電腦上或網路中任意其他 Windows 電腦上啟動並執行任何進程之間的處理序間通訊。.NET Framework 提供對兩種類型的管道的訪問:匿名管道和具名管道。
- 記憶體回收(GCSettings 類和GC 類)
GCSettings 類具有一個新的 LatencyMode 屬性,可用來調整記憶體回收行程侵入應用程式的時間。可以將此屬性設定為新的 [System.Runtime.GCLatencyMode] 枚舉值之一。
GC 類具有一個新的 Collect(Int32, GCCollectionMode) 方法重載,可用來調整強制記憶體回收的行為。例如,可以使用此重載來指定記憶體回收行程應確定目前時間是否為回收對象的最佳時間。此重載採用新的 GCCollectionMode 枚舉中的值。
- 部分信任環境中的反射和反射發出(DynamicMethod)
現在,在部分信任下啟動並執行程式集可以發出並執行代碼。已發出的只調用公用類型和方法的代碼不需要超出所訪問的類型和方法要求的許可權。使用新的 DynamicMethod(String, Type, array<Type>[]()[]) 建構函式可以很容易地發出類似的代碼。
當發出的代碼需要訪問私人資料時,新的 DynamicMethod(String, Type, array<Type>[]()[], Boolean) 建構函式將允許進行受限制的訪問。宿主必須授予 ReflectionPermission 新的 RestrictedMemberAccess 標誌以啟用此功能,這使發出的代碼能夠訪問私人資料,但僅對具有等於或小於信任層級的程式集中的類型和方法適用。
對於反射,授予 RestrictedMemberAccess 的宿主同樣允許受限制地使用用來訪問私人屬性、調用私人方法等的方法,但僅對具有等於或小於信任層級的程式集適用。
- 線程處理
更好的讀取器/編寫器鎖(ReaderWriterLockSlim)
新的 ReaderWriterLockSlim 類提供明顯優於 ReaderWriterLock 的效能,可與 lock 語句相當(在 Visual Basic 中為 SyncLock)。鎖定狀態之間的轉換已得到簡化,從而使編程更容易並減少發生死結的幾率。新類支援遞迴,可簡化從 lock 和 ReaderWriterLock 的遷移。
ThreadPool 效能增強
顯著提高了在託管線程池中調度工作項目和 I/O 任務的輸送量。現在,調度可在Managed 程式碼中進行處理,而無需轉換到Unmanaged 程式碼,並且具有較少的鎖。建議對特定於應用程式的線程池實現使用 ThreadPool。
- 時區改進(DateTimeOffset 和 TimeZoneInfo)
兩種新的類型 DateTimeOffset 和 TimeZoneInfo 改進了對時區的支援,可以更容易地開發使用不同時區中的日期和時間的應用程式。
TimeZoneInfo
新的 TimeZoneInfo 類在很大程度上取代了現有的 TimeZone 類。可以使用 TimeZoneInfo 來檢索註冊表中定義的任何時區,而不僅僅是本地時區和國際標準時間 (UTC)。還可以使用此類來定義自訂時區、序列化和還原序列化自訂時區資料以及在時區之間轉換時間。
DateTimeOffset
新的 DateTimeOffset 結構對 DateTime 結構進行了擴充,可以更容易地使用跨時區的時間。DateTimeOffset 結構將時間和日期資訊儲存為一個 UTC 日期和時間以及一個指示該時間與 UTC 之差的位移量值。
[待續] .NET Framework 3.5 版中的新增功能(4)[整理]