[Wiki].NET框架

.NET框架


.NET框架
Microsoft .NET logo.png
.NET框架的組件堆棧
.NET框架的組件堆棧
開發者 Microsoft
初始版本 2002年2月13日,​16年前
穩定版本 4.7.2 
(2018年4月30日 ,​8個月前 )
操做系統 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.NETC++Python等)的開發。git

.NET也爲應用程序接口(API)提供了新功能和開發工具。這些革新使得程序設計員能夠同時進行Windows應用軟件網絡應用軟件以及組件和服務(web服務)的開發。.NET提供了一個新的反射性的面向對象編程編程接口。.NET設計得足夠通用化從而使許多不一樣高級語言都得以被聚集web

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

2014年11月12日,微軟宣佈將徹底開放.NET框架的源代碼,並提供給Linux和macOS使用。[4]數據庫

版本[編輯]

.NET框架版本歷史一覽
版本 公共語言運行時 發佈時間 隨同分發於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 98MENT 4.0 SP6a2000XP NT 4.0 SP6a2000
1.1 IA-32[1] NT 4.0 SP6a2000XP,Vista NT 4.0 SP6a200020032008
2.0 ~ 3.5 IA-32Itaniumx86-64 XPVista788.110 20032003 R220082008 R220122012 R22016
4.0 IA-32Itanium[2],x86-64 XP SP3Vista SP1788.110 2003 SP22003 R2 SP220082008 R220122012 R22016
4.5[3] ~ 4.6 IA-32x86-64 Vista SP27 SP188.110 2008 SP22008 R2 SP120122012 R22016
4.6.1 7 SP188.110 2008 R2 SP120122012 R22016
4.6.2 ~ 4.7.2 7 SP18.110 v1607起

 

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框架發行歷史

.NET框架 1.0[編輯]

完整版號 - 1.0.3705編程

這是最先的.NET架構,於2002年發行。它能夠以一個獨立且可從新分發的包的形式或在一個軟件發展工具包集中被得到。它也是第一個微軟Visual Studio .NET的發行版的一部分(也被稱做Visual Studio .NET 2002)。api

.NET框架 1.1[編輯]

完整版號 - 1.1.4322瀏覽器

這是首個主要的.NET框架升級版本,發行於2003年。它能夠以一個獨立的可從新分發的包的形式或在一個軟件發展工具包集中被得到。它也是第二個微軟Visual Studio .NET版本的一部分(也被稱做Visual Studio .NET 2003)。它也是首個被Windows操做系統-Windows Server 2003所內置的.NET框架版本。安全

自1.0版本以來的改進:服務器

  • 內置了對mobile ASP.NET控件的支持。這在1.0版本是以附加功能方式實現的,如今已經集成到框架的內部。
  • 安全方面的變動 - 使得Windows窗體代碼以可靠的行爲運行,從而能夠在Internet環境內安全運行,而且加入了ASP.NET應用程序的代碼安全訪問功能。
  • 內置了對ODBCOracle數據庫的支持。這在1.0版本是以附加功能方式實現的,如今已經集成到框架的內部。
  • .NET Compact Framework- 這是一個用於智能設備(例如Pocket PC或者SmartPhone)的.NET框架的子集。
  • IPv6的支持。
  • 大量的API變動[5]

.NET框架 2.0[編輯]

完整版號 - 2.0.50727.42,發行於2005年10月27日。

.NET框架 2.0的組件都包含在 Visual Studio 2005和SQL Server 2005裏面。經過MSDN Universe版能夠免費下載RTM版本。

自1.1版本以來的改進:

  • 大量的API變動[5]
  • 新的API讓須要管理.NET運行庫實例的非.NET的應用程序能夠作到這點。這個新的API對.NET運行庫的各類功能,包括:多線程、存儲器分配、代碼加載等[6],提供了很好的控制。它最初是爲Microsoft SQL Server可以有效率的使用.NET運行庫而設計的,由於Microsoft SQL Server擁有它本身的日程管理器和存儲器管理器。

.NET框架 3.0[編輯]

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

.NET框架 3.5[編輯]

這個版本將包含一個支持C#和VB.Net中心的語言特性的編譯器,以及對語言集成查詢(LINQ, Language-Integrated Query)的支持。該版本隨Visual Studio 2008一塊兒發佈。

同時,.NET框架 3.5自動包含.NET框架 2.0 SP1以及.NET框架 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框架 3.5基類庫(BCL)中的新類可知足許多常見的客戶請求。

.NET框架 3.5 SP1[編輯]

