[Wiki].NET框架

时间:2020-12-26 17:31:14

.NET框架

[Wiki].NET框架
[Wiki].NET框架
建议将.NET Framework 3.0并入本条目或章节。(讨论) 
.NET框架
[Wiki].NET框架
[Wiki].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包含许多有助于互联网内部网应用迅捷开发的技术。

.NET框架是微软公司继Windows DNA之后的新开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#F#VB.NETC++Python等)的开发。

.NET也为应用程序接口(API)提供了新功能和开发工具。这些革新使得程序设计员可以同时进行Windows应用软件网络应用软件以及组件和服务(web服务)的开发。.NET提供了一个新的反射性的面向对象编程编程接口。.NET设计得足够通用化从而使许多不同高级语言都得以被汇集

甲骨文公司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平台,由于是精简版,未列于此表。

发行历史[编辑]

[Wiki].NET框架 本章节需要补充更多来源
[Wiki].NET框架 本章节需要扩充
主条目:.NET框架发行历史

.NET框架 1.0[编辑]

完整版号 - 1.0.3705

这是最早的.NET架构,于2002年发行。它可以以一个独立且可重新分发的包的形式或在一个软件发展工具包集中被获得。它也是第一个微软Visual Studio .NET的发行版的一部分(也被称作Visual Studio .NET 2002)。

.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[编辑]

主条目:.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[编辑]

[Wiki].NET框架
 

.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[编辑]

[Wiki].NET框架
 

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[编辑]

[Wiki].NET框架  注意:请不要将域名中的.com.net与这里的COM、.NET混淆在一起。

前一版软件组件技术由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.NETADO.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的封装。