《深入了解.NET框架》

原创 2001年06月19日 11:46:00

深入了解.net框架(一)
理解受管理的执行(managed excution)
    在受管理的执行过程的第一步是设计源程序。如果你想你的应用程序受益于common language runtime(公共语言运行时),你必须使用一个或多个支持运行时的语言编译器,比如visual basic,c#,visual c++或者其他第三方编辑器,比如perl或cobel编辑器。
    由于运行时(runtime)是一种多语言执行环境,它广泛的支持多种数据类型和语言

特性。你所使用的编辑器决定了将要使用运行时(runtime)哪一部分的功能,这样,你

可以使用这些特性设计你的代码。你代码的语法时由编辑器决定的,而不是由运行时决定的。如果你的组件要能够被其他语言编写的组件完全可用,你必须在组件的导出类型中使用这种包括在common language specification(CLS)中的语言特性。
    当你的代码被写好,编译好后,编辑器将它翻译成微软中间语言(MSIL),并产生所需要的元数据(metadata)。当你准备执行你的代码时,MSIL就通过Just In Time(JIT)

编辑器编译成本地代码(即:适合本机执行环境的代码)。如果安全策略要求代码是安全类型的,JIT编辑器的还要检测IL是否是安全类型(type-safety)的;如果安全类系检查没有通过,当代码执行时,将抛出一个例外(exception)。
    在执行过程中,运行时(runtime)提供许多服务,包括自动内存管理,调试支持,

加强安全性和使代码能和其他非管理代码(unmanaged code)比如COM组件之间协调工作的能力。下面将介绍更多的关于受管理的执行的详细信息。
    1、
    微软中间语言(Microsoft Intermediate Language MSIL)
    如果你把你的源程序编译成受管理的代码(managed code),编辑器将把你的源代码翻译成微软中间语言(MSIL)。MSIL与具体的CPU指令无关,并能有效的转化为本地代码。MSIL包括很多指令,比如用于转载,存储,初始化,调用对象方法的指令,以及用于算术、逻辑运算,控制流,直接内存访问,例外处理等指令。在代码被执行前,MSIL必须被JIT(Just In Time)编辑器转化成适合特定CPU的代码。由于运行时支持一个和多个用于不同计算机体系结构的JIT编辑器,所以相同的MSIL能够被JIT编译后在任何一台MSIL支持的计算机上运行。
    当一个编辑器产生了MSIL后,它也产生了元数据(metadata),它能够描述你的代码中的类型,包括每种类型定义,每种类型成员的识别标志,你的代码应用的成员和其他在代码执行的时候运行时(runtime)所要使用到的数据。MSIL和元数据被包含在PE (Portable Executable)文件中。这种文件是基于和扩展了已经发布了的Microsoft

Portable Executable(PE)和Common Object File Format(COFF)。这种包括了MSIL或者

本地代码一级元数据的文件格式使操作系统能识别公共语言运行时(Common Language

Runtime)映象。在这个有MSIL的文件里,元数据的存在使你的代码能够描述它自身,这就意味着不再需要类型库或者IDL。当在执行过程中,运行时(runtime)能定位和摘取所需要的元数据。
    2、
    JIT编译
    在MSIL被执行之前,它必须被.net框架Just In Time(JIT)编译器转化成本地代码

(native code),这是一种与特定CUP有关(CUP-specific)的代码,它能运行在有JIT编

