一 .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. Hadoop中HDFS 的相关进程以及工作流程图(详细流程图)

  2. 算法竞赛进阶指南0x33同余

    定义 如果整数a,b除以正整数m的余数相同,那么a,b模m同余 . 知识点 拓展欧几里得算法 代码 #include <bits/stdc++.h> using namespace std ...

  3. OpenWrt之feeds.conf.default详解

    目录 OpenWrt之feeds.conf.default详解 文件内容 命令解释 src-svn与src-gitsvn src-git与src-git-full src-cpy与src-link 其 ...

  4. 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选

    常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...

  5. 最近公共祖先(LCA)学习笔记 | P3379 【模板】最近公共祖先(LCA)题解

    研究了LCA,写篇笔记记录一下. 讲解使用例题 P3379 [模板]最近公共祖先(LCA). 什么是LCA 最近公共祖先简称 LCA(Lowest Common Ancestor).两个节点的最近公共 ...

  6. 【原创】Python 懂车帝口碑爬虫

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 懂车帝综合口碑 需求 操作环境 win1 ...

  7. .NET 扩展 官方 Logger 实现将日志保存到本地文件

    .NET 项目默认情况下 日志是使用的 ILogger 接口,默认提供一下四种日志记录程序: 控制台 调试 EventSource EventLog 这四种记录程序都是默认包含在 .NET 运行时库中 ...

  8. CF360E Levko and Game(贪心)

    这题贪心停水的,找\(dis1<=dis2\)的点往歇斯底里地砍,砍到没法砍就是. 写博客是为了记录下遇到的神奇bug #include <iostream> #include &l ...

  9. Ceph 块存储 创建的image 映射成块设备

    将创建的volume1映射成块设备 [root@mysql-server ceph]# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD ima ...

  10. 利用 Word 表格对文字、图文进行排版

    在以前,Web 前端工程师利用 <table /> 元素对网页布局进行排版,但是如今却不推荐此元素排版了,而是改用 <div /> 元素和 CSS 弹性布局(或网格布局)对网页 ...