CLR执行模型简介

1:首先先明确CLR的概念:

CLR(Common Language Runtime):公共语言运行时,是一个可由多种编程语言使用的"运行时";

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了兴安免费建站欢迎大家使用!

在运行时,CLR根本不关心开发人员用的是哪一种语言来变写代码,它只关注语言是否是面向CLR(面向运行时)的.

2:CLR的核心功能包括:

内存管理、程序集加载、安全性、异常处理和线程同步。

3:如图:

CLR执行模型简介

无论是用的是哪一种编译器,结果都是一个托管模块(managed module),托管代码时一个标准的32位/64位Microsoft Windows可移植执行体(PE32/PE32+)文件.

本地代码编译器,生成的是面向特定CPU架构(X86,X64或IA64)的代码.相反,每个面向CLR的编译器生成的都是IL(中间语言)代码,IL代码也被称为托管代码.

除了生成IL,面向CLR的每个编译器还要在每个托管模块中生成完整的元数据,元数据是一组数据表.其中一些数据表描述了模块中定义的内容,元数据其实就是编译器所生成的一些完整数据.

4:CLR实际是不和模块一起工作的,它是和程序集一起工作的.

5:加载公共语言运行时

我们生成的每个程序集既可以是一个可执行应用程序,也可以是一个DLL,最终是由CLR管理这些程序集中的代码的执行,所以必须在运行机器中安装.NET FrameWork.WIndows一些版本系统已经内置打包了好了.NET FrameWork.不过需要我们手动的开启.可以在控制面板中进行启动在此就不做详细解释.作为开发人员,这是不需要解释的.

6:执行程序集的代码

 执行一个方法,第一必须把它的IL转换为本地CPU指令,这是CLR的JIT的本质.

如图:

CLR执行模型简介

 就在Main方法执行之前,CLR会检测Main的代码引用的所有的类型,这导致CLR分配一个内部数据结构,用于管理对所引用的类型的访问.

一个方法只有在首次调用时,才会造成一些性能损失,以后对该方法的所有调用都以本地代码的形式全速运行.无需重新验证IL并把它编译成本地代码.

JIT编译器将本地CPU指令存储到动态内存中,一旦应用程序终止,编译好的代码也会被丢弃,所以,如果将来再次运行应用程序,或者同时启动应用程序的两个实例,JIT编译器必须再次将IL编译成本地指令.

6:IL验证.

IL是基于栈的,所以它的所有指令都要将操作数压入(push)一个执行栈,并从栈弹出(POP)结果.由于IL没有提供操作寄存器的指令,所以人们可以很容易地创建新的语言和编译器,生成CLR的代码.IL指令是无类型的.IL的好处在于是健壮和安全的,因为它编译为CPU指令,CPU会进行验证是否安全.

7:Framework类库

 FCL(Framework Class Library):是一组DLL程序集的统称,其中含有很多的类型定义,每个类型都公开了一些功能.

 Web服务:Web service 技术或者WCF技术,可以非常简单的处理通过Internet发送的消息.

 Web窗体应用程序:Web Form

 Windows应用程序:开发windows GUI应用程序.

 富Internet应用程序:Silverlight技术,可以构建通过Internet来部署的GUI应用程序.这种程序能在Web浏览器的内部或外部运行,还可以在非Windows操作系统与移动设备傻瓜运行.

 Window控制台:提供简单快捷方便的方式,生成应用程序,编译器.

 Window服务:可以通过.NET FrameWork 生成"服务"应用程序.

 数据库存储过程:编写存储过程

 组件库:.NET FrameWord允许生成独立的程序集(组件),其中包含的类型可以轻松集成到任意的程序库中.

当前标题:CLR执行模型简介
分享路径:https://www.cdcxhl.com/article30/gssdso.html

成都网站建设公司_创新互联,为您提供软件开发网站导航标签优化定制开发搜索引擎优化网站内链

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设