.NET 的发展与变迁

 
.NET 的发展与变迁
http://www.51cto.com/specbook/15/35600.htm
 

微软的.NET Framework是一套可以集成到Windows操作系统中的组件。它为应用程序提供了中间代码的支持,并且可以通过运行时来管理这些中间代码。.NET Framework是微软的一个关键产品,它更适合于在Windows平台上新编写的软件。

微软通过中间代码的形式提供了很多基于..NET Framework的类库,这其中包括很多我们常用的类库,如数据访问、密码技术、Web应用、数学算法以及网络通讯。开发人员可以通过这些类库建立强大的应用程序。

基于.NET Framework编写的应用程序可以执行在.NET运行时上。运行时环境是.NET Framework的一部分,我们可以简称它CLR。CLR可以使虚拟机变得透明,这样开发人员就无需考虑底层的执行细节问题。除了这些,CLR还提供了其它的功能,如安全机制、内存管理、错误处理等。因此,.NET Framework是由基础类库和CLR组成的。这个框架的目的就是使开发应用程序变得更容易,以及降低应用程序和计算机被攻击的可能性。

比较稳定的.NET Framework版本是在2002年发布的1.1版。现在最新的发行版是2006年11月发布的3.0。这个版本可以运行在Windows XP SP2、Windows 2003 SP1以及Windows Vista上。

1..NET平台的意义

对于软件开发人员来说,.NET Framework是Windows平台最大的改变之一。.NET Framework的出现,使原来需要通过编程语言来做的一些工作转由.NET Framework来完成了。它的这些特性给我们带来了好处,这其中包括:

◆可以保证所有支持.NET的语言编写的程序都可以使用这些特性。
◆开发人员可以使用任何支持.NET的语言使用这些功能,也就是说,这些功能是语言独立的。
◆可以保证通过任何支持.NET的语言编写的软件都具有相同的行为。
◆操作系统可以提供一些.NET Framework不支持的功能。
◆降低程序之间通信的复杂性和局限性,这些程序可以是相同语言编写的,也可以是不同语言编写了。

2.基本原理

.NET Framework的诞生解决了许多开发人员多年来一直困扰的问题,并提供了这些问题的解决方案。

每一种编程语言都有自己的独特的地方,如它们可能是强类型的,有垃圾回收机制、基于例外的错误处理,或是以虚拟机方式运行,以及拥有强大的类库。Visual Basic、Powerbuilder以及C++标准模板库(STL)或是其它语言都有一些这样的特性。然而,Java语言以及基于Java的J2SE和J2EE框架表现得最为出色,以至于常常有人将Java和微软的.NET Framework相提并论。现在微软正在将最好的特性溶入自己的产品中,这其中包括支持多种语言的.NET Framework。微软所做的一切,将在它未来的开发语言和工具中得到体现。

3.设计目标和主要特性

.NET Framework的设计基于以下几个目的。

◆互操作性
由于基于.NET Framework的程序有时需要和以前的程序进行交互,因此,.NET Framework为我们提供了访问.NET环境外部资源的能力。如EnterpriseServices命名空间提供了访问COM组件的能力,我们还可以通过P/Invoke访问其它的外部资源。
◆公用运行时引擎
众所周知,基于.NET Framework的编程语言被编译成中间语言,也就是我们通常说的CIL(Common Intermediate Language)。微软的CIL的实现就是非常著名的微软中间语言(Microsoft Intermediate Language ,简称MSIL)。微软所实现的CIL并不是被解释执行的,而是以我们熟知的即时编译(JIT)的方式运行的,这种即时编译执行方式可以将中间代码编译成本地代码执行。这些概念合起来叫做公用语言架构(CLI),这个架构微软是以规范的形式发布的。微软关于CLI的实现就是共用语言运行时(Common Language Runtime ,简称CLR)。
◆语言独立
.NET Framework引入了共用类型系统(Common Type System,简称CTS)。在CTS规范中定义了所有可能的数据类型、CLR支持编程架构以及这些架构之间如何交互。正是因为.NET Framework提供了这个特性,所以它可支持多种编程语言。这一点在下面的部分将详细讨论。
◆基础类库
基础类库(BCL),有时也被叫做框架类库(FCL),它是一套所在支持.NET Framework的语言都可以使用的类库。BCL提供了许多封装了通用函数的类,这些函数包括文件读写、图形操作、数据库操作以及XML操作等。
◆简化开发
Windows的注册表设置、文件分发以及DLL地狱一直困扰着应用程序的安装和发布。而基于.NET Framework的应用程序就完全不会遇到些问题。
◆安全
.NET允许代码运行在不同的安全层,而这一且无需其它系统的支持。

