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

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 命名空間
---- 構建可擴展的宿主應用程序
---- 宿主與其加載項之間的交互會經歷下列三個主要階段:發現、激活和生存期管理
---宿主和插件通過隔離邊界彼此隔離。它們只引用各自的視圖,因此可以獲得用於通訊的約定的抽象層。此外,宿主/插件不能直接自我引用,因此可以相對隔離與其通訊的所有其他組件。
---- 宿主和插件通過隔離邊界彼此隔離。它們只引用各自的視圖,因此可以獲得用於通訊的約定的抽象層。此外,宿主/插件不能直接自我引用,因此可以相對隔離與其通訊的所有其他組件。


發佈了79 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章