跳转到内容

.NET框架

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由Wctaiwan留言 | 贡献2012年4月12日 (四) 07:08 (用語)编辑。这可能和当前版本存在着巨大的差异。

.NET框架
File:MS.NET New Logo.png
开发者Microsoft
当前版本4.0(2010年4月12日
操作系统Windows 98Windows NT 4.0Windows Server 2003Windows XPWindows VistaWindows Server 2008Windows 7
类型软件框架
许可协议Proprietary software
网站www.microsoft.com/netframework/

.NET Framework.NET Framework) 是由微软开发,一个致力于敏捷软件开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性网络透明化的软件开发平台。.NET是微软为下一个十年服务器桌面型软件工程迈出的第一步。NET包含许多有助于互联网内部网应用迅捷开发的技术。

.NET框架是微软公司继Windows DNA之后的新开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#VB.NETC++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框架 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变更[1]

.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变更[2]
  • 新的API让需要管理.NET运行库实例的非.NET的应用程序可以做到这点。这个新的API对.NET运行库的各种功能,包括:多线程、存储器分配、代码加载等[3],提供了很好的控制。它最初是为Microsoft SQL Server能够有效率的使用.NET运行库而设计的,因为Microsoft SQL Server拥有它自己的日程管理器和存储器管理器。

.NET框架 2.0 SP1

随.NET框架 3.5同时发行,请参看.NET框架 3.5一节。

.NET框架 2.0 SP2

随.NET框架 3.5 SP1同时发行,请参看.NET框架 3.5 SP1一节。

.NET框架 3.0

发布日期2006/11/21。曾用名“WinFX”。依然使用.NET框架 2.0版本的公共语言运行库(CLR),并加入了适应未来软件发展方向的4个框架:

.NET框架 3.0 SP1

随.NET框架 3.5同时发行,请参看.NET框架 3.5。

.NET框架 3.0 SP2

随.NET框架 3.5 SP1同时发行,请参看.NET框架 3.5 SP1。

.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日推出。

企业基础 .NET提供开发软件的独立平台,内置高度安全的网络系统,相当倚重软件组件以及组件导向程序。在这方面它完全取代前者(COM)

CLR与CLI

CLI运作图

.NET的初级组成是CLI和CLR。CLI是一套运作环境帮助,包括一般系统、基础类库和与机器无关的中间代码,全称为通用中间语言(CIL)。CLR则是确认操作密码符合CLI的平台。在CIL执行前,CLR必须将指令及时编译转换成原始机器代码

所有CIL都可经由.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。微软对上述部件所持有的专利,使开发者未必能够为非微软平台开发出一套完整的作品。

.NET vs. Java EE

公共语言基础(CLI),通用中间语言(CIL)以及C#与Sun的Java虚拟机和Java之间有不少的相似之处,因此它们无疑是强烈的竞争者。它们两者都使用它们各自的中间码(在微软,它们叫做通用中间语言,而在Sun,它们叫字节码)。通用中间语言被设计来即时编译(JIT),而Java的字节码在最初的时候则是设计成用于解释运行,而非即时编译。.NET现在只在Windows上被完美地支持,而Java则可在很多平台上被完好支持。然而,现在一些正在开发中的实现版本例如Mono或者Shared source CLI可以用于在类Unix操作系统例如LinuxFreeBSDMac 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框架。厂商通常利用这个机会来同时改变语言的其他特性。

微软开发的.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项目还包含了一些新的库和技术的开发:
  • DotGNUPortable.NET不及Mono成熟,这得归咎于Portable.NET并不是在最初的时候就使用了微软的开发框架。

参考文献

  1. ^ http://www.gotdotnet.com/team/upgrade/apiChanges.aspx GotDotNet: API Changes between versions of the .NET框架
  2. ^ http://www.gotdotnet.com/team/upgrade/apiChanges.aspx GotDotNet: API Changes between versions of the .NET框架
  3. ^ http://winfx.msdn.microsoft.com/library/en-us/dv_fxunmanref/html/703b8381-43db-4a4d-9faa-cca39302d922.asp 详细帮助

外部链接

官方

非官方

  • (简体中文)中国著名的.NET开发Blog站点博客堂
  • (简体中文)中国专注于.NET技术的Blog站点博客园

参见