成都创新互联网站制作重庆分公司

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允许生成独立的程序集(组件),其中包含的类型可以轻松集成到任意的程序库中.

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:CLR执行模型简介-创新互联
当前路径:http://cxhlcq.cn/article/ddgdgg.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部