.NET框架 3.5 SP1自動包含.NET框架 2.0 SP2以及.NET框架 3.0 SP2。該版本隨Visual Studio 2008 SP1發佈,此版本提供了下列的新功能:

  • 新增的ASP.NET功能包括ASP.NET動態數據和ASP.NET AJAX附加功能,前者提供了無需編寫代碼就可實現數據驅動的快速開發的豐富支架框架,後者爲管理瀏覽器歷史記錄提供了支持(後退按鈕支持)。
  • ADO.NET Entity Framework。
  • 對SQL Server 2008的數據提供程序支持。
  • .NET框架客戶端配置文件是完整版.NET框架的子集,面向客戶端應用程序。這改善了還沒有安裝.NET框架的計算機上的安裝體驗。
  • 改進Windows Presentation Foundation的性能,其中包括啓動速度的位圖效果性能的提升。爲Windows Presentation Foundation增長的功能包括對業務線應用程序的更好支持、本機閃屏支持、DirectX像素着色器支持以及新的WebBrowser控件。
  • ClickOnce應用程序發佈者能夠根據具體狀況決定是否取消簽名和散列,開發人員能夠以編程方式安裝顯示自定義署名的ClickOnce應用程序,ClickOnce錯誤對話框支持指向網絡上特定於應用程序的支持站點的連接。
  • 用於SQL Server的.NET框架數據提供程序(System.Data.SqlClient)徹底支持SQL Server 2008數據庫引擎的全部新功能。有關.NET框架對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框架 4.0[編輯]

  • .NET框架 4.0主要增長了並行支持,英文版於2010年4月12日推出。[7]
  • 新增System.Lazy <T>,作爲延遲初始化時使用。[8]
  • 新增大整數的System.Numerics.BigInteger[9]與複數的System.Numerics.Complex[10](使用時需加入參考System.Numerics.dll)
  • 微軟於2016年1月12開始中止對.NET 4.0, 4.5, 4.5.1的安全性更新及技術支持

.NET框架 4.5[編輯]

 
.NET框架 4.5 logo

.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]

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

.NET框架 4.5.1[編輯]

.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]

  • 調試器支持X64編輯和繼續(EnC)
  • 調試器支持查看託管返回值
  • 「Call Stack」和「Task」窗口中的異步感知調試
  • 調試器支持分析.NET內存轉儲(在Visual Studio Ultimate SKU中)
  • 適用於Performance 及 Diagnostics中心的.NET開發者工具
  • 代碼分析UI改進
  • ADO.NET空閒鏈接彈性

.NET框架 4.5.2[編輯]

.NET框架 4.5.2的發表宣佈於2014年5月5日。[15]此版本須要Windows Vista SP2及更新版本。[16]對於Windows Forms應用程序,對高DPI方案進行了改進。對於ASP.NET,可使用更高可靠性的HTTP開頭檢查和修改方法,這是一種規劃背景異步工做任務的新方法。[15]

.NET框架 4.6[編輯]

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

.NET框架 4.6.1[編輯]

.NET框架 4.6.1 發行的消息在2015年11月30日宣佈。[20]這個版本須要 Windows 7 SP1 或更新的版本。[19]新的功能與 API 包括:

  • WPF改進了拼寫檢查,支持用戶自定義詞典,並改進觸控性能。
  • 加強支持橢圓曲線數字簽名算法(ECDSA)X509 認證。
  • 當鏈接Azure SQL數據庫時,添加了對AlwaysOn、Always Encrypted的SQL鏈接,並改進鏈接開放彈性。
  • Azure SQL數據庫如今使用更新的System.Transactions API支持分佈式處理。
  • RyuJIT、GC、WPF和WCF中的許多其餘性能、穩定性和可靠性相關修復。

.NET框架 4.6.2[編輯]

.NET框架 4.6.2 的預覽在2016年3月30日宣佈,[21]發行日期則爲2016年8月2日。[22]此版本須要 Windows 7 SP1 或更新版。[19] New features include:

  • 支持超過260個字符的路徑
  • 支持X.509認證的FIPS 186-3 DSA
  • TLS 1.1 / 1.2支持 ClickOnce
  • 支持 ASP.NET 數據註釋的本地化
  • 激活具有 Project Centennial 的 .NET桌面應用程序
  • 針對WPF支持軟鍵盤和每一個顯示器DPI

.NET框架 4.7[編輯]

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]

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

.NET框架 4.7.1[編輯]

.NET框架 4.7.1 在2017年10月17日發行。[27]在修復程序和新功能中,它修正了d3dcompiler依賴性問題。 [28]它還增長了與.NET Standard 2.0開箱即用的兼容性。[29]

.NET框架 4.7.2[編輯]

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

CLR與CLI[編輯]

 
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 335ECMA 334)。ISO亦於2003年4月跟隨(ISO/IEC 23271ISO/IEC 23270)。

這會有必定的風險,但它能夠鼓勵標準聯合的實現,以提供一座橋樑來把非Windows的軟件轉變爲微軟.NET。將此推廣爲標準的一個團體是國際.NET聯合會(INETA)。

儘管微軟及其餘合做夥伴持有CLI及C#的專利,ECMA和ISO要求全部專利都應該遵照「合理與非歧視準則」。除此以外,這些公司亦贊成讓用戶無償使用這兩項專利。

不過,這並不包括.NET框架內並不爲ECMA/ISO標準涵蓋的範圍,這包括了:Windows FormsADO.NETASP.NET。微軟對上述部件所持有的專利,使開發者未必可以爲非微軟平臺開發出一套完整的做品。

2014 年11月13日,微軟新任首席執行官薩帝亞·納德拉決心下,該公司發佈的.NET源代碼包含了服務器部分的核心,如.NET Framework Libraries、.NET Core Framework Libraries和RyuJit VM,正式對外開放源代碼[32]

.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框架。廠商一般利用這個機會來同時改變語言的其餘特性。

微軟開發的.NET平臺編程語言[編輯]

第三方使用.NET的編程語言[編輯]

ASP.NET & ADO.NET[編輯]

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

ADO.NET是內含於.NET框架中,專門處理與數據源溝通的數據訪問類庫集,被Windows FormsASP.NET應用程序大量使用,可說是.NET框架中惟一的數據訪問接口。

可供選擇的實現版本[編輯]

微軟的.NET框架是.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的封裝。
相關文章
相關標籤/搜索