Dear all; 結(jié)合下自己認(rèn)識,并查閱了一些幫助文檔,,介紹一點.Net平臺運行機(jī)制和概念,,目前寫出了一部分,還有部分,,下次再補充,。
微軟的.NET戰(zhàn)略,微軟首席執(zhí)行官鮑爾默:“Microsoft.NET代表了一個集合,、一個環(huán)境,、一個可以作為平臺支持下一代Internet的可編程框架。” 微軟主席比爾.蓋茨:“軟件將使一切成為可能”,。 這種向.NET平臺的遷移是和“從DOS到Windows遷移”一樣意義重大,。 NET平臺是“語言中立的”,目前支持20多種編程語言,,遵循公共語言規(guī)范CLS 微軟提供:VB.NET, C++.NET, C#.NET, J#.NET 第三方提供:APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk…
一..Net 平臺的架構(gòu) ====è
公共語言運行庫 CLR的工作目的: 1.CLR負(fù)責(zé)管理和執(zhí)行.NET框架代碼 2.CLR在.NET平臺中充當(dāng)一個類似于代理人的角色,,負(fù)責(zé)底層統(tǒng)一的進(jìn)程/線程管理(如線程安全)、內(nèi)存管理(如垃圾收集),、安全管理,、代碼驗證、編譯以及其他的系統(tǒng)服務(wù) 3.CLR通過中間語言機(jī)制實現(xiàn) .NET的編程語言無關(guān)性,,此外也為.NET Framework帶來潛在的平臺無關(guān)性
二.Net 程序執(zhí)行的過程 上面右圖介紹了.Net 程序的執(zhí)行過程,,當(dāng)使用VS工具等SDK開發(fā)工具進(jìn)行.Net程序開發(fā)時,進(jìn)過編譯生成的Bin文件,,基本上文件格式有Exe和Dll兩種,。這種文件是一種被Microsoft成為中間語言的文件. 中間語言IL,英文全稱為Intermediate Language,,這是種對內(nèi)存堆棧基本操作的代碼,,使用.Net SDK的MSIL Disassembler Tool可查看到一些編譯後的IL代碼,。對一些喜歡或比較關(guān)心底層操作的人員比較有用。 當(dāng)我們執(zhí)行這種Exe或Dll文件的時候,,如果系統(tǒng)有安裝.Net環(huán)境平臺,,CLR將負(fù)責(zé)整個管理和執(zhí)行整個.Net代碼。它會將程序所會使用到的.Net類庫文件,,通過類加載器,,加載到內(nèi)存中, 然後通過JIT(即時編譯器) 將這個MSIL代碼編譯成計算機(jī)可以識別的機(jī)器碼,這種機(jī)器碼,,將根據(jù)計算機(jī)CPU的不同將有所不同,。
三..Net內(nèi)存管理和垃圾回收機(jī)制
一般情況下,我們不需要對內(nèi)存進(jìn)行直接的操作,上面表格1中介紹手工操作的弊端,,基於此在.Net平臺中Microsoft提出了內(nèi)存自動管理的機(jī)制,,實現(xiàn)的內(nèi)存的申請和釋放的自動原則,減少錯誤的潛在的Bug的出現(xiàn),。 垃圾回收器跟蹤并回收托管內(nèi)存中分配的對象,。垃圾回收器定期執(zhí)行垃圾回收以回收分配給沒有有效引用的對象的內(nèi)存。當(dāng)使用可用內(nèi)存不能滿足內(nèi)存請求時,,垃圾回收會自動進(jìn)行,。比如在一些使用引用的對象,如果 此引用的對象,,一段時間后沒有引對象用的使用,,CLR將進(jìn)行來及回收處理,及時釋放內(nèi)存,,而這就是我們?nèi)斯雎缘牡胤?。但有時并不是完全要放手自動實現(xiàn)的,比如有個對象可能只是暫時的沒有對象的引用,,而并 不想及時釋放掉,,如果放手讓垃圾回收機(jī)制看來處理內(nèi)存,將造成一些多餘的操作,,這時就可以使用System.GC.SuppressFinalize()方法抑制垃圾回收器,,不讓其進(jìn)行回收,在.Net類庫中,,System命名空間下的GC類,,將 控制系統(tǒng)垃圾回收器(一種自動回收未使用內(nèi)存的服務(wù))。這是一個Static類,此類中的方法影響何時對對象進(jìn)行垃圾回收以及何時釋放對象所分配的資源,。類中的屬性提供以下信息:系統(tǒng)可用內(nèi)存總量,、分配給對象的 內(nèi)存的周期類別(代)。比如可以使用應(yīng)用程序可以使用 System.GC.Collect()方法強制進(jìn)行垃圾回收,。用 C# 或 C++ 編寫的類型實現(xiàn)析構(gòu)函數(shù),,由編譯器將析構(gòu)函數(shù)轉(zhuǎn)換為對 Object.Finalize() 的重寫, 多數(shù)情況下,,如果某 對象有終結(jié)器,,則垃圾回收器會在釋放該對象前調(diào)用其終結(jié)器。類可以實現(xiàn) IDisposable 接口,,該接口包含執(zhí)行資源管理和清理任務(wù)的 IDisposable.Dispose 方法,。實現(xiàn) Dispose 的類作為它們的類協(xié)定的一部分,必須 指定類使用者是否需要及在什么時候調(diào)用該方法來清理對象,。默認(rèn)情況下,,垃圾回收器并不調(diào)用 Dispose 方法,然而 Dispose 方法的實現(xiàn)可以調(diào)用GC 類中的方法來自定義垃圾回收器的完成行為,。
四..Net類庫的介紹 不同的編程語言所提供的API或類庫存在很大差異,,選擇一種編程語言意味著程序員必須學(xué)習(xí)該語言所提供的類型、結(jié)構(gòu),、類庫,、函數(shù)等等。.Net 類庫,,從最早2002年開始的1.0 ,,1.1到2005年發(fā)布的 2.0,3.0,,3.5,, 3.5SP1以及最新的預(yù)發(fā)布的4.0.可以說從1.1到 2.0的變化是.Net逐漸強大的一個轉(zhuǎn)折點。2.0的類庫中淘汰了1.0中的一些不常用的了類庫,,并增加了大量的新的類庫,,比如泛型,匿名方法,,可空類型,,迭代器,部分類Partial,, 以及大量控件類庫,,3.0和3.5增加了Linq語言集成查詢功能,Lambda表達(dá)式,,以及擴(kuò)展方法,。 System命名空間是最根層的命名空間,其下面有System.CodeDom,System.Collections,System.ComponentModel,Sytem.Configuration,System.Data等,現(xiàn)如下圖介紹,;
下面將簡單介紹下每個命名空間的作用,; System.CodeDom 命名空間包含可以用于表示源代碼文檔的元素和結(jié)構(gòu)的類。此命名空間中的類可用來建立源代碼文檔結(jié)構(gòu)的模型,,使用 System.CodeDom.Compiler 命名空間提供的功能可以將源代碼文檔輸出為所支持語言的源代碼,。 System.Collections 命名空間包含接口和類,這些接口和類定義各種對象(如列表,、隊列,、位數(shù)組、哈希表和字典)的集合,。 System.ComponentModel 命名空間提供用于實現(xiàn)組件和控件運行時和設(shè)計時行為的類,。此命名空間包括用于實現(xiàn)屬性和類型轉(zhuǎn)換器、綁定到數(shù)據(jù)源以及授權(quán)組件的基類和接口,。 System.Configuration 命名空間包含提供用于處理配置數(shù)據(jù)的編程模型的類型,。.NET Framework 3.5 版中引入了 System.Configuration。 System.Data 命名空間提供對表示 ADO.NET 結(jié)構(gòu)的類的訪問,。通過 ADO.NET 可以生成一些組件,,用于有效管理多個數(shù)據(jù)源的數(shù)據(jù)。常見的Dataset,,以及數(shù)據(jù)庫操作的類在此命名空間,。 System.Deployment 命名空間提供一些與程序發(fā)布有關(guān)的類。 System.Diagnostics 命名空間提供特定的類,,使您能夠與系統(tǒng)進(jìn)程Process,、事件日志Eventlog和性能計數(shù)器Counter進(jìn)行交互。 System.Drawing 命名空間提供了對 GDI+ 基本圖形功能的訪問,。在 System.Drawing.Drawing2D,、System.Drawing.Imaging 以及 System.Drawing.Text 命名空間中提供了更高級的功能。 System.EnterpriseServices 命名空間為企業(yè)應(yīng)用程序提供重要的基礎(chǔ)結(jié)構(gòu),。COM+ 為企業(yè)環(huán)境中部署的組件編程模型提供服務(wù)結(jié)構(gòu),。該命名空間向 .NET 對象提供對 COM+ 服務(wù)的訪問,COM+ 服務(wù)令 .NET Framework 對象更適用于企業(yè)應(yīng)用程序,。 System.Globalization 命名空間包含定義區(qū)域性相關(guān)信息的類,,這些信息包括語言、國家/地區(qū),、使用的日歷,、日期、貨幣和數(shù)字的格式模式以及字符串的排序順序,。我們可以使用這些類編寫全球化(國際化)應(yīng)用程序,。而像 StringInfo 和 TextInfo 這樣的類更是為我們提供了諸如代理項支持和文本元素處理等高級全球化功能,。 System.IdentityModel 命名空間包含System.Globalization和System.IdentityModel.Policy以及System.IdentityModel.Selectors命名空間,第一個命名空間包含定義區(qū)域性相關(guān)信息的類,,這些信息包括語言,、國家/地區(qū)、使用的日歷,、日期,、貨幣和數(shù)字的格式模式以及字符串的排序順序。我們可以使用這些類編寫全球化(國際化)應(yīng)用程序,。而像 StringInfo 和 TextInfo 這樣的類更是為我們提供了諸如代理項支持和文本元素處理等高級全球化功能,。System.IdentityModel.Policy 命名空間,包含在 WCF 中構(gòu)建或使用授權(quán)策略所需的類和接口,。實現(xiàn)授權(quán)策略的類可以實現(xiàn) IAuthorizationPolicy 接口,。一個授權(quán)策略,。此命名空間中其他重要的類包括 AuthorizationContext 和 EvaluationContext,。最後一個命名空間包含包含一些類,這些類可用來為傳出 SOAP 消息提供安全令牌,,并可對傳入 SOAP 消息中的安全令牌進(jìn)行身份驗證,。 System.IO 命名空間包含允許讀寫文件和數(shù)據(jù)流的類型以及提供基本文件和目錄支持的類型。 System.Media 命名空間包含用于播放聲音文件和訪問系統(tǒng)提供的聲音的類,。 System.Net 命名空間為當(dāng)前網(wǎng)絡(luò)上使用的多種協(xié)議提供了簡單的編程接口,。常見Socket編程,簡易DNS類,。IPAddress類,,還包括System.Net.Mail 命名空間發(fā)送有的郵件的常見類。 S System.Reflection 命名空間包含通過檢查托管代碼中程序集,、模塊,、成員、參數(shù)和其他實體的元數(shù)據(jù)來檢索其相關(guān)信息的類型,。 System.Resources 命名空間提供各種類和接口,,這些類和接口使開發(fā)人員可以創(chuàng)建、存儲和管理在應(yīng)用程序中使用的不同特定于區(qū)域性的資源,。System.Resources 命名空間最重要的類之一是 ResourceManager 類,。ResourceManager 類使用戶可以訪問和控制在主程序集或在資源附屬程序集中存儲的資源。使用 ResourceManagerGetObject() 和 ResourceManagerGetString() 方法檢索特定于區(qū)域性的對象和字符串,。 System.Runtime 命名空間包含支持不同命名空間(如 System,、Runtime 命名空間和 Security 命名空間)的高級類型。此空間包含System.Runtime.InteropServices 命名空間,,其提供各種各樣支持 COM interop 及平臺調(diào)用服務(wù)的成員,。 System.Security 命名空間提供公共語言運行庫安全系統(tǒng)的基礎(chǔ)結(jié)構(gòu),,包括權(quán)限的基類。常見的一些加密解密算法由此空間提供,。 System.ServiceModel 命名空間包含生成 Windows Communication Foundation (WCF) 服務(wù)和客戶端應(yīng)用程序所需的類,、枚舉和接口,這些類,、枚舉和接口可用于生成大范圍的分布式應(yīng)用程序,。 此空間3.0以上的版本才會有。 System.Text 命名空間包含表示 ASCII,、Unicode,、UTF-7 和 UTF-8 字符編碼的類;用于將字符塊轉(zhuǎn)換為字節(jié)塊和將字節(jié)塊轉(zhuǎn)換為字符塊的抽象基類,;以及操作和格式化 String 對象而不創(chuàng)建 String 的中間實例的 Helper 類,。StringBuilder在此空間。 System.Threading 命名空間提供一些使得可以進(jìn)行多線程編程的類和接口。除同步線程活動和訪問數(shù)據(jù)的類(Mutex,、Monitor,、Interlocked、AutoResetEvent 等)外,,此命名空間還包含一個 ThreadPool 類(它允許用戶使用系統(tǒng)提供的線程池)和一個 Timer 類(它在線程池線程上執(zhí)行回調(diào)方法)。 System.Timers 命名空間提供 Timer 組件,,它使您可以指定的間隔引發(fā)事件,。 System.Web 命名空間提供使得可以進(jìn)行瀏覽器與服務(wù)器通信的類和接口。此命名空間包括 HttpRequest 類(用于提供有關(guān)當(dāng)前 HTTP 請求的廣泛信息),、HttpResponse 類(用于管理對客戶端的 HTTP 輸出)以及 HttpServerUtility 類(用于提供對服務(wù)器端實用工具與進(jìn)程的訪問),。System.Web 還包括用于 Cookie 操作、文件傳輸,、異常信息和輸出緩存控制的類,。現(xiàn)在我們進(jìn)行的Web系統(tǒng)的很多控件都是基於此命名空間的。 System.Windows 命名空間,,提供了一些重要的 Windows Presentation Foundation (WPF) 基元素類,、各種支持 WPF 屬性系統(tǒng)和事件邏輯的類以及由 WPF 核心和框架更加廣泛使用的其他類型。常見的Windows Form 編程就是基於此命名空間下,,System.Windows.Forms 命名空間包含用于創(chuàng)建基于 Windows 的應(yīng)用程序的類,,以充分利用 Microsoft Windows 操作系統(tǒng)中提供的豐富的用戶界面功能。 System.Xml 命名空間為處理 XML 提供基于標(biāo)準(zhǔn)的支持,。.Net 3.0增加的Linq功能,,使用System.Xml.Linq 命名空間中的類庫,支持的標(biāo)準(zhǔn)包括: · XML 1.0 - http://www./TR/1998/REC-xml-19980210 - 包括 DTD 支持,。 · XML 命名空間 - http://www./TR/REC-xml-names/ - 流級別和 DOM,。 · XSD 架構(gòu) - http://www./2001/XMLSchema · XPath 表達(dá)式 - http://www./TR/xpath · XSLT 轉(zhuǎn)換 - http://www./TR/xslt · DOM 級別 1 核心 - http://www./TR/REC-DOM-Level-1/ · DOM 級別 2 核心 - http://www./TR/DOM-Level-2 以上是是目前.Net 類庫中的一些常見的命名空間,,只是簡單的介紹下大致的用途,詳情請參閱MSDN,,這是個比較好的官方Help文檔,。
五.其他類庫和非托管資源的使用 .NET Framework實現(xiàn)了應(yīng)用程序開發(fā)的“通用性”,所有的編程語言均使用統(tǒng)一的基礎(chǔ)類庫一致性大大提高了軟件開發(fā)的效率和生產(chǎn)率,,并可以節(jié)省由于語言差異而對程序員培訓(xùn)的費用,。但是類庫也是有其具局限性的, 目前使用Windows API 庫,,進(jìn)行基於Windows的編程,,是一直比較熱的方向,很多開發(fā)語言都會使用到,,比如C++中使用其進(jìn)行MFC編程,,同樣在使用c#或VB.net進(jìn)行編程的時候,也是可以導(dǎo)入Windows API庫進(jìn)行編 程的,使用System.Runtime.InteropServices 命名空間下的DllimportAttribute類,,該類指示該屬性化方法由非托管動態(tài)鏈接庫 (DLL) 作為靜態(tài)入口點公開,。使用舉例如下: [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); 上例導(dǎo)入了User32.dll文件里封裝的MessageBox函數(shù),將其最為非托管資源使用,。當(dāng)然不只是可以導(dǎo)入Microsoft的API,,同樣也可以是其他廠商提供的API類庫。甚至一些API類庫,,也可以在項目中通過”Add”功能添加。 使用時Using 其命名空間即可,。
六.Socket網(wǎng)絡(luò)編程==》後續(xù)介紹 七.文件IO操作==》後續(xù)介紹 八.注冊表操作==》後續(xù)介紹 九.XML文件操作==》後續(xù)介紹 十.線程Threading操作==》後續(xù)介紹 十一.數(shù)據(jù)庫操作==》後續(xù)介紹 十二.GDI+繪圖操作==》後續(xù)介紹 十三.委托Delegate和事件Event==》後續(xù)介紹 十四.設(shè)計模式(Design Pattern)之簡單工廠模式(factory pattern) ==》後續(xù)介紹 十五.泛型(Generic Type) ==》後續(xù)介紹 十六 Class類的修飾詞(Modifier) 常見的類修飾詞有Public,Private,interal,protected四個,,修飾其成員屬性和方法的將在原來的基礎(chǔ)上增加一種Protected internal。默認(rèn)情況class 和結(jié)構(gòu)的訪問權(quán)限是內(nèi)部的,,默認(rèn)情況下,, 如下在方法和屬性前不加訪問權(quán)限修飾詞,其訪問權(quán)限默認(rèn)是private 的,。接口的修飾詞默認(rèn)是內(nèi)部訪問級別,,其成員都是public的,包括屬性,,方法,,索引器。 十七 集合(數(shù)組Array) ==》後續(xù)介紹 十八 裝箱(Boxing)與拆箱(Unboxing) ==》後續(xù)介紹 十九 反射(Reflection) ==》後續(xù)介紹 二十. IIS5.0,IIS6.0,IIS7.0運行機(jī)制==》後續(xù)介紹 廿一. ASP.Net 的工作原理==》後續(xù)介紹 廿二. 頁面的生命周期(Page’s Life Cycle) ==》後續(xù)介紹 廿三 控件的生命周期(Control ‘s Life Cycle) ==》後續(xù)介紹 廿四. 了解WPF,,WCF,,WFF,WF,,.Net Remoting, WebService以及 Microsoft MVC開發(fā)模式 WCF: Windows Contribution Foundation Windows 分布式編程模板 WPF: Windows Presentation Foundation windows表現(xiàn)型模板 目前Vista 和Win7中的一些Microsoft 程式,,一直在使用這種方式創(chuàng)建,,其界面比較絢 WWF: Windows Work Flow Windows工作流 WSDL:WebService Dynamical Link Web服務(wù)動態(tài)連接 .Net Remoting: Url 路由 MVC開發(fā)模式:Model View Controler 廿五 .字符編碼的一些知識ASCII ,Unicode 當(dāng)計算機(jī)剛發(fā)明的時候,美國人站在自身的角度,,對字符編碼,,發(fā)明了ASCII編碼,它使用7bit存儲字符,,於是只能存儲2的7次方減1即是127個字符,,詳細(xì)如下:
因只能存儲127個字符,,顯然後續(xù)對於逐漸擴(kuò)展的字符是不夠的,,之後產(chǎn)生了一個ISO 8859編碼標(biāo)準(zhǔn),采用八位存儲字符,,可存儲255個字符,,兼容原來字符的基礎(chǔ)上,擴(kuò)展了128~255個字符
但是隨著計算機(jī)在中國,,日本,,韓國等Asia亞語系國家,上面的編碼方式就暴露出能力不足的問題,,因為僅中文的漢字就2萬多個,,對此我們國家自己創(chuàng)建了一系列簡體編碼比如GB2312(可存儲6768個漢字),GBK(21003),,等,, 對於繁體的漢字,Big5標(biāo)準(zhǔn),,還有些繁體香港,,繁體澳門的編碼,,同樣對於西歐的國家,也有各自的標(biāo)準(zhǔn),。這樣的結(jié)果就是導(dǎo)致編碼方式的多樣化,,嚴(yán)重的結(jié)果將導(dǎo)致文化交流困難性,不利於軟件的全球化發(fā)展,。為此國際化組織 有開發(fā)了一種編碼方式Unicode編碼,。采用2個字節(jié)16bit存儲數(shù)據(jù)。其將存儲650065個字符,,完全滿足各種國家字符的使用,,但是很多以前開發(fā)的程序和目前使用表廣泛的程序使用的是1個字節(jié)的存儲方式,因此爲(wèi)了兼容以前的 1個字節(jié)編碼方式,,又推出了UTF(Unicode Transform Format傳輸格式碼)編碼,。但是它又分UTF-32,UTF-16,,UTF-8,,UTF-7。對于所有編碼,,內(nèi)部 .NET Framework 字符串都是本機(jī) UTF-16 字符串,。
PS:Unicode中文編碼的其實範(fàn)圍是”/u4e00~/9fa5”,這是個小常識,可以在以後的開發(fā)中驗證,,是否輸入的是中文,。
廿六 單元測試的常見工具NUnit.exe和TDD(Test Driver Develop)測試驅(qū)動開發(fā) 開發(fā)一個系統(tǒng),或軟件以及甚至一個dll插件,之後最終要的是測試,,測試分很多種,,比如單元測試,系統(tǒng)測試,,集成測試,用戶測試,,WEB測試與負(fù)載測試等,。甚至有些專家提出,當(dāng)需求分析進(jìn)行后,,先進(jìn)性測試代碼的編寫,, 可見測試的重要性,測試進(jìn)行的好壞,,將決定系統(tǒng)後續(xù)維護(hù)健壯性,,甚至影響著用戶的市場。在這些測試當(dāng)中,,單元測試是首當(dāng)其沖的,,NUnit工具是使用.Net開發(fā)的進(jìn)行單元測試的工具,,它通過編寫一些測試代碼來對,來對一些 類庫文件進(jìn)行測試,,它來源自鼎鼎有名的XUnit家族,,功能同進(jìn)行Java代碼測試的JUnit,以及針對C++的CPPUnit,,它的下載地址是:http://www.. 目前的版本是NUnit-2.5.2.9222,。單元測試看上去雖然有點麻煩,但是它為程序 員提供了一個安全的觀點,,讓程序員對自己的程序更加有信心,,在減少開發(fā)后期進(jìn)行頻繁Debug所耗費時間的同時也為應(yīng)用軟件提供了第一道安全防護(hù)網(wǎng),因此,,單元測試是提高開發(fā)效率和軟件品質(zhì)的一個重要的手段,。利用UNint, 我們可以在.Net編程過程中非常方便的進(jìn)行單元測試,,它圖形化的界面和簡單而強大的測試框架為我們提供了一個非常舒適而有趣的測試環(huán)境,,能夠讓程序員覺得進(jìn)行單元測試并不枯燥乏味,習(xí)慣后甚至還能成為一種樂趣,。 NUnit是個可以圖形操作GUI的工具,,免費的,完全由C#語言來編寫,并且編寫時充分利用了許多.NET的特性,比如反射,客戶屬性等等,,最重要的一點是它適合于所有.NET語言,。 NUnit雖然在使用上非常簡單,贏得了一部分用戶,, 甚至于微軟在企業(yè)庫的源碼中也提供了使用NUnit測試的版本,,但是NUnit讓人最不爽的地方是沒有提供Visual Studio IDE插件,這樣如果做單元測試,,會發(fā)現(xiàn)自己每天忙于奔波于IDE和NUnit GUI之間,,不停的在切換窗口;還有一點 NUnit雖然跟JUnit是兄弟,,但是它的威望和能力相較Junit就差遠(yuǎn)了,,尤其是擴(kuò)展能力?;洞嗽?,介紹另一款優(yōu)秀的單元測試工具——TestDriven.NET 2.0。它是以插件的形式集成在Visual Studio.NET IDE中的單元測試工具,,能夠兼 容各種Visual Studio版本,,并且集成了多種單元測試框架諸如NUnit,MbUnit,以及Visual Studio Team System適配器等,。TestDriven.NET的前身是NUnitAddIn,,由Jamie Cansdale大師開發(fā),一開始作者只是想做一個NUnit插件集成到 Visual Studio中,,經(jīng)過多次版本更新,,NUnitAddIn在2004年9月底更名為TestDriven.NET,并在當(dāng)年的12月初發(fā)布了它的第一個Release版本,,即TestDriven.NET 1.0,。由于它在開發(fā)中的出色表現(xiàn),讓很多開發(fā)人員期待它的下一個版本 的發(fā)布,,這一等待卻足足等了兩年,,在今年的10月底,終于迎來了姍姍來遲的TestDriven.NET 2.0版本,。然而這一等待卻是值得的,,在2.0中,給我們帶來了太多的驚喜,,它集成了.NET Reflector,、NConver、NConverExplorer,、 TypeMock.NET等,,功能更加強大。安裝完TestDriven.NET 2.0 后,,重新啟動Visual Studio tools,,可以發(fā)現(xiàn)在Visual Studio.NET IDE的右鍵菜單中會多出一些新項,所有的操作都是直接通過這些右鍵菜單來完成,。當(dāng)然對于 TestDriven.NET 2.0它的專業(yè)版和開發(fā)版已經(jīng)開始收費,,只有個人版仍然可以免費下載使用。有關(guān)TestDriven.NET 2.0的詳細(xì)信息請訪問:http://www./ ,。值得提出的是如果要正常使用TestDriven.NET 2.0 需要添加 nunit.framework.dll文件,,此文件在安裝NUnit時默認(rèn)在將C:/Program Files/NUnit 2.5.2/bin/net-2.0/framework文件路徑下。
廿七 一款反編譯工具Reflector.exe (目前隨著.Net版本的更新依然在更新中) Author: Red Gate’s NET Reflector是一個.NET平臺下的類瀏覽器和反編譯工具,,我們可以用它來瀏覽程序集的類和方法,,可以分析由這些類和方法生成的中間語言 (MSIL),目前版本是.NET Reflector 5.0,,可通過其Reflector.FileDisassembler.dll插件分解原 文件,看到其源碼,對分析別人源碼,,有大的好處,。 廿八 一些小概念 Static 關(guān)鍵字可以修飾類,可以修飾字段,,屬性,,方法,。 1》靜態(tài)類和靜態(tài)成員: 1.使用static修飾的類是靜態(tài)類,其成員全靜態(tài)的,密封不能被繼承,,可以有靜態(tài)的構(gòu)造函數(shù),。 2.靜態(tài)成員:在第一次被訪問之前,並且在任何靜態(tài)構(gòu)造函數(shù)之前被初始化,。靜態(tài)構(gòu)造函數(shù),,也是進(jìn)行初始化工作,無訪問修飾詞,。 2》構(gòu)造函數(shù)默認(rèn)是Public 的,,但是也可以是Static和private的,如果是private 其目的是阻止被實例化,。 堆(Heap)和棧(Stack)的概念: 前者是由編譯器自動編譯和釋放的,,後者是程序員分別和釋放的。 3》線程和進(jìn)程 前者是系統(tǒng)資源分配和調(diào)度的單位 後者是CPU調(diào)度和分配的單位,,一個進(jìn)程可以有很多個線程,,這些進(jìn)程共享這些資源。 |
|