辑器的相同体系结构的计算机上。由于运行时提供了一个能支持不同CPU的的JIT编辑器,开发人员就能够写出一套能被JIT编译后,在不同体系结构的计算机执行的MSIL。(如果你的受管理的代码调用了特定平台的本地APIs或者特定平台的类库,你的代码就只能运行在这个特定的操作系统。)
    在JIT编辑后,我们可以获得某些代码在执行过程中从来不会被调用的信息。这样,与其消耗许多时间和内存将包含所有的MSIL的PE文件转化成本地代码,不如只将要使用MSIL转化为本地代码。装载器在装载时为每种类型的方法创建一个stub(关于将MSIL转化成本地代码的方法的信息描述,包括方法的入口地址等),并和方法联系起来。在调用方法的初始化时,这个stub将控制传给JIT编译器,编译器把方法的MSIL转化成本地代码并将stub指向本地代码的地方。以后在被JIT编译的指向先前生成的本地代码的方法调用时,就会减少被JIT编译器和执行代码所花费的时间。
    在将MSIL转化成本地代码的过程中,代码必须通过一个认证过程(除非管理员已经建立了安全策略,这样就可以将代码绕过认证)。认证检查MSIL和元数据,以便知道代码是否时类型安全的(type-safe),这也就意味着对经过授权的内存进行访问。类型安全对确定对象之间是否时安全独立的很重要。这样就能防止无意和恶意的冲突。类型安全也为代码的安全限制可靠的加强提供了保障。
    由于代码时经过安全类型检测的,所以运行时就能保证下面的几条:
    .对类型的引用是和正在应有的类型是严格兼容的
    .只有正确的定义的操作才能被一个对象调用
    .标识符是被申明了的
    在认证过程中,检查MSIL代码以便确定代码是否被允许访问的内存地址和是否通过正确定义的类型调用方法。例如,代码不能访问所限定的内存以外的地址。此外,由于错误的MSIL能导致类型安全规则错误,认证要观察代码,看MSIL是否被正确的产生。认证过程只传递类型安全的代码。然而,某些类型安全的代码由于认证过程的限制而不能通过认证,并且有些语言也不能产生可认证的类型安全代码。

深入理解Spring4框架(一)——简介

我们共同来构建更好的企业应用。Spring帮助全世界的开发团队构建简单、便携、快速和灵活的基于JVM的系统和应用。这两句话已经足以说明Spring的目标,它针对的领域是企业应用,这套框架构建的应用有着...
  • u012758088
  • u012758088
  • 2016年07月23日 00:02
  • 3796

深入理解SpringMVC-基础篇

深入理解SpringMVC-入门篇 SpringMVC是一个轻量级的MVC框架,SpringMVC由于其轻量级的实现以及与Spring框架的无缝整合等诸多优势,近年来在MVC框架中脱颖而出,受到诸多开...
  • u010820702
  • u010820702
  • 2016年06月11日 13:57
  • 3932

深入探索.NET框架内部了解CLR如何创建运行时对象

随着通用语言运行时(CLR)即将成为在Windows®下开发应用程序的首选架构,对其进行深入理解会帮助你建立有效的工业强度的应用程序。在本文中,我们将探索CLR内部,包括对象实例布局,方法表布局,方法...
  • plean
  • plean
  • 2011年03月29日 17:24
  • 503

深入.NET框架

  • 2012年08月24日 20:36
  • 4.13MB
  • 下载

aarbac - 基于角色的自动访问控制.NET框架

介绍 背景 现在技术解决方案非常庞大,每个技术问题至少有一个解决方案。典型的应用程序有以下几层: 安全层(认证和授权)用户界面层业务逻辑层数据访问层和一个RDBMS数...
  • AnHaoGG
  • AnHaoGG
  • 2017年12月21日 00:18
  • 60

Accord.NET框架功能介绍

机器学习组件Accord.NET框架功能介绍 1.基本功能与介绍 Accord.NET为.NET应用程序提供了统计分析、机器学习、图像处理、计算机视觉相关的算法。 Accor...
  • u013628121
  • u013628121
  • 2015年12月21日 15:57
  • 4530

F.NET框架示例(三)、数据库配置

F.NET框架示例(三)、数据库配置
  • shijianyu00
  • shijianyu00
  • 2015年02月28日 15:03
  • 492

WinForm程序脱离.NET框架方法

WinForm程序脱离.NET Framework的方法有以下几种: ­ ( 1 ) .Net Linker :飞信就利用了它的核心。飞信是使用C#在.NET上开发的。.Net Linker比较贵,...
  • u010561359
  • u010561359
  • 2013年06月04日 14:56
  • 1303

.NET框架-LINQ 9类操作符使用举例

Linq标准查询操作符 筛选操作符 投射操作符 排序操作符 连接运算符 组合运算符 量词操作符 ......
  • daigualu
  • daigualu
  • 2017年01月11日 15:59
  • 1379

ASP.NET框架中SQL Server 2008表值参数的操作

说明: 本文将帮助你理解SQL Server 2008表值参数,这里已经用了ASP.NET MVC Framework 3.0,但你可以用ASP.NET MVC的其它框架。 背景: 在面向对象程...
  • bighead1026
  • bighead1026
  • 2013年12月20日 09:58
  • 436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《深入了解.NET框架》
举报原因:
原因补充:

(最多只允许输入30个字)