Visual Studio 2008開發新特性系列課程(5):.NET Framework 3.5 新功能介紹

lchj007發表於2008-05-31

1.概要
? VS2008內建對.Net Framework3.5框架的支援..Fraework3.5框架裡面提供了大量的激動人心的新功能.本次課程將主要講述.Fraework3.5裡增強的新功能.


2..NET Framework 3.5 新特性
? 程式集的增加,新庫的增加,程式碼分為red bits 和green bits
red bits----包括以前net2.0和3.0中提供的所有庫
green bits—新的庫內容(基於red bits基礎上開發,儘量不改變red bits,所以向後相容)


? .NET Framework 實現對大整數的支援。
-----新的BigInteger 型別,該型別使您可以使用任意大小的整數,直至可以達到記憶體的極限。


? 高效能集合
-----新的HashSet 類
-----System.Collections.Generic
-----標準的集合方法(例如,新增、刪除和包含)並提供了多種集合操作(包括,並集、交集和對稱差)

 HashSet<int> set1 = new    HashSet<int>();
            set1.Add(1);
            set1.Add(3);
            set1.Add(5);
            set1.Add(3);
// set1 already contains 3; it isn't added twice
 // set1 contains 1,3,5

            HashSet<int> set2 = new HashSet<int>(new int[] { 2, 4, 6 });
            // set2 contains 2,4,6

            set2.UnionWith(set1); //集合運算,並集
     set2.IntersectWith (set1); //集合運算,交集


? 管道-匿名管道
-----已提供了對.NET Framework 的匿名和命名管道的支援。
---- 在System.IO.Pipes 名稱空間。(可以用於不同程式的通訊)
----- 匿名管道用於父程式和子程式之間的通訊。
-----這些單向管道未命名,並且必須在同一臺計算機上本地使用。
-----管道用於在同一計算機或同一網路上的兩個或多個程式之間實現程式間通訊(IPC)。
----- 命名管道提供的功能更多。
-----對於初學者而言,它們是全雙工的,並且可以對網路使用。
-----命名管道支援單一名稱、基於訊息的通訊、非同步I/O 以及模擬等的多個伺服器示例。

服務端程式碼:
 using (NamedPipeServerStream pipeStream =  new NamedPipeServerStream("mypipe2"))
            {
                pipeStream.WaitForConnection();//等待連線
                using (StreamWriter sw = new StreamWriter(pipeStream))
                {
                    sw.AutoFlush = true;
                    sw.WriteLine(Console.ReadLine());
                    sw.WriteLine(Console.ReadLine());
                }
            }

客戶端程式碼:
using (NamedPipeClientStream pipeStream =new NamedPipeClientStream("mypipe2"))
            {
                pipeStream.Connect();//請求連線
                using (StreamReader sr = new StreamReader(pipeStream))
                {
                    string temp;
                    while ((temp = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(temp);
                    }
                }
            }
通過使用命名管道,客戶端和伺服器端的程式就可以直接通訊。


? 改善了時區支援
---- System.TimeZoneInfo
---- 第一個型別是TimeZoneInfo。與其前輩TimeZone型別相比,TimeZoneInfo在時區方面提供了更好的支援,例如它能夠列舉出儲存於作業系統中的各個時區資訊
String id = "Alaskan Standard Time";
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(id);


? DateTimeOffset
---- 在大多數情況下該型別將會作為傳統DateTime型別的替代品使用。
---- 與DateTime只能儲存本地和UTC時間不同的是,DateTimeOffset型別可以表示任何時區中的時間——只要指定該時區相對於UTC的偏移量即可。
DateTimeOffset now = DateTimeOffset.Now;
DateTimeOffset now2 = DateTime.Now;
DateTimeOffset now3 = new DateTimeOffset(DateTime.Now);

DateTime tvShowPremiere = new DateTime(2007, 6, 13, 8, 0, 0);
 DateTimeOffset tvShowPremiereLA = new DateTimeOffset(tvShowPremiere, new TimeSpan(-7, 0, 0));

 

? 高效能Socket API
---- 在.NET Framework 2.0 版本中,System.Net.Sockets 名稱空間提供了一個幾乎擁有Windows? WinSock Win32? API 的所有功能的Socket 類。該功能所屬的類包含為託管程式碼開發人員設計的各種方法和屬性。
---- 2.0 版本的Socket 類適合多種需要使用網路套接字的客戶端應用程式,以及一些伺服器和服務型別的應用程式。
---- 遺憾的是,。2.0 版本的Socket 類的主要問題是它不僅在分配必要的基礎物件以便在大量套接字上同時保持I/O 操作時需要佔用過多的CPU 迴圈,而且在執行單個套接字I/O 操作時也同樣如此。
---- 新版本提供了另一個使用套接字上執行非同步I/O 的方法模式。這種新模式並不要求為每個套接字操作分配操作上下文物件。
---- 封裝操作上下文的是一個SocketAsyncEventArgs 物件,而不是IAsyncResult 物件。該應用程式建立並管理(甚至可以重複使用)SocketAsyncEventArgs 物件。


? P2P
---- System.Net.PeerToPeer 名稱空間
---- System.Net.PeerToPeer 名稱空間位於System.Net.dll 程式集中,它提供了輕鬆建立對等(P2P) 應用程式所需的核心構建基塊。


? 新的GC方法
---- GCSettings.LatencyMode(可以指定垃圾回收的模式)
---- GC.Collect method


? 外掛模式
主機--->主機檢視--->主機介面卡--->【IContract】<-----外掛介面卡<-----外掛檢視<-----外掛
---- System.AddIn 名稱空間
---- 構建可擴充套件的宿主應用程式
---- 宿主與其載入項之間的互動會經歷下列三個主要階段:發現、啟用和生存期管理
---宿主和外掛通過隔離邊界彼此隔離。它們只引用各自的檢視,因此可以獲得用於通訊的約定的抽象層。此外,宿主/外掛不能直接自我引用,因此可以相對隔離與其通訊的所有其他元件。
---- 宿主和外掛通過隔離邊界彼此隔離。它們只引用各自的檢視,因此可以獲得用於通訊的約定的抽象層。此外,宿主/外掛不能直接自我引用,因此可以相對隔離與其通訊的所有其他元件。


相關文章