总而言之,.NET Framework是为平台独立而设计的。也就是说,一个为这个框架而编写程序无需做任何变化,就可以运行在任何实现这个框架的计算机上。目前,微软只在Windows操作系统上实现了这个框架。微软和其它厂商已经在非Windows操作系统上实现了这个框架的一部分,但这些实现并没有被广泛地使用。

4..NET Framework的结构

4.1 共用语言架构 (CLI)

在公用语言构架或CLI中包含.NET Framework的最重要组件。CLI的目的就是提供一个语言无关开发平台,这些开发工作包括组件的例外处理、垃圾回收、安全以及互操作性。CLR由以下几部分组成:

◆公用类型系统(CTS)
◆公用语言规范(CLS)
◆公用中间语言 (CIL)
◆即时编译器 (JIT)
◆虚拟执行系统 (VES)

这几部分的关系如图1所示:

.NET 的发展与变迁_第1张图片

#p#

4.2 装配集(Assemblies)

微软中间语言被保存在.NET装配集中,这些装配集是以Windows的执行文件(EXE或DLL)形式表现的。.NET的发布、版本和安全是以装配集为单位的。装配集由一个或多个文件组成,但必须有一个文件包含装配集的元数据(也就是manifest)。一个装配集的全名由它本身的名子,版本号以及公共键组成。在这里名子是必须的,其它的都是可选的。公共键是在装配集建立时生成的,公共键可以唯一描述装配集的名字和它的所有的内容。如果一个装配集文件生异常,可以通过公共键检测出来。

4.3 元数据

所有的CIL可以通过.NET元数据自我描述。CLR通过检测元数据可以保证正确的方法被调用。元数据一般是由编译器产生,但开发人员也可以通过自定义属性来建立自己的元数据。

5. 安全

.NET有它自己的安全机制,它的安全机制分为两个方面:代码访问安全(CAS)以及确认和验证。代码访问安全是基于和一个特定的装配件(assembly)相关的授权。一般这种授权就是根据这个装配件的来源(无论它是安装在本机上,还是从局域网或Internet下载的)。代码访问安全机制使用授权确定代码可以访问的范围。装配件中的每一个方法在调用之前都会检查它的授权。如果某个方法未被授权,调用它时将会抛出一个安全错误。

当装配件被装载时,CLR会对它进行各种审核。其中两个就是确认和验证。在确认时,CLR检查这个装配件中是否包含正确的元数据和CIL,以及内部状态表是否正确。验证机制只是进行了模糊的检查,这种机制只是检查你的代码是否做了“不安全”的事。这种验证算法非常严格,因此,有时就算“完全 ”的代码也无法通过验证。对于不安全的代码,只有在装配件有“忽略验证”的许可时才可以执行,这种许可一般意味着装配件被安装在了本地机器上。

6. 标准化与许可证

在2000年8月,微软、Hewlett-Packard和Intel通过合作使CLI和C#编程语言成为了标准。在2001年12月,CLI和C#正式成为ECMA标准(ECMA335和ECMA334)。在2003年4月,ISO也将CLI和C#纳入了自己的标准(ISO/IEC23271和ISO/IEC23270)。

在微软和它的合作伙伴要为CLI和C#申请专利时,ECMA和ISO要求所有的专利申请要在“RAND(reasonable and non-discriminatory)条款”下进行。根据这些条款,微软和其它公司已经同意将这些专利免除版税。

然而,在.NET Framework中并不是所有的部分都免费,如Windows Forms、ADO.NET和ASP.NET。这使得在其它的平台上可能无法完全实现.NET Framework。

