ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 1~6章)

为了做项目,今天开始通读一下Ecma335标准(2006年6月第四版),琢磨怎么能裁剪出一个核心框架出来。好家伙,长达556页的pdf文档。

全文共六 大部分。将前面看的大纲的条款说明部分基本翻译了一下。

www.ecma-international.org

 

对应术语翻译:

Metadata —— 元数据

Profile     —— 特征

Class      —— 类

member  —— 成员

function  —— 函数

property —— 属性

field       —— 字段

event     —— 事件

 

第一部:概念和架构

1.       Scope 范围

该规范主要定义了CLI (Common Language Infrastructure)

第一部分:概念和架构。主要介绍了CLI的架构,CTS(Common Type System) , VES(Virtual Execution System)CLS(Common Language Specification)的标准描述以及元数据的一点总体描述。

第二部分:Metadata定义和语法。文件格式,逻辑内容和语法。

第三部分:CIL (Common Intermediate Language) 指令集。

第四部分:特征和库。CLI库的总览,特征和库的分解规范。

第五部分:调试交换格式。

第六部分:附件。

  • 一些ILAsm编写 的示例程序
  • 汇编程序的详细实现信息
  •  一套计算机可处理的CIL指令集的描述,该指令集可以用来产生部分语法以用于汇编程序和操作CIL的其它工具
  •  第四部分中库的设计准则
  • 便携性的考虑。

2.       Conformance 一致性

符合该标准的系统应该能实现该标准所规定的所有的标准要求。至少能执行核心特征。在不妨碍本标准规定的功能实现的情况下可以增加功能。可以对标准类库中的类增加成员函数,但不得在接口上增加。

.Net 语言编译器应该产生符合该标准的可验证代码的CIL

3.       引用文献

4.       标准文本中的一些约定

5.       术语和定义

6.       CLI总览

CLI提供了一个可执行代码及其运行环境的规范。CLI的核心是一个统一类型系统,被编译器、工具和CLI自身所共享的CTS

CTS (Common Type System) 建立了一个跨平台、类型 安全和高性能代码执行的框架。该章通过描述CTS描述了CLI的架构。

该章描述了以下四部分:

  • CTS——支持各种语言的类型和操作。CTS倾向于支持更广范围的编程语言的完整实现。第8章
  • Metadata——描述和介绍CTS定 义的类型;元数据提供了一种在工具间(编译器、调试器)及工具 与VES间的通用交互机制。见第9章.
  • CLS——CLS是一份语言设计者和类库设计者之间的一份协议。指定了CTS的一个子集和一套用法约定。见第10章
  • VES——负责调用和运行为CLI写的程序,提供执行托管代码和数据的服务,在运行时,用元数据连接起分散的模块。见第12章

这样,CLI形成了一个设计、开发、配置和执行分布式组件和应用的统一基础框架。基于CLI的每种编程语言有共通的一套CTS子集,基于语言的工具能够互相间也能与VES交互。当需要为别的基础框架部分提供数据类型信息时,VES使用元数据创 建类型的实例(诸如远程服务,程序集下载和安全)

6.1               与类型安全的关系

类型安全经常在以下这些情况时讨论:做什么(譬如保证不同对象间的封装)、阻止什么(譬如阻止写内存 越界)。然而,从CTS的角度看,类型安全保证了:

  • 引用了什么就是什么——每个引用都有类型,引用的对象或者值也有类型,这些类型的定义是一致的。(见8.7
  • 标识了什么就是什么——没有办法误用或者编造一个对象、用户或者安全域。访问对象只能通过可访问的函数和字段。对象仍然能被设计成安全妥协的。然而,不需要对一个类的所有使用进行全局分析,而只对该类的方法和它用到的方法的局部分析就足以评估其脆弱性。
  • 只有合适的操作能被调用——引用类型定义了可访问的函数和字段。这限制了一些可见性(譬如保护字段只有在派生类中可见)。

CTS提供了类型安全,一切皆有类型。问题在于决定一个实现是否符合类型安全的声明。因为声明是在元数据中以被编译的形式出现的,所以基于CIL的编译器能够对实现做类型检查。

6.2               与托管的元数据驱动执行的关系

元数据包括通过代码自定义的类型和引用外部的类型。当程序代码生成时,编译器生成元数据代码。

足够多的信息被存于元数据中:

  • 托管代码执行——不只是调用和执行,还有内存管理和执行状态检查。
  • 管理代码——安装、 解决和其它服务。
  • 代码中的引用类型——既导入到其他语言和工具中,也具有脚本和自动支持功能。
CTS 采用 元数据 驱动的执行环境。使用 元数据 允许CLI 支持:
  •  多执行模式——元数据允许执行环境混合处理解释、JIT编译、原有的和继承来的代 码,并仍旧像调试器和分析器那样展现统一的服务、统一的异常处理、展开的可靠的访问安全代码以及有效的内存管理。
  • 对服务的自动支持——因为元数据在执行时有效,所以执行环境和基本库能够自动提供对反射、自动化、序列化、远程对象的支持。而对于非托管的本地代码,由于其可操作部分被隐藏,所以对程序编写人员而言只有一点或根本没有作用。
  • 更好的优化——用代 替物理偏移、布局和大小的元数据引用来允许CLI优化成员和下发表的物理布局。
  • 简化绑定关联性——元数据引用,通过加载时规划替代编译时规划和名字绑定来减少版本到版本的关联性。
  • 灵活的配置方案——因为我们能用元数据来既做引用又做定义类型,所以使更强的鲁棒性和灵活配置以及解决机制成为可能。方案就是通过查看一些适当的程序后,可能找出用于该情况下最满足需求的实现方案。前面讲的有五个要素:要通过元数据满足需求和上下文关系,去哪里查看,怎样找到一种实现方案以及怎样决定如何才能最优匹配所有应用程 序包和配置。
6.2.1          托管代码

托管代码是提供了足够的信息以允许CLI提供一套核心服务的代 码,包括:

  • 指定方法、定位描述方法的元数据的地址
  • 遍历栈
  • 处理异常
  • 存储和恢复异常信息

这个标准为存储和传达托管代码提供了详细的指令集、CIL(第三部分)和一种文件格式(第二部分)

6.2.2          托管数据

托管数据是被CLI通过垃圾回收进程自动分配和释放的数据。

6.2.3    摘要

CTS就是关于语言间的集成:用别的 语言对象就好像是用自己的。

CLI的目标是用任何一种 语言写组件和程序更容易。它通过定义一套标准类型,所有组件自描述,提供高性能的通用执行环境来做到这点。这确保了所有CLI兼容的系统服务和组件可以访问所有CLI可理解的语言和工具。另外,这简化了使用组件和应用程序时的配置,所有这一切允许编译器和其他工具支 持高性能的执行环境。CTS高层次地包含了这些概念和相互作用,使这一切 成为可能。

讨论分为四部分:

  • 类型系统——类型是什么及如何定义他们
  • 元数据——类型如何被描述及那些描述如何被存储
  • CLS——对语言互通性的限制性要求
  • VES——代码如何被执行及类型如何被初始化、相互作用及消亡

 

版权声明 作者:Cubean
出处:http://www.cnblogs.com/cubean/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

下一篇:ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)

转载于:https://www.cnblogs.com/cubean/archive/2010/03/04/1678431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值