核心是CLR(通用语言运行时),

c#或者其它各种语言编译原理:将原代码通过相对的编译器(语法检查原代码分析)生成IL代码托管(IL也称托管代码),最后得到一个托管模块,一个或多个托管模块组成程序集(assembly)交给CLR运行;

编译器需要为托管模块生成完整的元数据;
元数据:是一个数据表集合,其中有描述托管模块中引用类型和成员的,还有一些描述他们中成员类型和定义的,元数据和代码一起被嵌入到EXE或者DLL中;
因此编译器同时产生元数据和IL代码,并且将它们嵌入到生成的托管模块中;

元数据在.net中的作用:
元数据省去了源代码编译时对头文件和库文件的需求,编译器可以直接从托管模块中取元数据来获得代码中包含哪些成员和所有被引用的类型;
用元数据辅助我们编写代码,.net的智能感知特性是通过分析元数据来概述我们某个类型提供了哪些方法,以及方法有哪些参数;
CLR代码验证可以用元数据确保执行的安全性;
通过元数据垃圾收集器可以追踪对象的生存期;

程序集中有一些托管模块和资源文件,通过CLR处理后在内部得到所有文件的逻辑组合关系,得到一个清单数据块,这些内容描述了组成程序集的文件;注意:程序集中还包含它所引用的其它程序集的一些信息,这些信息可以使程序集实现自描述,这样也就让CLR的执行不再到注册表中取,因此让程序集的部署要比非托管组件的部署容易得多;

安装VS08,其主要就是CLR的安装,CLR负责管理包含在程序集中的代码执行;系统文件中的mscoree.dll就代表了本机装了.NET框架;由此,我们也就知道Winform开发对于宿主机器会有.NET框架要求,因此打包安装包时要注意添加.netFrameWork作为附件安装;

当生成的是一个EXE程序集,会在编译中产生一些特殊的信息,CLR在加载程序集的时候江通过这些信息定位到应用程序的入口点方法,这样就启动了应用程序;注意非托管程序如果调用托管程序集,托管程序集DLL的入口函数也会去让CLR来处理包含在其中的代码;

mscoree.dll是负责执行程序集,指示引导如何运行.NET框架下的托管程序,

C#是高级编程语言,IL是机器语言,但不同与一般机器语言,它拥有很多高级指令,IL描述上应该讲是面向对象的机器语言;
IL汇编器ILAsm.exe 反汇编器ildasm.exe

混淆器obfuscator,而对于知识产权的保护一是尽量让托管程序和模块留在公司服务器上,向外发布就需要靠混淆器保护,另外如果混淆器还不够,就只能将一些敏感算法通过非托管模块实现;

CLR的介绍
最大的特点允许编程语言混编集成,c#的I/O能力突出,APL侧重高级工程及金融计算;
CLI(开发通用语言基础构造),CLI定义了文件格式,通用类型系统,可扩展元数据系统,中间语言和对平台底层的访问共五项标准;

CLR不能直接执行IL代码,IL代码还需要通过JIT即时编译器转换成CPU指令;
CLR的工作方式:检测代码中引用到的所有类型,分配一个内部数据结构来管理引用类型的访问;当有方法被调用时代码被即时编译验证并转换成CPU指令,并动态保存在内存中;这样,一个方法只有在首次调用时,才会产生一些性能损失,后续调用时不再进行验证转换,而命令CPU做全速执行。

微软对性能做了大量的压缩工作,因此编译器转换首次调用时性能损耗微乎其微;

FCL(.net框架类库程序集)

CTS(通用类型系统)一个关于类型的正式规范,描述了方法、属性和事件的定义,以及类型可见性和访问类型成员的规则;
CTS建立了以程序集作为类型可见性边界的规则;

IDE集成开发环境(VS.NET)自身不支持多文件程序集,(必须通过命令行工具)

net框架运行原理的更多相关文章

  1. Asp.net WebPages框架运行原理浅析(转)

    在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用 WebFo ...

  2. Asp.net WebPages框架运行原理浅析

    [来源] 达内    [编辑] 达内   [时间]2012-09-14 在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和 ...

  3. thinkphp3.2框架运行原理

    thinkphp3.2是使用率非常普遍的国产php框架,以简单易于上手闻名,那么它框架结构是怎样的? tp3.2设计简单来说就是CBD,core(框架核心文件),bebavior(行为,tp3.2一大 ...

  4. Springmvc的运行原理 SpringMvc的优点

    SpringMVC框架运行原理 1:客户端发送请求到前端控制器(DispatcherServlet),前端控制器根据请求信息(url),查询一个或多个HandlerMapping, 前端控制器,来决定 ...

  5. 测试框架Unitest的运行原理,以及多个测试类中的执行顺序以及简化方法

    单元测试单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一 ...

  6. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

  7. 互联网轻量级框架SSM-查缺补漏第七天(MyBatis的解析和运行原理)

    第七章MyBatis的解析和运行原理 SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心借口SqlSession,所以要先创建SqlSess ...

  8. PHP框架模板原理

           PHP框架现在是一种很流行的东西了,很多朋友开发应用与网站都会选择一个PHP框架或模板了,下面我们来看看PHP框架是如何实现的吧. 本文主要来聊聊框架理论,但不针对任何一款框架,不过任何 ...

  9. ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...

随机推荐

  1. Linux网络配置(仅主机模式)

    1.启动虚机,网络选择:仅主机模式 2.命令行输入 rm -rf /etc/udev/rules.d/70-persistent-net.rules 3.修改虚机中的网络配置 >>vim ...

  2. 复习HTML+CSS(3)

    n  超级链接 l  语法格式:<a 属性 = "值">---</a> l  常用属性: n  Href:目标文件的地址URL,该URL可以是相对地址,也可 ...

  3. POJ-3253 Fence Repair---Huffman贪心

    题目链接: https://vjudge.net/problem/POJ-3253 题目大意: 有一个农夫要把一个木板钜成几块给定长度的小木板,每次锯都要收取一定费用,这个费用就是当前锯的这个木版的长 ...

  4. hdu1005 Number Sequence---找循环节

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1005题目大意: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + ...

  5. 1.1 WEB API 在帮助文档页面进行测试

    这篇文章http://www.cnblogs.com/landeanfen/p/5210356.html写得比较详细, 我就挑简单的来说. 首先用这功能要在WEB API创建的帮助文档下面,如果你使用 ...

  6. html标记语言 --格式标记

    html标记语言 --格式标记 一.格式标记 1.<br>单标记,强制换行标记,让后面的文字.图片.表格等显示在下一行 2.<p>换段落标记 3.<center>居 ...

  7. 0415关于通过FILEBEAT,LOGSTASH,ES,KIBNA实现数据的采集

    如何通过FILEBEAT,LOGSTASH,ES,KIBNA实现数据的采集总体参考网址:https://www.olinux.org.cn/elk/1157.html官方网址:https://www. ...

  8. [LeetCode] My Calendar III 我的日历之三

    Implement a MyCalendarThree class to store your events. A new event can always be added. Your class ...

  9. [LeetCode] Task Scheduler 任务行程表

    Given a char array representing tasks CPU need to do. It contains capital letters A to Z where diffe ...

  10. WebRTC 音频采样算法 附完整C++示例代码

    之前有大概介绍了音频采样相关的思路,详情见<简洁明了的插值音频重采样算法例子 (附完整C代码)>. 音频方面的开源项目很多很多. 最知名的莫过于谷歌开源的WebRTC, 其中的音频模块就包 ...