三.NET版本的发展变迁

自从.NET Framework在2001年首次发布以来,微软对它已经进行了两次小的升级和一次大的升级,这其中包括几个稳定版本(有一些版本是作为SP发布的)。

3.1 .NET Framework 1.0

.NET Framework1.0是第一个发行的版本。这个SDK以单独的开发包形式发布。它还被包含在Microsoft Visual Studio.NET中。这个Visual Studio.NET版本就是微软发行的第一个Visual Studio.NET版本,即Visual Studio.NET 2002。下面是.NET Framework1.0的发行轨迹。

版本名称 版本号 发行日期
1.0 Beta 1 1.0  2000-11
1.0 Beta 2 1.0.2914.0 2001-06-20
1.0 RC 1.0.3328.0  
1.0 RTM 1.0.3705.0 2002-01-05
1.0 SP1 1.0.3705.209 2002-03-19
1.0 SP2 1.0.3705.288 2002-08-07
1.0 SP3 1.0.3705.6018 2004-08-31

3.2 .NET Framework 1.1

这个版本是微软对.NET Framework的一次主要的升级。这个版本被包含在Visual Studio.NET 2003中,它的SDK也可以从微软的网站免费下载。这个版本首次被集成在Windows Server2003中。Windows Server2003最开始集成的是1.1 RTM版。下面是.NET Framework1.1的发布轨迹。

版本名称 版本号 发行日期
1.1 RTM 1.1.4322.573 2003-04-01
1.1 SP1 1.1.4322.2032 2004-08-30
Released with Windows Server 2003 SP1 1.1.4322.2300 2005-03-30

#p#

3.2.1 相对于.NET Framework1.0有哪些变化

◆内嵌了移动版的ASP.NET控件。以1.0版本中这些控件只是作为.NET Framework的附属部分,而并不是.NET Framework的一部分。
◆更高的安全性。增加了从Internet下载的.NET程序的访问限制,以及为ASP.NET增加了代码访问安全功能。
◆内嵌了ODBC和Oracle数据库的支持。在1.0版本中这些功能也是作为附属部分,它们并不属于.NET Framework。
◆增加了精简版的.NET Framework。这是一个可以运行在手持设备上的版本。
◆支持IPv6。
◆增加了很多API。

3.3 .NET Framework 2.0

这个版本随着Visual Studio.NET 2005、Microsoft SQL Server2005以及BizTalk2006一起发布。

版本名 版本号 发行日期
2.0 Preview 2.0.40301.9 2004-03-01
2.0 Beta 1 2.0.40607.16 2004-06-29
2.0 Beta 1+ 2.0.40607.42 2004-07-27
2.0 Beta 1R 2.0.40607.? 2004-09-01
2.0 Beta 2 2.0.41013.0 2004-10-13
2.0 RTM 2.0.50727.42 2005-11-07

3.3.1 相对于.NET Framework1.1有哪些变化

◆增加了很多API。
◆提供了一些用于高级控制的新API。这些控制包括多线程、内容分配、动态装载以及其它一些控制。在SQL Server2005中已经大量了这些功能。
◆支持64位操作。所支持的平台包括x64和IA64。
◆增加了对范型的支持。
◆对ASP.NET控制进行了重大升级。
◆提供了新的数据绑定控件
◆增加了ASP.NET的个性化支持,这其中包括对主题和皮肤的支持。

3.4 .NET Framework 3.0

我们以前将.NET Framework3.0称为WinFX,这个版本提供了一套新的内核API,这个版本已经成为Windows Vista操作系统的一部分。.NET Framework3..0还可以被安装在Windows XP SP2以及Windows Server2003 SP1上。这个版本在构架上并没有什么大的变化,它的运行时使用的是.NET Framework2.0的运行时。

.NET Framework3.0由以下几个主要部分组成:

◆Windows表现层基类库(WPF),以前叫Avalon。这是一套新的图形接口API,这套API可以充分利用3D技术,这其中包括计算机硬件和软件。
◆Windows通讯基类库(WCF),以前叫Indigo。这是一个面向服务的消息系统,这个系统允许将本地程序和外部的程序集成,这有些类似于Web Services。
◆Windows工作流基类库(WF),允许系统建立自动化任务,并且可以在其中建立事务。
◆Windows数字标识(WCS),以前叫InfoCard。这是一个可以存储这人数字标识,并提供了编程接口,如可以将这项技术应用到网站的登录上。

.NET 的发展与变迁_第2张图片

图2

版本名称 版本号 发行日期
3.0 Beta 2 3.0.3906.22 2006-05-23
3.0 June CTP  3.0.04131.6 2006-06-23
3.0 July CTP 3.0.04307.00 2006-07-17
3.0 RC 3.0.04324.17 2006-09-01
3.0 RTM 3.0.4506.30 2006-11-06

#p#

3.5 .NET Framework 3.5

在9频道的访谈中,Jason Zander,微软的.NET Framework团队主管,透露了这个新版本的一些信息。这个版本暂时命名为“3.5版”,这个版本将包含一个新的编译器,这个新的编译器将支持很多新的特性,如语言集成查询,还有C#和VB.NET中的许多新的特性。这个版本将和Visual Studio2005的下一个发行版本(代号为Orcas)同时发行。 

四 .NET开发平台 比较和不同的声音
   
NET 和Java 以及J2EE的比较

CLR和C#以许多功能和Sun的JVM以及Java非常类似。它们是势均力敌的竞争对手。这两种技术都是基于虚拟器模型的,这种技术可以隐藏硬件的一些细节。它们的源程序都编译成相应的中间字节码,微软使用MSIL,而Sun使用Java字节码。在.NET中,字节码总是即时编译的,而在Java中,字节码可以被解释,也可以被即时编译。在.NET中提供的命名空间相当于Java中提供的包(package)。
但.NET和Java也有很大区别,首先,.NET仅可以在Windows平台上运行,而Java可以运行在许多平台上。但.NET被设计成支持多种语言的架构,而Java平台最初只是为Java语言而设计的。

来自业界的批评

对于.NET Framework存在的一些问题,业界也有一些批评的声音。

◆.NET Framework从最初的版本到现在已经有了非常大的变化。而有一些变化和以前的版本存在很严重的兼容性问题,如.NET 1.0、.NET 1.1和.NET 2.0之间存在兼容性。
◆无论是微软的虚拟机还是Sun的虚拟器,在运行程序时都需要占用大量的系统资源,它们所占用的资源远高于实现相同功能的本地代码的占用的资源。但由于.NET使用了即时编译功能,因此,有时.NET程序的表现要比基于本地代码的程序更好。
◆由于微软出于商业利益的需要,使.NET Framework对Windows操作系统过分依赖,这也招来了不少非议。然而,.NET Framework的一部分目前已经在其它平台上实现了,这可能会减少一些对.NET Framework的批评。
◆由于.NET程序是以中间语言发布的,这就很容易被人反编译后得到源代码。因此,.NET程序在源代码保护方面有一定的缺陷。微软也提供了一些这方面的解决方案。如微软提供了一个叫obfuscation的工具,通过这个工具,可以使中间代码更难被反编译。在Visual Studio2005中提供了这个工具的完整版本。

.NET Frameword在其它各种平台上的实现

微软的.NET Framework是.NET技术的最要实现。其它的只实现了.NET Framework的部分功能。其中的重要原因是.NET的BCL和Windows绑定得太紧,有些功能很难实现。下面列出了一些主要的.NET Framework的实现:

◆微软共享开源的CLI。这是一个开源的.NET Framework实现。它可以运行在Windows XP、FreeBSD以及Mac OS X 10.2上。
◆精简版的.NET Framework(DotGNU项目的一部分)。它实现了BCL的一部分功能,并且实现了一个C#编译器。它支持很多的CPU和操作系统。
◆Mono也是一个CLI的实现,它实现了BCL的部分功能。Mono以双重许可证形式发布,一个是免费的,另一个是商业的。Mono是由Novell开发的,这其中包括ASP.NET、ADO.NET以及Windows Forms的支持。并且还包括了C#编译器和VB.NET编译器。

 

你可能感兴趣的:(技术存档)