.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的语言编写的程序都可以使用这些特性。 2.基本原理 .NET Framework的诞生解决了许多开发人员多年来一直困扰的问题,并提供了这些问题的解决方案。 每一种编程语言都有自己的独特的地方,如它们可能是强类型的,有垃圾回收机制、基于例外的错误处理,或是以虚拟机方式运行,以及拥有强大的类库。Visual Basic、Powerbuilder以及C++标准模板库(STL)或是其它语言都有一些这样的特性。然而,Java语言以及基于Java的J2SE和J2EE框架表现得最为出色,以至于常常有人将Java和微软的.NET Framework相提并论。现在微软正在将最好的特性溶入自己的产品中,这其中包括支持多种语言的.NET Framework。微软所做的一切,将在它未来的开发语言和工具中得到体现。 3.设计目标和主要特性 .NET Framework的设计基于以下几个目的。 ◆互操作性 总而言之,.NET Framework是为平台独立而设计的。也就是说,一个为这个框架而编写程序无需做任何变化,就可以运行在任何实现这个框架的计算机上。目前,微软只在Windows操作系统上实现了这个框架。微软和其它厂商已经在非Windows操作系统上实现了这个框架的一部分,但这些实现并没有被广泛地使用。 4..NET Framework的结构 4.1 共用语言架构 (CLI) 在公用语言构架或CLI中包含.NET Framework的最重要组件。CLI的目的就是提供一个语言无关开发平台,这些开发工作包括组件的例外处理、垃圾回收、安全以及互操作性。CLR由以下几部分组成: ◆公用类型系统(CTS) 这几部分的关系如图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的发行轨迹。
3.2 .NET Framework 1.1 这个版本是微软对.NET Framework的一次主要的升级。这个版本被包含在Visual Studio.NET 2003中,它的SDK也可以从微软的网站免费下载。这个版本首次被集成在Windows Server2003中。Windows Server2003最开始集成的是1.1 RTM版。下面是.NET Framework1.1的发布轨迹。
#p# 3.2.1 相对于.NET Framework1.0有哪些变化 ◆内嵌了移动版的ASP.NET控件。以1.0版本中这些控件只是作为.NET Framework的附属部分,而并不是.NET Framework的一部分。 3.3 .NET Framework 2.0 这个版本随着Visual Studio.NET 2005、Microsoft SQL Server2005以及BizTalk2006一起发布。
3.3.1 相对于.NET Framework1.1有哪些变化 ◆增加了很多API。 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技术,这其中包括计算机硬件和软件。 图2
#p# 3.5 .NET Framework 3.5 在9频道的访谈中,Jason Zander,微软的.NET Framework团队主管,透露了这个新版本的一些信息。这个版本暂时命名为“3.5版”,这个版本将包含一个新的编译器,这个新的编译器将支持很多新的特性,如语言集成查询,还有C#和VB.NET中的许多新的特性。这个版本将和Visual Studio2005的下一个发行版本(代号为Orcas)同时发行。 四 .NET开发平台 比较和不同的声音 CLR和C#以许多功能和Sun的JVM以及Java非常类似。它们是势均力敌的竞争对手。这两种技术都是基于虚拟器模型的,这种技术可以隐藏硬件的一些细节。它们的源程序都编译成相应的中间字节码,微软使用MSIL,而Sun使用Java字节码。在.NET中,字节码总是即时编译的,而在Java中,字节码可以被解释,也可以被即时编译。在.NET中提供的命名空间相当于Java中提供的包(package)。 来自业界的批评 对于.NET Framework存在的一些问题,业界也有一些批评的声音。 ◆.NET Framework从最初的版本到现在已经有了非常大的变化。而有一些变化和以前的版本存在很严重的兼容性问题,如.NET 1.0、.NET 1.1和.NET 2.0之间存在兼容性。 .NET Frameword在其它各种平台上的实现 微软的.NET Framework是.NET技术的最要实现。其它的只实现了.NET Framework的部分功能。其中的重要原因是.NET的BCL和Windows绑定得太紧,有些功能很难实现。下面列出了一些主要的.NET Framework的实现: ◆微软共享开源的CLI。这是一个开源的.NET Framework实现。它可以运行在Windows XP、FreeBSD以及Mac OS X 10.2上。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||