一 .Net框架组成分为三部分:公共语言运行时CLR、框架类库FCL和编程工具

1.CLR:公共语言运行时(Common Language Runtime):

是一个运行时环境负责代码安全验证、代码执行、资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。它在操作系统的顶层,是.Net的核心组件。

2.FCL:框架类库(Framework Class Library):

提供大量应用类库,如文件操作类、集合类、线程和同步类等等,可供开发使用,BCL是FCL的子集。

3.编程工具:

编程工具涵盖了编码和调试需要的一切,包括IDE、编译器和调试器。


二 程序的编译和运行:

编译成CIL

.Net语言的编译器接受源代码文件,并生成名为程序集的输出文件。

程序集要么是可执行的,要么是DLL;

程序集里的代码不是本机代码,而是CIL(Common Intermediate Language)公共中间语言;

程序集包含的信息包括:程序的CIL,程序中使用类型的元数据,对其他程序集引用的元数据。

编译成本机代码并执行

程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行下面的步骤:

检查程序集的安全特性;

在内存中分配空间;

把程序集中的可执行代码发送给(Just-In-Time,JIT)实时编译器,把其中的一部分编译成本机代码。



程序集中的可执行代码只在需要时有JIT编译,然后被缓存以备后来的程序使用。不被调用的代码不会被编译,被调用的代码只被编译一次。

一旦CIL被编译成本机代码,CLR就在运行时管理它,执行如释放无主内存、检查数组边界、检查参数类型和管理异常之类的任务,

由此产生几个重要术语:

1.托管代码:为.net框架编写的代码,需要CLR;

2.非托管代码:不在CLR管理下运行的代码,如Win32 C/C++ DLL;

3.托管资源:由CLR管理分配和释放的资源,即从CLR里new出来的对象;

4.非托管资源:不受CLR管理的对象,如windows内核对象,或者文件、网络连接、数据库连接、套接字、COM对象等。

不同语言编写的程序的完整编译时和运行时过程概览:


三 关于CLI:

CLI(Common Language Infrastructure,公共语言基础结构)是一组标准,它把所有.net框架的组件连接成一个内聚的、一致的系统。

C#-1 .Net框架的更多相关文章

  1. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. 旺财速啃H5框架之Bootstrap(五)

    在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...

  4. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  5. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  6. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  7. 旺财速啃H5框架之Bootstrap(四)

    上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

  8. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  9. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

  10. [虾扯蛋] android界面框架-Window

    从纯sdk及framwork的角度看,android中界面框架相关的类型有:Window,WindowManager,View等.下面就以这几个类为出发点来概览下安卓开发的"界面架构&quo ...

随机推荐

  1. 谷歌的SRE和开发是如何合作的

    本文是一篇比较有价值的.介绍SRE的文章.国内的所谓SRE职责其实并不明确,大部分其实还是干普通运维的事.但文中介绍的谷歌的运作方式起点还是相对比较高的,无论对SRE.对开发,甚至对公司都有很高的要求 ...

  2. 聊聊 C++ 中的几种智能指针 (下)

    一:背景 上一篇我们聊到了C++ 的 auto_ptr ,有朋友说已经在 C++ 17 中被弃用了,感谢朋友提醒,今天我们来聊一下 C++ 11 中引入的几个智能指针. unique_ptr shar ...

  3. mysql主从复制学习笔记

    一.musql主从复制原理 MySQL之间数据复制的基础是二进制日志文件(binary log file).一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以&q ...

  4. 解决线程安全问题_同步方法和解决线程安全问题_Lock锁

    解决线程安全问题_同步方法 package com.yang.Test.ThreadStudy; import lombok.SneakyThrows; /** * 卖票案例出现了线程安全的问题 * ...

  5. System类的常用方法

    java.lang...System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long current ...

  6. UE4.25 Slate源码解读

    概述 Slate系统是UE的一套UI解决方案,UMG系统也是依赖Slate系统实现的. 问题: Slate系统是如何组织的? 控件树的父子关系是如何绑定的? Slate系统是如何渲染的? slate渲 ...

  7. vscode 个人配置 settings.json

    {     "workbench.colorTheme": "Default Dark+",     "workbench.iconTheme&quo ...

  8. Odoo4 tree视图左上角新增Button

    # 一.直接在tree根元素中新增.这种有个限制就是必须要勾选一或多条记录的时候按钮才会显示 <tree> <header> <button type="obj ...

  9. ArrayList,LinkedList

    ArrayList,LinkedList ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList 采用的将链表的数据 ...

  10. spring boot 中英文官方文档

    中文文档:http://oopsguy.com/documents/springboot-docs/1.5.4/index.html#boot-features 英文官方文档:https://docs ...