So  The First Is CLR

CLR的全程是Common Language Runtime 公共语言运行时

可以把他理解为包含运行.net程序的引擎 和 一堆符合公共语言基础(CLI)的类库的集合.它是一个规范的实现,我们开发的大多数.net程序都是基于CLR的类库实现 并运行在CLR的运行引擎之上。通常所说的.NET框架 就是CLR

CLI (Common Language Infrastructure) 公共语言基础

是Microsoft想ECMA提交的一份语言和数据格式规范。CLR是目前为止 唯一一个CLI的实现版本

CTS (Common Type System) 通用类型系统

Microsoft提交的CLI规范中,包括了CTS CIL(公共中间语言) 底部文件格式  元数据格式等。CTS定义了一个能够在CLR上运行的语言规范。

Tips:元数据

元数据是一种二进制信息,用以对存储在公共语言运行库的可执行文件(PE)或存储在内存中的程序进行描述。存储程序集的说明 类型的说明以及属性

CLS (Common Language Specification)公共语言规范

CLS是CTS的一个子集,定义了希望编写能够在.net平台上运行的程序的语言所需符合的最小规范。正是因为.net允许由不同语言编写的程序一起执行,所以有了CLS来避免不同语言特性带来的错误。它是CLI的一部分内容,目的是保证各种语言与.NET Framework的兼容性

CLR是.NET Framework的核心,而CTS和CLS是CLR的核心。任何编程语言,如果想要在.NET CLR上执行,就必需提供一个编译器,将此语言的程序编译成.NET CLR所认识的metadata以及IL,符合CTS的规定。并非所有的语言都能和C#一样符合CTS的规范,毕竟许多语言出现在先,CTS出现在后,所以有一些旧的语言未能符合CTS的规定。

CLR是CLI的实现,包含了.NET运行引擎和符合CLI的类库

CTS包含在CLI规范中,定义了一个可以在CLR上运行的类型规范

CLS是CTS的子集,定义了所有面向.NET的程序所需符合的最小规范集。

tips:

FCL  Framework Class Library (基类库)

   BCL  Base Class Library  (框架类库)

浅谈CLR CTS CLS。。。的更多相关文章

  1. “菜”鸟理解.NET Framework(CLI,CLR,CTS,CLS,BCL,FCL)

    既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容. 最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基 ...

  2. 浅谈CLR

    1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”.CLR的核心功能(比如内存管理.程序集加载.安全性.异常处理和线程同步 ...

  3. 1.浅谈CLR

    1.什么是CLR CLR(Common Language Runtime)公共语言远行时,是一个可由多种编程语言使用的“远行时”.CLR的核心功能(比如内存管理.程序集加载.安全性.异常处理和线程同步 ...

  4. CLR、CLS、CTS概述

    在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么以及它们之间的关系是怎样的呢?任何编程语言,如果想要在.NET CLR上执行,就必需提供一个编译器,将此语言的程序编译成.N ...

  5. 浅谈线程池(上):线程池的作用及CLR线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-1-the-goal-and-the-clr-thread-pool.html 线程池是一个重要的概念. ...

  6. 什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT

    什么是.NET? 起源:比尔盖茨在2000年的Professional Developers Conference介绍了一个崭新的平台叫作Next Generation Windows Service ...

  7. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  8. 浅谈 Linux 内核无线子系统

    浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...

  9. 浅谈线程池(中):独立线程池的作用及IO线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-2-dedicate-pool-and-io-pool.html 在上一篇文章中,我们简单讨论了线程池的 ...

随机推荐

  1. [LeetCode] Possible Bipartition 可能的二分图

    Given a set of N people (numbered 1, 2, ..., N), we would like to split everyone into two groups of  ...

  2. Logstash导入数据到ElasticSearch

    一:在Windows环境 1 下载解压Logstash的压缩包 2 在Logstash的压缩包中安装Logstash-jdbc-input插件: 在Bin命令行下运行命令: .\logstash-pl ...

  3. Katalon Studio之swagger中的API导入

    约束条件: swagger中一定要在注解@ApiOperation中设置nickname的唯一值,例如: @ApiOperation(value="新增用户",notes=&quo ...

  4. R语言读取EXCEL文件的各种方法

    路径问题 原始文件路径C:\Users\air\Desktop\1.txt R中有两种方法读取该路径 C:\\Users\\air\\Desktop\\1.txt C:/Users/air/Deskt ...

  5. Three.js学习笔记05

    场景相关函数和属性 下面的代码中应用到了所有以上的函数及属性: <!DOCTYPE html> <html lang="en"> <head> ...

  6. ArrayList源码理解

    ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Col ...

  7. JS实现数组去重方法大总结

    js数组根据对象中的元素去重: var arr2 = [ { name: "name1", num: "1" }, { name: "name2&qu ...

  8. [Swift]LeetCode168. Excel表列名称 | Excel Sheet Column Title

    Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...

  9. [Swift]LeetCode648. 单词替换 | Replace Words

    In English, we have a concept called root, which can be followed by some other words to form another ...

  10. Java第三次上机随笔

    就记录一下新的收获吧~ 1.定点数(BigDecimal) 先区分一下浮点数和定点数: 浮点数(float/double):小数点可以任意浮动,称为浮点表示法 定点数(BigDecimal):一种数约 ...