.NET Framework是由微軟開發,一個致力於敏捷軟件開發(agile software development)、快速應用開發(rapid application development)、平臺獨立性網絡透明化軟件框架。.NET是微軟為2000年代對伺服器桌上型軟件工程邁出的第一步。.NET包含許多有助於互聯網內部網套用迅捷發的技術。

Quick Facts 開發者, 首次釋出 ...
.NET Framework
.NET Framework的組件堆疊
.NET Framework的組件堆疊
開發者Microsoft
首次釋出2002年2月13日,​22年前​(2002-02-13
目前版本4.8.1(2022年8月9日,​2年前​(2022-08-09
作業系統Windows 98或更新
Windows NT 4.0或更新
類型軟件框架
特許條款專有軟件
FCL英語Framework Class Library採用微軟Ms-RSL共用原始碼特許[1]
部份採取MIT特許條款[2][3]
網站www.microsoft.com/net
Close

.NET Framework是微軟公司繼Windows DNA之後的新發平台,採用系統虛擬機器運行,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#F#VB.NETC++Python等)的開發。

.NET也為應用程式介面(API)提供了新功能和發工具。這些革新使得程式設計員可以同時進行Windows應用軟件網絡應用軟件以及元件和服務(web服務)的開發。.NET提供了一個新的反射性的物件導向程式設計編程介面。.NET設計得足夠通用化從而使許多不同高階語言都得以被匯集

甲骨文公司Java程式語言Java平台企業版技術是.NET平台的競爭對手之一。

2014年11月12日,微軟宣佈完全開放.NET Framework的原始碼,並提供給Linux和macOS使用。[4] 微軟於2019年4月釋出了該框架作為專有軟件的最後一個主要版本 .NET Framework 4.8,隨後於 2022年8月釋出了 4.8.1。從此之後便只有安全性或是穩定性的臭蟲修復更新,亦無後續版本改動的計劃。.NET Framework 4.8將會持續包含在Windows的更新中接收安全性更新,截至2023年11月為止,並無將其移除的計劃。[5]官方推薦後續的新開發改用 .Net 6 起的版本進行開發。[6]

版本

More information 版本, 通用語言運行庫 ...
.NET Framework版本歷史一覽
版本 通用語言運行庫 發佈時間 隨同Visual Studio分發 預安裝於Windows 包含之前版本
客戶端版 伺服器版
1.0[0] 1.0 2002年2月13日 .NET 不適用 不適用 不適用
1.1 1.1 2003年4月24日 .NET 2003 不適用 2003
2.0 2.0 2005年11月7日 2005 不適用 2003 R2
3.0 2006年11月6日 不適用 Vista 不適用 2.0
3.5 3.5 2007年11月19日 2008 不適用 不適用 3.0 SP1 (2.0 SP1)
3.5.1 2008年2月4日 不適用 不適用 2008
3.5 SP1 2008年8月11日 2008 SP1 不適用 不適用 3.0 SP2 (2.0 SP2)
3.5.1 SP1 2009年7月22日 不適用 7 2008 R2
4 4.0 4.0 2010年4月12日 2010 不適用 不適用 不適用
(置位更新)
4.5 2012年8月15日 2012 8 2012
4.5.1 2013年10月17日 2013 8.1 2012 R2
4.5.2 2014年5月5日 不適用 不適用 不適用
4.6 2015年7月20日 2015 10 不適用
4.6.1 2015年11月30日 2015 Update 1 10 v1511 不適用
4.6.2 2016年8月2日 不適用 10 v1607 2016
4.7 2017年4月5日 2017 v15.3 10 v1703 不適用
4.7.1 2017年10月17日 2017 v15.5 10 v1709 v1709
4.7.2 2018年4月30日 2019 10 v1803 v1803
4.8 2019年4月18日 不適用 10 v1909 v1909
4.8.1 2022年8月9日
Close
More information 版本, 指令集架構 ...
Close

0.^ 自SP1起所有Windows XP分發光碟或鏡像中均包含1.0版的安裝套件,並且這個版本作為Windows XP Tablet PC和Media Center版的必要組成元素。
1.^ .Net Framework 1.1 可以部署於Itanium和x86-64平台, 由WOW64支援。
2.^ 在Itanium平台上有些功能不被支援,比如WPF。
3.^ 從版本4.5起,隨同Windows RT, Windows RT 8.1運用於ARM v7平台,由於是精簡版,未列於此表。

發行歷史

.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應用程式的代碼安全訪問功能。
  • 內建了對ODBCOracle資料庫的支援。這在1.0版本是以附加功能方式實現的,現在已經整合到框架的內部。
  • .NET Compact Framework- 這是一個用於智能裝置(例如Pocket PC或者SmartPhone)的.NET Framework的子集。
  • IPv6的支援。
  • 大量的API變更[7]

.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變更[7]
  • 新的API讓需要管理.NET運行庫實例的非.NET的應用程式可以做到這點。這個新的API對.NET運行庫的各種功能,包括:多線程、記憶體分配、代碼載入等[8],提供了很好的控制。它最初是為Microsoft SQL Server能夠有效率的使用.NET運行庫而設計的,因為Microsoft SQL Server擁有它自己的日程管理器和記憶體管理器。

.NET Framework 3.0

發佈日期2006/11/21。曾用名「WinFX」。依然使用.NET Framework 2.0版本的公共語言運行庫(CLR),並加入了適應未來軟件發展方向的4個框架:

.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 ObjectLINQ 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日推出。[9]
  • 新增System.Lazy <T>,做為延遲初始化時使用。[10]
  • 新增大整數的System.Numerics.BigInteger[11]與複數的System.Numerics.Complex[12](使用時需加入參考System.Numerics.dll)
  • 微軟於2016年1月12開始停止對.NET 4.0, 4.5, 4.5.1的安全性更新及技術支援

.NET Framework 4.5

.NET Framework 4.5是.NET Framework 4高相容性的置位更新(in-place update)。搭配C# 或Visual Basic程式設計語言使用.NET Framework 4.5,即可編寫Windows Store風格的應用程式。.NET Framework 4.5可提升效能、可靠度及安全性。於2012年8月15日推出。但請注意,.NET Framework 4.5只支援Windows Vista SP2以上版本的作業系統。[13]

  • 微軟於2016年1月12開始停止對.NET 4.0, 4.5, 4.5.1的安全性更新及技術支援

.NET Framework 4.5.1

.NET Framework 4.5.1於2013年10月17日隨着Visual Studio 2013發佈。[14]此版本需要Windows Vista SP2或更新的環境,[15]並且包含在Windows 8.1和Windows Server 2012 R2中。.NET Framework 4.5.1的新功能有:[16]

  • 偵錯器支援X64編輯和繼續(EnC)
  • 偵錯器支援檢視寄存返回值
  • 「Call Stack」和「Task」視窗中的非同步感知偵錯
  • 偵錯器支援分析.NET主記憶體轉儲(在Visual Studio Ultimate SKU中)
  • 適用於Performance 及 Diagnostics中心的.NET開發者工具
  • 代碼分析UI改進
  • ADO.NET空閒連接彈性

.NET Framework 4.5.2

.NET Framework 4.5.2的發表宣佈於2014年5月5日。[17]此版本需要Windows Vista SP2及更新版本。[18]對於Windows Forms應用程式,對高DPI方案進行了改進。對於ASP.NET,可以使用更高可靠性的HTTP開頭檢查和修改方法,這是一種規劃背景非同步工作任務的新方法。[17]

.NET Framework 4.6

.NET Framework 4.6 是在2014年11月12月宣佈,[19]而在2015年7月20日發行。[20] 它對64位元系統支援一個新的即時編譯(JIT),稱之為 RyuJIT,呈現較佳的效能,並支援SSE2AVX2指令集。WPF 與 Windows Forms 都獲得更新以達成較高的 DPI 情境。支援TLS 1.1 與 TLS 1.2 的功能已經被加入 WCF。[20] 此版本需要Windows Vista SP2 或更新的版本。[21]

.NET Framework 4.6.1

.NET Framework 4.6.1 發行的訊息在2015年11月30日宣佈。[22]這個版本需要 Windows 7 SP1 或更新的版本。[21]新的功能與 API 包括:

  • WPF改進了拼寫檢查,支援用戶自訂詞典,並改進觸控效能。
  • 增強支援橢圓曲線數碼簽章演算法(ECDSA)X509 認證。
  • 當連接Azure SQL數據庫時,添加了對AlwaysOn、Always Encrypted的SQL連接,並改進連接開放彈性。
  • Azure SQL數據庫現在使用更新的System.Transactions API支援分散式處理。
  • RyuJIT、GC、WPF和WCF中的許多其他效能、穩定性和可靠性相關修復。

.NET Framework 4.6.2

.NET Framework 4.6.2 的預覽在2016年3月30日宣佈,[23]發行日期則為2016年8月2日。[24]此版本需要 Windows 7 SP1 或更新版。[21] New features include:

  • 支援超過260個字元的路徑
  • 支援X.509認證的FIPS 186-3 DSA
  • TLS 1.1 / 1.2支援 ClickOnce
  • 支援 ASP.NET 數據註釋的本地化
  • 啟用具備 Project Centennial 的 .NET桌面應用程式
  • 針對WPF支援軟鍵盤和每個監視器DPI

.NET Framework 4.7

2017年4月5日,微軟宣佈 .NET Framework 4.7 將被整合到 Windows 10 創作者更新, 承諾為其他Windows版本提供獨立安裝程式。同日,發行一個 Visual Studio 2017 更新版以加強支援標的物 .NET Framework 4.7。[25] 所承諾的 Windows 7 及更新版本獨立安裝程式在2017年5月2日發行,[26] 但有一些重要成份不包含在內。[27]

.NET Framework 4.7 的新功能包括:[28]

  • 使用橢圓曲線密碼學的增強加密
  • 改進對傳輸層安全性協定(TLS)的支援,尤其是對於1.2版
  • 支援Windows Forms 的高DPI感知支援
  • 在 WPF 中對觸控和手寫的更多支援
  • WPF 的新印表 API

.NET Framework 4.7.1

.NET Framework 4.7.1 在2017年10月17日發行。[29]在修復程式和新功能中,它修正了d3dcompiler依賴性問題。 [30]它還增加了與.NET Standard 2.0開箱即用的相容性。[31]

.NET Framework 4.7.2

.NET Framework 4.7.2 在2018年4月30日發行。[32]主要的異動是改進 ASP.NET、BCL、CLR、ClickOnce、Networking、SQL、WCF、Windows Forms、Workflow 及 WPF。[33]

CLR與CLI

Thumb
CLI運作圖

.NET的初級組成是CLI(通用語言架構)和CLR(通用語言運行庫)。

CLI(通用語言架構)全名為Common Language Infrastructure,是一套運作環境規範,包括一般系統、基礎類庫和與機器無關的中間代碼。CLR則是確認操作密碼符合CLI的平臺。在通用中間語言(CIL)執行前,CLR必須將指令及時編譯轉換成原始機械碼

所有CLI都可經由.NET自我表述。CLR檢查元數據以確保正確的方法被調用。元數據通常是由語言編譯器生成的,但開發人員也可以通過使用客戶屬性創建他們自己的元數據。

如果一種語言實現生成了CLI,它也可以通過使用CLR被調用,這樣它就可以與任何其他.NET語言生成的資料相互動。CLR也被設計為作業系統無關性。

當一個彙編體被載入時,CLR執行各種各樣的測試。其中的兩個測試是確認與核查。在確認的時候,CLR檢查彙編體是否包含有效的元數據和CIL,並且檢查內部表的正確性。核查則不那麼精確。核查機制檢查代碼是否會執行一些「不安全」的操作。核查所使用的演算法非常保守,導致有時一些「安全」的代碼也通不過核查。不安全的代碼只有在彙編體擁有「跳過核查」許可的情況下才會被執行,通常這意味着代碼是安裝在本機上的。

通過.NET,你可以用SOAP和不同的web服務進行互動。

標準化和著作權

2000年8月,微軟惠普英特爾共同制定CLIC#程式語言的標準規格。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 FormsADO.NETASP.NET。微軟對上述部件所持有的專利,使開發者未必能夠為非微軟平臺開發出一套完整的作品。

2014 年11月13日,微軟新任行政總裁薩帝亞·納德拉決心下,該公司釋出的.NET原始碼包含了伺服器部份的核心,如.NET Framework Libraries.NET Core Framework LibrariesRyuJit VM,正式對外開放原始碼[34]

.NET與Java EE

公共語言基礎(CLI),通用中間語言(CIL)以及C#與甲骨文公司的Java虛擬機和Java之間有不少的相似之處,因此它們無疑是強烈的競爭者。它們兩者都使用它們各自的中間碼(在微軟,它們叫做通用中間語言,而在Oracle,它們叫位元組碼)。通用中間語言被設計來即時編譯(JIT),而Java的位元組碼在最初的時候則是設計成用於解釋運行,而非即時編譯。.NET現在只在Windows上被完美地支援,而Java則可在很多平臺上被完好支援。然而,現在一些正在開發中的實現版本例如Mono或者Shared source CLI可以用於在類Unix作業系統例如LinuxFreeBSDMac OS X上運行.NET應用程式。甲骨文公司的一個產品,J2EE提供與微軟的一些捆綁於Windows中的技術例如COM+(先前的MTS)和MSMQ等效的功能。

Java和.NET可經由IKVM,一個在.NET平臺上實作的Java虛擬機作更多的溝通。

Java有其專門的遠端程式呼叫技術RMI(Remote Method Invocation), RMI的另一版本RMI-IIOP更可相容CORBA

然而,.NET與Java之間的競爭關係,在.NET Core出現後,一切都改觀了。

.NET與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種程式語言。這些編譯器大都是免費的(軟件廠商僅開發出售整合式開發環境)。

大部份的語言都做了重大改變以搭配.NET Framework。廠商通常利用這個機會來同時改變語言的其他特性。

微軟開發的.NET平臺程式語言

第三方使用.NET的程式語言

ASP.NET & ADO.NET

ASP.NET是內含於.NET Framework中,專門用來發展Web應用程式的一組類別庫集。

ADO.NET是內含於.NET Framework中,專門處理與資料來源溝通的資料存取類別庫集,被Windows FormsASP.NET應用程式大量使用,可說是.NET Framework中唯一的資料存取介面。

可供選擇的實現版本

微軟的.NET Framework是.NET技術的旗艦級實現版本,在此之外還有一些其他實現版本。

  • Mono是一個開源的.NET運行時和開發庫實現版本。Mono現正由xamarin公司和開源軟件發展社區負責開發。它正迅速發展成熟,現已經包含了對ASP.NET和ADO.NET的支援,對Windows Forms庫的支援也較充分。它提供了一個C#編譯器,而一個VB.NET編譯器現在也已經處於pre-beta階段。Mono項目還包含了一些新的庫和技術的開發:
    • Gtk:一個GTK+GUI工具包的.NET封裝。
    • xSP:一個用C#編寫的支援運行ASP.NET應用程式的網頁伺服器軟件。
    • MonoDevelopSharpDevelop的一個移植版本,是一個符合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 AndroidMonoTouch for iOS:Mono在流動平台Android和iOS上的移植,使開發者可以在Android和iOS平台上使用C#和Mono框架開發套用。Xamarin Forms是這些實現的核心,可以根據系統不同生成符合該系統風格的介面。
    • MonoMac:Mono對於一些OS X原生Step API的封裝。
  • Portable.NET不及Mono成熟,這得歸因於Portable.NET並不是在最初的時候就使用了微軟的開發框架。提供了一個可以從C編譯到通用中間語言的編譯器。

參見

參考文獻

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.