C#-1 .Net框架
一 .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框架的更多相关文章
- 避免重复造轮子的UI自动化测试框架开发
一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 旺财速啃H5框架之Bootstrap(五)
在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- 旺财速啃H5框架之Bootstrap(四)
上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
- [虾扯蛋] android界面框架-Window
从纯sdk及framwork的角度看,android中界面框架相关的类型有:Window,WindowManager,View等.下面就以这几个类为出发点来概览下安卓开发的"界面架构&quo ...
随机推荐
- Hadoop中HDFS 的相关进程以及工作流程图(详细流程图)
- 算法竞赛进阶指南0x33同余
定义 如果整数a,b除以正整数m的余数相同,那么a,b模m同余 . 知识点 拓展欧几里得算法 代码 #include <bits/stdc++.h> using namespace std ...
- OpenWrt之feeds.conf.default详解
目录 OpenWrt之feeds.conf.default详解 文件内容 命令解释 src-svn与src-gitsvn src-git与src-git-full src-cpy与src-link 其 ...
- 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选
常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...
- 最近公共祖先(LCA)学习笔记 | P3379 【模板】最近公共祖先(LCA)题解
研究了LCA,写篇笔记记录一下. 讲解使用例题 P3379 [模板]最近公共祖先(LCA). 什么是LCA 最近公共祖先简称 LCA(Lowest Common Ancestor).两个节点的最近公共 ...
- 【原创】Python 懂车帝口碑爬虫
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 懂车帝综合口碑 需求 操作环境 win1 ...
- .NET 扩展 官方 Logger 实现将日志保存到本地文件
.NET 项目默认情况下 日志是使用的 ILogger 接口,默认提供一下四种日志记录程序: 控制台 调试 EventSource EventLog 这四种记录程序都是默认包含在 .NET 运行时库中 ...
- CF360E Levko and Game(贪心)
这题贪心停水的,找\(dis1<=dis2\)的点往歇斯底里地砍,砍到没法砍就是. 写博客是为了记录下遇到的神奇bug #include <iostream> #include &l ...
- Ceph 块存储 创建的image 映射成块设备
将创建的volume1映射成块设备 [root@mysql-server ceph]# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD ima ...
- 利用 Word 表格对文字、图文进行排版
在以前,Web 前端工程师利用 <table /> 元素对网页布局进行排版,但是如今却不推荐此元素排版了,而是改用 <div /> 元素和 CSS 弹性布局(或网格布局)对网页 ...