.net的发展

微软的.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所示:

#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的发展,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。