栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C#基础教程(一).NET框架

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#基础教程(一).NET框架

一、.NET

是由微软开发,一个致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的软件开发平台。.NET框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime)为基础,支持多种语言(C#、VB.NET、C++、Python等)的开发。比如Python,可以借助微软提供的开源工具,即 IronPython,可以在C#中直接调用Python类库函数,Python会编译成CIL(又称MSIL,CL,以下就称CIL)

二、CLR

CLR即公共语言运行时(Common Language Runtime,简称CRL),就是微软为.net产品构建的运行环境,与java的JVM类似,通俗的讲就是.net虚拟机。CLR上实际运行的并不是我们通常所用的编程语言(例如C#、VB等),而是一种字节码形态的"中间语言"。这意味着只要能将代码编译成这种特定的"中间语言"(MSIL),任何语言的产品都能运行在CLR上。CLR通常被运行在Windows系统上,但是也有一些非Windows的版本。这意味着.Net也很容易实现"跨平台"。CLR是.net系列产品运行的基础。

三、托管代码/非托管代码

定义:Common Intermediate Language,公共中间语言。

托管代码是在公共语言运行库中运行的代码,托管代码的执行由公共语言运行库来直接控制,而不是操作系统来直接控制。具体而言,由公共语言运行库中的代码管理器来控制和执行托管代码,而公共语言运行库的其他部分会提供托管代码执行时所需要的各种服务,如垃圾回收、类型检查、安全支持等。托管代码不是源码,是CIL,遵守公共语言规则的语言都可以编译成CIL,比如C++,Phython,前提在微软特定工程和特定IDE,编译方法肯定与源语言没跨平台之前编译不同。

非托管代码是在托管代码的概念出现后相对于托管代码而言的,其实际上是计算机操纵系统可识别的机器码。非托管代码(机器码)的执行由操作系统来控制,其在执行时也需要各种服务,如垃圾回收、类型检查、安全支持等。由于没有像公共语言运行库这样的东西会自动给你提供服务,所以你需要自己提供这些服务,也就说你要写额外的代码来实现垃圾回收等功能。非托管代码比如在C#中直接调用c++dl,那么c++那部分直接编译成机器语言直接交给计算机系统去运作。

四、CLI

定义:Common Language Infrastructure公共语言基础结构,CLI是一组阐述了系统的架构、规则和约定的规范。

五、效率探讨:同一段代码测试托管代码和非托管代码效率的对比。 - 无常 - 博客园

结论:

       非托管C:4.609s;

        C++ CLR Console Aplication(代码是C拷贝):15.172s;

       C++内容用C#完成:62.453s

很显然,托管肯定没有不托管直接交互快。

六、CLI执行过程

到目前为止,源代码已经被编译成二进制的IL并且包含在程序集中,而且被CLR加载。但是,直接执行运算的CPU来说二进制的IL还是太高级了,而且不同的CPU支持的指令集也有所差异。因此,CLR在这里还需要对已经编译好的IL再次编译,针对CPU版本生成可以直接运行的CPU指令,这个过程是由JIT(Just In Time)编译器完成的,可以称作"即时编译"。

当第一次执行某个函数时,MSCorEE.dll 的JITCompiler函数会从程序集的元数据中获取该方法和方法的IL,并且分配一块内存地址,然后将IL编译成的本地代码放入这块内存,然后执行内存中的本地代码。

当再次执行这个函数的时候,由于内存中已经存在JIT编译好的本地代码,因此不需要再次进行JIT过程,可以直接执行内存中的本地代码。 可以预知的结果是,这种情况下应用程序启动后第一次调用某个模块所花费的时间要比以后调用这个模块要稍微多一些。

七、.NET 组成

.NET框架由三部分组成,编译工具+CLR+FCL(Framework Class Library)。

编译工具:IDE、.NET兼容的编译器(支持C#、VB.NET、F#、IronRuby和托管的C++)、调试器;

FCL是一个超类库,BCL(Base Class Library)也紧紧是它一个子集;

严格来说,编译工具不能算作.NET框架一部分的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号