第二章 NGWS Runtime 技术基础

来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 21:41 点击:
  既然你已经具有了C#全面的印象,我也想让你了解NGWS runtime的全貌。C#依靠由NGWS提供的运行时;因此,有必要
知道运行时如何工作,以及它背后所蕴含的概念。
    所以,这一章分为两部分——它们是所有的概念和使用的基础。两部分的内容虽然有些重叠,但它有助于加深理解正
在学习的概念。
  
2.1  NGWS  Runtime
    NGWS和NGWS Runtime为你提供了一种运行时环境。该运行时管理执行代码,并提供了使编程更容易的服务。只要你的
编译器支持这种运行时,你就会从这种受管理的执行环境中得益。
    你猜测C#编译器支持NGWS runtime很正确,但是不仅它支持NGWS runtime,VB和C++也支持。这些为支持运行时所创建
的代码称作"受管代码"(managed code)。以下是你的应用程序从NGWS runtime那里所得到的利益:

    交叉语言集成(通过通用语言规范)
    自动内存管理(垃圾收集)
    交叉语言异常处理(统一展开)
    增强安全(包括类型安全)
    版本支持("DLL地狱"终结者)
    组件交互简化模式

    因NGWS runtime 要提供了所有的这些好处,编译器必须把元文件和受管代码一起发出。元文件描述代码中的类型,它
和你的代码存在一起(与PE类似---PE为可变位执行文件)
    正如你从很多种交叉语言功能所看到的,NGWS runtime主要是关于高度集成交叉多异编程语言(tight integration
across multiple different programming languages)。这种支持可达到允许你从一个VB对象派生出一个C#类的程度(我后
面会给出要讨论的文章)。
    C#程序员将会喜欢的一个功能是,他们不必担心内存管理—也就是说不必担心臭名昭著的内存泄漏。NGWS  runtime提
供了内存管理,当对象和变量的生命期结束(不再被引用)时,垃圾收集器释放它们。我真的喜欢这个功能,因为在COM中的
内存管理一直是我的一块心病。
    应该鼓励配置一个管理应用程序或者组件。因为管理应用程序含有元数据文件,NGWS runtime可以利用这些信息,以
确保你的应用程序具有它所需的各种规定版本。所产生的明显效果为,由于你的代码没有相互之间的依赖,很少可能出现
中断。
    这章余下来的将分为两部分,每一部分讨论NGWS runtime的各个方面,直到你的C#应用程序能执行为止。
        1、中间语言(Intermediate Language,缩写IL)和元数据
        2、即时编译器(just-in-time compliers,简称JITers)

2.1.1  中间语言和元数据
    由C#编译器生成的受管代码并不是原始代码,但它是中间语言(IL)代码。这种IL代码自身变成了NGWS runtime的受管
执行进程的入口。IL代码明显的优势在于它是CPU无关的,这也意味着,你要用目标机器上的一个编译器才能把IL代码转换
成原始代码。
    尽管IL代码由编译器产生,但它并不是编译器提供给运行时仅有的东西。编译器同样产生有关你代码的元数据,它告
诉运行时有关你代码的更多的东西,例如各种类型的定义、各种类型成员的签名以及其它数据。基本上,元数据是类型
库、注册表内容和其它用于COM的信息。尽管如此,元数据还是直接和执行代码合并在一起,并不处在隔离的位置。
    IL和元数据存放于扩展了PE格式的文件中(PE格式用于.exe和.dll文件)。当这样的一个PE文件被装载时,运行时从文
件中定位和分离出元数据和IL。
    在进一步说明之前,我想给你已有的IL指令的简短目录。尽管它不是一个完整的清单,也不需要你熟记和理解,但是
它列出了你所必需的、C#程序所基于的知识基础。

    算术和逻辑操作符
    控制流
    直接内存访问
    堆栈操作
    参数和局部变量
    堆栈分配
    对象模式
    实例类型值
    临界区
    数组
    分型位置
    即时编译器(JITters)

2.1.2  即时编译器(JITters)
  &nb
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1