.NET Framework
.NET Framework 是由微軟開發,一個致力於敏捷軟件開發(Agile software development)、快速應用開發(Rapid application development)、平臺獨立性和網絡透明化的軟件開發平臺。.NET是微軟為下一個十年對伺服器和桌上型軟件工程邁出的第一步。NET包含許多有助於互聯網和內部網應用迅捷開發的技術。
.NET Framework是微軟公司繼Windows DNA之後的新開發平臺。.NET Framework是以一種採用系統虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#、VB.NET、C++、Python等)的開發。
.NET也為應用程式介面(API)提供了新功能和開發工具。這些革新使得程式設計員可以同時進行Windows應用軟件和網絡應用軟件以及元件和服務(web服務)的開發。.NET提供了一個新的反射性的且物件導向程式設計編程介面。.NET設計得足夠通用化從而使許多不同高階語言都得以被彙集。
Oracle公司的Java程式語言和Java平臺企業版技術是.NET平臺的競爭對手之一,它們有很多概念也是互通的。
版本
版本 | 完整版號 | 發行日期 | Visual Studio | Windows預設安裝 |
---|---|---|---|---|
1.0 | 1.0.3705.0 | 2002-02-13 | Visual Studio .NET | |
1.1 | 1.1.4322.573 | 2003-04-24 | Visual Studio .NET 2003 | Windows Server 2003 |
2.0 | 2.0.50727.42 | 2005-11-07 | Visual Studio 2005 | |
3.0 | 3.0.4506.30 | 2006-11-06 | Windows Vista, Windows Server 2008 | |
3.5 | 3.5.21022.8 | 2007-11-19 | Visual Studio 2008 | Windows 7, Windows Server 2008 R2 |
4.0 | 4.0.30319.1 | 2010-04-12 | Visual Studio 2010 | |
4.5 | 4.5.40805 | 2011-09-13 (Developer Preview) | Visual Studio 11 | Windows 8, Windows Server 8 |
.NET Framework 1.0
完整版號 - 1.0.3705
這是最早的.NET構架,於2002年發行。它可以以一個獨立且可重新分發的包的形式或在一個軟件發展工具包集中被獲得。它也是第一個微軟Visual Studio .NET的發行版的一部分(也被稱作Visual Studio .NET 2002)。
.NET Framework 1.1
完整版號 - 1.1.4322
這是首個主要的.NET Framework升級版本,發行於2003年。它可以以一個獨立的可重新分發的包的形式或在一個軟件發展工具包集中被獲得。它也是第二個微軟Visual Studio .NET版本的一部分(也被稱作Visual Studio .NET 2003)。它也是首個被Windows作業系統-Windows Server 2003所內建的.NET Framework版本。
自1.0版本以來的改進:
- 內建了對mobile ASP.NET控制項的支援。這在1.0版本是以附加功能方式實現的,現在已經整合到框架的內部。
- 安全方面的變更 - 使得Windows表單代碼以可靠的行為執行,從而可以在Internet環境內安全運行,並且加入了ASP.NET應用程式的代碼安全訪問功能。
- 內建了對ODBC和Oracle資料庫的支援。這在1.0版本是以附加功能方式實現的,現在已經整合到框架的內部。
- .NET Compact Framework- 這是一個用於智能裝置(例如Pocket PC或者SmartPhone)的.NET Framework的子集。
- 對IPv6的支援。
- 大量的API變更[1]。
.NET Framework 2.0
完整版號 - 2.0.50727.42,發行於2005年10月27日。
.NET Framework 2.0的元件都包含在 Visual Studio 2005和SQL Server 2005裏面。通過MSDN Universe版可以免費下載RTM版本。
自1.1版本以來的改進:
- 大量的API變更[2]。
- 新的API讓需要管理.NET運行庫實例的非.NET的應用程式可以做到這點。這個新的API對.NET運行庫的各種功能,包括:多線程、記憶體分配、代碼載入等[3],提供了很好的控制。它最初是為Microsoft SQL Server能夠有效率的使用.NET運行庫而設計的,因為Microsoft SQL Server擁有它自己的日程管理器和記憶體管理器。
.NET Framework 2.0 SP1
隨.NET Framework 3.5同時發行,請參看.NET Framework 3.5一節。
.NET Framework 2.0 SP2
隨.NET Framework 3.5 SP1同時發行,請參看.NET Framework 3.5 SP1一節。
.NET Framework 3.0
發佈日期2006/11/21。曾用名「WinFX」。依然使用.NET Framework 2.0版本的公共語言運行庫(CLR),並加入了適應未來軟件發展方向的4個框架:
- Windows Presentation Foundation(WPF):提供更佳的用戶體驗,用來開發Windows Forms程式以及瀏覽器應用程式(參見WPF/E).
- Windows Communication Foundation(WCF):提供SOA(面向服務的軟件構架)支援的安全的網絡服務(Web Service)框架。
- Windows Workflow Foundation(WF):提供一個設計與發展工作流程導向(Workflow-oriented)應用程式基礎支援的應用程式介面。
- Windows CardSpace:提供一個SSO的解決方案,每個使用者都有各自的CardSpace。
.NET Framework 3.0 SP1
隨.NET Framework 3.5同時發行,請參看.NET Framework 3.5。
.NET Framework 3.0 SP2
隨.NET Framework 3.5 SP1同時發行,請參看.NET Framework 3.5 SP1。
.NET Framework 3.5
這個版本將包含一個支援C#和VB.Net中心的語言特性的編譯器,以及對語言整合查詢(LINQ, Language-Integrated Query)的支援。該版本隨Visual Studio 2008一起發佈。
同時,.NET Framework 3.5自動包含.NET Framework 2.0 SP1以及.NET Framework 3.0 SP1,用於為這兩個版本提供安全性修復,以及少量新增的類別館(如System.DateTimeOffest),此版本提供的新功能有:
- 擴充方法(Extension Method)內容(Attribute),用於為擴充方法提供支援
- LINQ支援,包括LINQ to Object、LINQ to ADO.NET以及LINQ to XML
- 表達式目錄樹(Expression Tree),用於為Lambda表達式提供支援
- 與語言整合查詢 (LINQ)和數據感知緊密整合。藉助這個新功能,您可以使用相同的語法,在任何支援LINQ的語言中編寫相關程式碼,以篩選和列舉多種類型的SQL數據、集合、XML和數據集,以及建立它們的投影。
- 利用ASP.NET AJAX可以建立更有效、更具互動性、高度個人化的Web體驗,這些體驗在所有最流行的瀏覽器上都能實現。
- 用於生成WCF服務的全新Web協定支援,包括AJAX、JSON、REST、POX、RSS、ATOM和若干新的WS-*標準。
- Visual Studio 2008中面向WF、WCF和WPF的完整工具支援,其中包括支援工作流的服務這一新技術。
- .NET Framework 3.5基礎類別媒體櫃 (BCL)中的新類可滿足許多常見的客戶請求。
.NET Framework 3.5 SP1
.NET Framework 3.5 SP1自動包含.NET Framework 2.0 SP2以及.NET Framework 3.0 SP2。該版本隨Visual Studio 2008 SP1發佈,此版本提供了下列的新功能:
- 新增的ASP.NET功能包括ASP.NET動態數據和ASP.NET AJAX附加功能,前者提供了無需編寫程式碼就可實現數據驅動的快速開發的豐富支架框架,後者為管理瀏覽器歷史記錄提供了支援(後退按鈕支援)。
- ADO.NET Entity Framework。
- 對SQL Server 2008的數據提供程式支援。
- .NET Framework客戶端設定檔是完整版.NET Framework的子集,面向客戶端應用程式。這改善了尚未安裝.NET Framework的電腦上的安裝體驗。
- 改進Windows Presentation Foundation的效能,其中包括啟動速度的點陣圖效果效能的提高。為Windows Presentation Foundation增加的功能包括對業務線應用程式的更好支援、本機閃屏支援、DirectX像素着色器支援以及新的WebBrowser控制項。
- ClickOnce應用程式發佈者可以根據具體情況決定是否取消簽章和雜湊,開發人員可以以編程方式安裝顯示自訂署名的ClickOnce應用程式,ClickOnce錯誤對話方塊支援指向網絡上特定於應用程式的支援站點的連結。
- 用於SQL Server的.NET Framework數據提供程式 (System.Data.SqlClient)完全支援SQL Server 2008資料庫引擎的所有新功能。有關.NET Framework對SQL Server 2008的支援的更多資訊,請參見SQL Server中的新功能 (ADO.NET)。ADO.NET數據平台是一種多版本策略,它使開發人員能夠針對概念性實體數據模型進行編程,從而減輕他們的編碼和維護工作。此平台提供了ADO.NET Entity Framework、實體數據模型 (EDM)、對象服務、LINQ to Entities、Entity SQL、EntityClient、ADO.NET數據服務及實體數據模型工具。
- Windows Communication Foundation現在提供了改進的互操作性支援,增強了部分信任方案中的除錯體驗,並擴充了整合協定支援以更廣泛地套用於Web 2.0應用程式,從而使DataContract序列化程式更易於使用。
- Microsoft.VisualBasic.PowerPacks命名空間引入了新的DataRepeater控制項,該控制項以可自訂的列表格式顯示數據。此命名空間還包含新的向量形狀。
.NET Framework 4.0
.NET Framework 4.0主要增加了並列支援,英文版於2010年4月12日推出。
企業基礎 .NET提供開發軟件的獨立平臺,內建高度安全的網絡系統,相當倚重軟件元件以及元件導向程式。在這方面它完全取代前者(COM)
CLR與CLI
.NET的初級組成是CLI和CLR。CLI是一套運作環境說明,包括一般系統、基礎類庫和與機器無關的中間代碼,全稱為通用中間語言(CIL)。CLR則是確認操作密碼符合CLI的平臺。在CIL執行前,CLR必須將指令及時編譯轉換成原始機械碼。
所有CIL都可經由.NET自我表述。CLR檢查元數據以確保正確的方法被調用。元數據通常是由語言編譯器生成的,但開發人員也可以通過使用客戶屬性創建他們自己的元數據。
如果一種語言實現生成了CLI,它也可以通過使用CLR被調用,這樣它就可以與任何其他.NET語言生成的資料相互動。CLR也被設計為作業系統無關性。
當一個彙編體被載入時,CLR執行各種各樣的測試。其中的兩個測試是確認與核查。在確認的時候,CLR檢查彙編體是否包含有效的元數據和CIL,並且檢查內部表的正確性。核查則不那麼精確。核查機制檢查代碼是否會執行一些「不安全」的操作。核查所使用的演算法非常保守,導致有時一些「安全」的代碼也通不過核查。不安全的代碼只有在彙編體擁有「跳過核查」許可的情況下才會被執行,通常這意味着代碼是安裝在本機上的。
標準化和著作權
2000年8月,微軟、惠普和英特爾共同制定CLI和C#程式語言的標準規格。2001年12月,以上兩者通過並成為ECMA標準規格。(ECMA 335和ECMA 334)。ISO亦於2003年4月跟隨(ISO/IEC 23271和ISO/IEC 23270)。
這會有一定的風險,但它可以鼓勵標準聯合的實現,以提供一座橋樑來把非Windows的軟件轉變為微軟.NET。將此推廣為標準的一個團體是國際.NET聯合會(INETA)。
儘管微軟及其他合作夥伴持有CLI及C#的專利,ECMA和ISO要求所有專利都應該遵守「合理與非歧視準則」。除此之外,這些公司亦同意讓使用者免費使用這兩項專利。
不過,這並不包括.NET Framework內並不為ECMA/ISO標準涵蓋的範圍,這包括了:Windows Forms、ADO.NET及ASP.NET。微軟對上述部件所持有的專利,使開發者未必能夠為非微軟平臺開發出一套完整的作品。
.NET vs. Java EE
公共語言基礎(CLI),通用中間語言(CIL)以及C#與Sun的Java虛擬機和Java之間有不少的相似之處,因此它們無疑是強烈的競爭者。它們兩者都使用它們各自的中間碼(在微軟,它們叫做通用中間語言,而在Sun,它們叫位元組碼)。通用中間語言被設計來即時編譯(JIT),而Java的位元組碼在最初的時候則是設計成用於解釋運行,而非即時編譯。.NET現在只在Windows上被完美地支援,而Java則可在很多平臺上被完好支援。然而,現在一些正在開發中的實現版本例如Mono或者Shared source CLI可以用於在類Unix作業系統例如Linux,FreeBSD和Mac OS X上運行.NET應用程式。Sun的一個產品,J2EE提供與微軟的一些捆綁於Windows中的技術例如COM+(先前的MTS)和MSMQ等效的功能。
Java和.NET可經由IKVM,一個在.NET平臺上實作的Java虛擬機作更多的溝通。
Java有其專門的遠端程式呼叫技術RMI(Remote Method Invocation), RMI的另一版本RMI-IIOP更可相容CORBA。
.NET vs. COM
前一版軟件元件技術由Microsoft所提出的COM,該技術被用來建立大型(large-scale)的軟件系統上,使用COM+ 或MTS對於傳統分散式元件有強化的作用。當.NET將COM-objects封裝成.NET元件以及將.NET元件封裝成COM-objects後,Microsoft分別將他命名為Runtime Callable Wrapper(RCW)和COM Callable Wrapper (CCW)。很明顯的,Microsoft最終將以.NET全面取代COM成為軟件元件的架構。Microsoft希望開發者能夠在Win32平臺上使用.Net取代COM,而已經存在的服務則透過抽象介面來使用(如:目前交易的.Net元件仍然使用COM+)。
.Net Remoting & XML WebServices
.NET remoting屬於行程(process)內溝通的抽象方法。
Microsoft® .NET Remoting提供一個豐富可擴充的框架給存在兩個不同AppDomain中的Object,使得在不同行程(行程)和不同機器中能夠進行無縫地溝通。.NET Remoting提供一種強大但簡單的可程式化模型並且在執行階段支援資料交換。
XML Web services將基礎的功能區塊佈署到網絡的不同電腦上。開放標準的通訊協定以及人和應用程式可以透過Web Services整合應用程式的環境來合作。應用程式可以從不同的來源使用多個XML Web Services來建構應用程式而不需要知道他們在哪裏以及如何來運作。
.NET的語言
CLI被設計成支援任何物件導向的程式語言,分享共同物件模型與大型共同類別庫。.NET支援超過40種程式語言。這些編譯器大都是免費的(廠商賣的是IDEs)。
大部分的語言都做了重大改變以搭配.NET Framework。廠商通常利用這個機會來同時改變語言的其他特性。
微軟開發的.NET平臺程式語言
- C#,一個以C++和Java語法為基礎開發的一個全新的物件導向語言,是.NET開發的首選語言。
- Visual Basic .NET,一個加強了物件導向支援的,支援多線程的Visual Basic版本。
- C++/CLI,一個C++的.NET平臺版本變種。
- JScript .NET,一個編譯版本的MicrosoftJScript語言。
- J#,一個對應於Java和J++(微軟自己開發的Java變種)的.NET平臺版本,但是有由於知識產權,目前微軟公司已經停止其開發套用。
- F#,ML語言家族的一員。
- Microsoft Small Basic
第三方使用.NET的程式語言
- Ada,參閱A#。
- APL
- Boo,基於Python。
- COBOL
- Component Pascal,基於部件的Pascal,比起Pascal來更接近於Oberon。
- Delphi 8 and Delphi 2005
- Eiffel
- Forth
- FORTRAN
- IKVM,Java。
- IronPython,基於Python。
- Lexico,基於西班牙語的面向物件程式語言。
- Lisp
- Mercury
- Mondrian為了便於指令碼部件編程而開發的功能型語言。
- Nemerle函數式/指令式混合語言。
- Oberon
- Perl
- Python
- PHP
- RPG
- Ruby
- Smalltalk
- Tcl
ASP.NET & ADO.NET
ASP.NET是內含於.NET Framework中,專門用來發展Web應用程式的一組類別庫集。
ADO.NET是內含於.NET Framework中,專門處理與資料來源溝通的資料存取類別庫集,被Windows Forms與ASP.NET應用程式大量使用,可說是.NET Framework中唯一的資料存取介面。
可供選擇的實現版本
微軟的.NET Framework是.NET技術的旗艦級實現版本,在此之外還有一些其他實現版本。
- 微軟的Shared Source Common Language Infrastructure是微軟的.NET Framework的一個原始碼共用的實現版本。它可運行於Windows XP,FreeBSD,和Mac OS X10.2。
- Mono是一個開源的.NET運行時和開發庫實現版本。Mono現正由xamarin公司和開源軟件發展社區負責開發。它正迅速發展成熟,現已經包含了對ASP.NET和ADO.NET的支援,同時也正在加強對Windows Forms庫的支援。它提供了一個C#編譯器,而一個VB.NET編譯器現在也已經處於pre-beta階段。Mono項目還包含了一些新的庫和技術的開發:
- Gtk:一個GTK+GUI工具包的.NET封裝。
- xSP:一個用C#編寫的支援運行ASP.NET應用程式的網頁伺服器軟件。
- MonoDevelop:SharpDevelop的一個移植版本,是一個符合GPL標準的面向Gtk#和Mono的.NET整合開發環境。
- Novell.Directory.Ldap類庫:Lightweight Directory Access Protocol(LDAP)for .NET的一個免費的實現版本。
- SerialPortNet:Aserial portlibrary for .Net & Mono implementing .NET 2.0 specifications.
- Mono for Android和MonoTouch for iOS:Mono在流動平台Android和iOS上的移植,使開發者可以在Android和iOS平台上使用C#和Mono框架開發套用。
- DotGNUPortable.NET不及Mono成熟,這得歸咎於Portable.NET並不是在最初的時候就使用了微軟的開發框架。
參考文獻
- ^ http://www.gotdotnet.com/team/upgrade/apiChanges.aspx GotDotNet: API Changes between versions of the .NET Framework
- ^ http://www.gotdotnet.com/team/upgrade/apiChanges.aspx GotDotNet: API Changes between versions of the .NET Framework
- ^ http://winfx.msdn.microsoft.com/library/en-us/dv_fxunmanref/html/703b8381-43db-4a4d-9faa-cca39302d922.asp 詳細說明
外部連結
官方
- 微軟公司.NET Framework的主頁。
- 微軟公司的官方.NET資源