![]() |
建議將.NET Framework 3.0併入本條目或章節。(討論) |
![]() |
|
![]()
.NET框架的組件堆棧
|
|
開發者 | Microsoft |
---|---|
初始版本 | 2002年2月13日 |
穩定版本 | 4.7.2
(2018年4月30日
|
操做系統 | Windows 98或更新 Windows NT 4.0或更新 |
類型 | 軟件框架 |
許可協議 | 專有軟件 FCL採用微軟Ms-RSL共享源代碼許可[1] 部分採起MIT許可證[2][3] |
網站 | www.microsoft.com/net |
.NET框架(英語:.NET Framework)是由微軟開發,一個致力於敏捷軟件開發(agile software development)、快速應用開發(rapid application development)、平臺無關性和網絡透明化的軟件框架。.NET是微軟爲2000年代對服務器和桌面型軟件工程邁出的第一步。.NET包含許多有助於互聯網和內部網應用迅捷開發的技術。php
.NET框架是微軟公司繼Windows DNA以後的新開發平臺。.NET框架是以一種採用系統虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)爲基礎,支持多種語言(C#、F#、VB.NET、C++、Python等)的開發。git
.NET也爲應用程序接口(API)提供了新功能和開發工具。這些革新使得程序設計員能夠同時進行Windows應用軟件和網絡應用軟件以及組件和服務(web服務)的開發。.NET提供了一個新的反射性的且面向對象編程編程接口。.NET設計得足夠通用化從而使許多不一樣高級語言都得以被聚集。web
甲骨文公司的Java編程語言和Java平臺企業版技術是.NET平臺的競爭對手之一。算法
2014年11月12日,微軟宣佈將徹底開放.NET框架的源代碼,並提供給Linux和macOS使用。[4]數據庫
版本 | 公共語言運行時 | 發佈時間 | 隨同分發於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日 | 不適用 | 10 v1803 | v1803 |
版本 | 指令集架構 | 窗口版本 | |
---|---|---|---|
客戶端 | 服務器 | ||
1.0 | IA-32 | 98, ME, NT 4.0 SP6a, 2000, XP | NT 4.0 SP6a, 2000 |
1.1 | IA-32[1] | NT 4.0 SP6a, 2000, XP,Vista | NT 4.0 SP6a, 2000, 2003, 2008 |
2.0 ~ 3.5 | IA-32, Itanium, x86-64 | XP, Vista, 7, 8, 8.1, 10 | 2003, 2003 R2, 2008, 2008 R2, 2012, 2012 R2, 2016 |
4.0 | IA-32, Itanium[2],x86-64 | XP SP3, Vista SP1, 7, 8, 8.1, 10 | 2003 SP2, 2003 R2 SP2, 2008, 2008 R2, 2012, 2012 R2, 2016 |
4.5[3] ~ 4.6 | IA-32, x86-64 | Vista SP2, 7 SP1, 8, 8.1, 10 | 2008 SP2, 2008 R2 SP1, 2012, 2012 R2, 2016 |
4.6.1 | 7 SP1, 8, 8.1, 10 | 2008 R2 SP1, 2012, 2012 R2, 2016 | |
4.6.2 ~ 4.7.2 | 7 SP1, 8.1, 10 v1607起 |
![]() |
本章節須要補充更多來源。 |
![]() |
本章節須要擴充 |
完整版號 - 1.0.3705編程
這是最先的.NET架構,於2002年發行。它能夠以一個獨立且可從新分發的包的形式或在一個軟件發展工具包集中被得到。它也是第一個微軟Visual Studio .NET的發行版的一部分(也被稱做Visual Studio .NET 2002)。api
完整版號 - 1.1.4322瀏覽器
這是首個主要的.NET框架升級版本,發行於2003年。它能夠以一個獨立的可從新分發的包的形式或在一個軟件發展工具包集中被得到。它也是第二個微軟Visual Studio .NET版本的一部分(也被稱做Visual Studio .NET 2003)。它也是首個被Windows操做系統-Windows Server 2003所內置的.NET框架版本。安全
自1.0版本以來的改進:服務器
完整版號 - 2.0.50727.42,發行於2005年10月27日。
.NET框架 2.0的組件都包含在 Visual Studio 2005和SQL Server 2005裏面。經過MSDN Universe版能夠免費下載RTM版本。
自1.1版本以來的改進:
發佈日期2006/11/21。曾用名「WinFX」。依然使用.NET框架 2.0版本的公共語言運行庫(CLR),並加入了適應將來軟件發展方向的4個框架:
這個版本將包含一個支持C#和VB.Net中心的語言特性的編譯器,以及對語言集成查詢(LINQ, Language-Integrated Query)的支持。該版本隨Visual Studio 2008一塊兒發佈。
同時,.NET框架 3.5自動包含.NET框架 2.0 SP1以及.NET框架 3.0 SP1,用於爲這兩個版本提供安全性修復,以及少許新增的類庫(如System.DateTimeOffest),此版本提供的新功能有:
.NET框架 3.5 SP1自動包含.NET框架 2.0 SP2以及.NET框架 3.0 SP2。該版本隨Visual Studio 2008 SP1發佈,此版本提供了下列的新功能:
.NET框架 4.5是.NET框架 4高兼容性的置位更新(in-place update)。搭配C# 或Visual Basic程序設計語言使用.NET框架 4.5,便可編寫Windows Store風格的應用程序。.NET框架 4.5可提高性能、可靠度及安全性。於2012年8月15日推出。但請注意,.NET框架 4.5只支持Windows Vista SP2以上版本的操做系統。[11]
.NET框架 4.5.1於2013年10月17日隨着Visual Studio 2013發佈。[12]此版本須要Windows Vista SP2或更新的環境,[13]而且包含在Windows 8.1和Windows Server 2012 R2中。.NET框架 4.5.1的新功能有:[14]
.NET框架 4.5.2的發表宣佈於2014年5月5日。[15]此版本須要Windows Vista SP2及更新版本。[16]對於Windows Forms應用程序,對高DPI方案進行了改進。對於ASP.NET,可使用更高可靠性的HTTP開頭檢查和修改方法,這是一種規劃背景異步工做任務的新方法。[15]
.NET框架 4.6 是在2014年11月12月宣佈,[17]而在2015年7月20日發行。[18] 它對64位系統支持一個新的即時編譯(JIT),稱之爲 RyuJIT,呈現較佳的性能,並支持SSE2與AVX2指令集。WPF 與 Windows Forms 都得到更新以達成較高的 DPI 情境。支持TLS 1.1 與 TLS 1.2 的功能已經被加入 WCF。[18] 此版本須要Windows Vista SP2 或更新的版本。[19]
.NET框架 4.6.1 發行的消息在2015年11月30日宣佈。[20]這個版本須要 Windows 7 SP1 或更新的版本。[19]新的功能與 API 包括:
.NET框架 4.6.2 的預覽在2016年3月30日宣佈,[21]發行日期則爲2016年8月2日。[22]此版本須要 Windows 7 SP1 或更新版。[19] New features include:
2017年4月5日,微軟宣佈 .NET框架 4.7 將被集成到 Windows 10創意者更新, 承諾爲其餘Windows版本提供獨立安裝程序。同日,發行一個 Visual Studio 2017 更新版以增強支持標的物 .NET框架 4.7。[23] 所承諾的 Windows 7 及更新版本獨立安裝程序在2017年5月2日發行,[24] 但有一些重要成分不包含在內。[25]
.NET框架 4.7 的新功能包括:[26]
.NET框架 4.7.1 在2017年10月17日發行。[27]在修復程序和新功能中,它修正了d3dcompiler依賴性問題。 [28]它還增長了與.NET Standard 2.0開箱即用的兼容性。[29]
.NET框架 4.7.2 在2018年4月30日發行。[30]主要的異動是改進 ASP.NET、BCL、CLR、ClickOnce、Networking、SQL、WCF、Windows Forms、Workflow 及 WPF。[31]
.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月,微軟、惠普和英特爾共同制定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框架內並不爲ECMA/ISO標準涵蓋的範圍,這包括了:Windows Forms、ADO.NET及ASP.NET。微軟對上述部件所持有的專利,使開發者未必可以爲非微軟平臺開發出一套完整的做品。
2014 年11月13日,微軟新任首席執行官薩帝亞·納德拉決心下,該公司發佈的.NET源代碼包含了服務器部分的核心,如.NET Framework Libraries、.NET Core Framework Libraries和RyuJit VM,正式對外開放源代碼。[32]
公共語言基礎(CLI),通用中間語言(CIL)以及C#與甲骨文公司的Java虛擬機和Java之間有很多的類似之處,所以它們無疑是強烈的競爭者。它們二者都使用它們各自的中間碼(在微軟,它們叫作通用中間語言,而在Oracle,它們叫字節碼)。通用中間語言被設計來即時編譯(JIT),而Java的字節碼在最初的時候則是設計成用於解釋運行,而非即時編譯。.NET如今只在Windows上被完美地支持,而Java則可在不少平臺上被無缺支持。然而,如今一些正在開發中的實現版本例如Mono或者Shared source CLI能夠用於在類Unix操做系統例如Linux,FreeBSD和Mac 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出現後,一切都改觀了。
前一版軟件組件技術由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屬於進程(process)內溝通的抽象方法。
Microsoft® .NET Remoting提供一個豐富可擴展的框架給存在兩個不一樣AppDomain中的Object,使得在不一樣進程(進程)和不一樣機器中可以進行無縫地溝通。.NET Remoting提供一種強大但簡單的可編程模型而且在運行階段支持數據交換。
XML Web services將基礎的功能區塊佈署到網絡的不一樣計算機上。開放標準的通訊協議以及人和應用程序能夠透過Web Services集成應用程序的環境來合做。應用程序能夠從不一樣的來源使用多個XML Web Services來建構應用程序而不須要知道他們在哪裏以及如何來運做。
CLI被設計成支持任何面向對象的編程語言,分享共同對象模型與大型共同類庫。.NET支持超過40種編程語言。這些編譯器大都是免費的(軟件廠商僅開發出售集成開發環境)。
大部分的語言都作了重大改變以搭配.NET框架。廠商一般利用這個機會來同時改變語言的其餘特性。
ASP.NET是內含於.NET框架中,專門用來發展Web應用程序的一組類庫集。
ADO.NET是內含於.NET框架中,專門處理與數據源溝通的數據訪問類庫集,被Windows Forms與ASP.NET應用程序大量使用,可說是.NET框架中惟一的數據訪問接口。
微軟的.NET框架是.NET技術的旗艦級實現版本,在此以外還有一些其餘實現版本。