技术开发 频道

.NET 的发展与变迁

    4..NET Framework的结构

    4.1 共用语言架构 (CLI)

    在公用语言构架或CLI中包含.NET Framework的最重要组件。CLI的目的就是提供一个语言无关开发平台,这些开发工作包括组件的例外处理、垃圾回收、安全以及互操作性。CLR由以下几部分组成:
    ● 公用类型系统(CTS) 
    ● 公用语言规范(CLS)
    ●公用中间语言 (CIL)
    ●即时编译器 (JIT)
    ●虚拟执行系统 (VES)

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

 
    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。

0
相关文章