CIL (Common Intermediate Language) 公共中间语言

CIL最初是随着.NET由微软一起发布的,之前也叫MSIL(Microsoft Intermediate Language),后来进行了标准化被称作CIL,也会简写为IL

CBL (Base Class Library) 基类库

包含的都是最基本的类型,其本身已经与CIL语言融为一体,为CIL语言提供基础的编程支持。
该类库已经成为了CLI标准的一部分
 FCL的一个子集

FCL (Framework Class Library) 框架类库

最内一层:由BCL的大部分组成,主要作用是对.NET框架,.NET运行时及CIL语言本身进行支持,例如基元类型,集合类型,线程处理,应用程序域,运行时,安全性,互操作等。
中间一层:包含了对操作系统功能的封装,例如文件系统,网络连接,图形图像,XML操作等。
最外一层:包含各种类型的应用程序,例如Windows Forms, Asp.NET , WPF, WCF , WF等。

CTS (Common Type System) 公共类型系统

如果要开发一套新语言,这种语言和C#或VB.NET一样,在编译后能生成CIL代码,也可以在.NET环境下运行。要开发的新语言相当于CIL的高级语言版本,所以
要做什么并不是由新语言决定的,而是由CIL来决定的。因此,需要一套CIL的定义,规则或标准。这套规则定义了我们的语言可以做什么,不可以做什么,具有
哪些特性。这套规则就称作CTS(Common Type System, 公共类型系统)。
     C#和VB.NET不过是微软自己开发的一套符合了CTS的语言,实际上还有很多的组织或团体,也开发了这样的语言,比如Delphi.NET , FORTRAN等。
     CTS规定了可以在语言中定义诸如类,结构,委托等类型,这些规定定义了语言中更高层次的内容,我们才可以去定义类类型(Class Type)或者结构类型(Struct Type)等。
     CTS规范了类型中可以包含字段(field),属性(property),方法(method),事件(event)等。
     CTS规定了各种访问属性,比如Private,Public,Family(C#中为Protected),Assembly(C#中为internal),Family and assembly(C#中没有提供实现),Family or assembly(C#中为protected internal)。
    CTS还定义了一些约束,例如,所以类型都隐式地继承自System.Object类型,所有类型都只能继承自一个基类。
  (众所周知,传统C++是可以继承自多个基类的。为了让熟悉C++语言的开发者也能在.NET框架上开发应用程序,微软推出了面向.NET的C++/CLI语言(也叫托管C++)),它就是符合CTS的C++
改版语言,为了满足CTS规范,它被限制了只能继承自一个基类。

特别说明:
      1》C#并没有提供Family and assembly的实现,C#中也没有全局方法(Global Method)。换言之,C#只实现了CTS的部分功能。也就是说CTS规范了语言能够实现的所有能力,但是符合CTS规范的具体语言不一定要实现CTS规范所定义的全部功能。
    2》C++/CLI又被约束为只能继承自一个基类,换言之,C++中的部分功能被删除了。就是说,任何语言要符合CTS,其中与CTS不兼容的部分都要被舍弃。

显然,由于CIL是.NET运行时所能理解的语言,因此它实现了CTS的全部功能。虽然它是一种低级语言,但是实际上,它所具有的功能更加完整。

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

为了解决面向.NET的各个语言之间的相互引用,各个语言希望被引用的部分而要遵循的一套标准(语言特性)。 对于某个语言只要它公开的部分能够满足这些规范,就能被其他语言的程序集所引用。

tops:
语言特性:是否区分大小写,标识符的命名规则如何、可以使用的基本类型有哪些、构造函数的调用方式(是否会调用基类构造函数),支持的访问修饰符等。
.NET提供了一个特性CLSCompliant用于在编译时检测程序集是否符合CLS 类名加上特性[assembly:CLSCompliant(true)]

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

.NET框架核心 还有一种叫法,即VES(Virtual Execution System,虚拟执行系统)。CLR是.NET程序集的运行环境,有点类似Java虚拟机
由于CLR本身用于管理托管代码,因此它是由非托管代码编写的,并不是一个包含了托管代码的程序集,也不能使用IL DASM进行查看

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

CLI是一个国际标准,由ECMA和ISO进行了标准化。它只是一个概念和汇总。
CLI包括:CIL,CTS,CLS,VES,元数据,基础框架。

TIPS: CLI是一个标准,而.NET框架是这个标准的具体实现。在CLI中,并没有CLR的概念,只有VES,而CLR就是.NET框架中VES的具体实现。
.NET框架是CLI标准在Windows平台上的具体实现。
Mono Project是CLI标准的另一个实现,Mono Project的目标就是将.NET框架多平台化

摘抄自张子阳《NET之美》

.NET框架中系列专业技术术语和缩写的更多相关文章

  1. Spring Security框架中踢人下线技术探索

    1.背景 在某次项目的开发中,使用到了Spring Security权限框架进行后端权限开发的权限校验,底层集成Spring Session组件,非常方便的集成Redis进行分布式Session的会话 ...

  2. spring框架中的aop技术

    1. 什么是AOP, 面向切面编程 AOP为Aspect Oriented Programming的缩写, 意为:面向切面编程,主要是使各部分之间的耦合度降低, 提高程序的可重用性, 同时提高了开发的 ...

  3. Spring框架中的AOP技术----配置文件方式

    1.AOP概述 AOP技术即Aspect Oriented Programming的缩写,译为面向切面编程.AOP是OOP的一种延续,利用AOP技术可以对业务逻辑的各个部分进行隔离,从使得业务逻辑各部 ...

  4. Spring框架中的AOP技术----注解方式

    利用AOP技术注解的方式对功能进行增强 CustomerDao接口 package com.alphajuns.demo1; public interface CustomerDao { public ...

  5. tp中使用分页技术

    1 public function showList() { $m_ld = D ( 'guangxi_ld' ); $page = I ( 'get.p', 1 ); // 在配置中获取分页值 $p ...

  6. spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)

    java-websocket该建筑是easy.儿童无用的框架可以在这里下载主线和个人教学好java-websocket计划: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...

  7. Spring框架学习05——AOP相关术语详解

    1.Spring AOP 的基本概述 AOP(Aspect Oriented Programing)面向切面编程,AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理.安全检查 ...

  8. AF(操作者框架)系列(2)-在Actor框架中派生Actor核心(命令模式)

    为了能够提高程序的复用性,我们准备用Actor Framework框架,来演示其满足了这个需求(本章及后面的内容,需要有OOP的基础知识). 首先,简述一下ActorFramework的运行过程: 在 ...

  9. AF(操作者框架)系列(1)-LabVIEW中的模块化应用概述

    一.引子 在前面对LabVIEW介绍的文章中,关于框架开发的内容涉及很少.为了讲解操作者框架(Actor Framework)的优缺点,也只是拿出来QDSM(Queue-Driven State Ma ...

随机推荐

  1. WPF入门(三)->几何图形之矩形(RectangleGeometry)

    原文:WPF入门(三)->几何图形之矩形(RectangleGeometry) 我们可以使用RectangleGeometry来绘制一个矩形或者正方形 RectangleGeometry 类:描 ...

  2. 基于go语言的心跳响应

    我们在使用tcp ip 通讯的时候,都需要使用心跳机制来判断服务器与客户端的连接状态,如果服务器的心跳超时等,会做出重新连接等机制, 基于这种问题,我今天给大家推荐了一个基于go语言的心跳响应机制,废 ...

  3. 允许svn服务与WINDOWS自己主动启动

    曾经的svnserve要想成为windows服务,必须依赖于svnservice或其它工具. 从Subversion1.4開始,Subversion本身就集成了Windows服务的工具. 将svn设置 ...

  4. VS2010中新控件的编程------颜色按钮类和颜色对话框

    (1)      颜色按钮类和颜色对话框 1) 颜色对话框 MFC提供了颜色对话框类CMFCColorDialog进行颜色的选择,系统可以利用DoModal()调用,然后选择相应的颜色. CMFCCo ...

  5. Method and apparatus for training a memory signal via an error signal of a memory

    Described herein is a method and an apparatus for training a memory signal via an error signal of a ...

  6. Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

    PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...

  7. DDD实战6 单元测试

    1.在Products解决方案文件夹下面新建一个项目 一个单元测试项目 Product.Tests.

  8. Python算法(含源代码下载)

    关键字:Python Algorithms Python算法  Mastering Basic Algorithms in the Python Language 使用Python语言掌握基本算法 P ...

  9. Python实例讲解 -- 获取本地时间日期(日期计算)

    1. 显示当前日期: print time.strftime('%Y-%m-%d %A %X %Z',time.localtime(time.time())) 或者 你也可以用: print list ...

  10. Ant—使用Ant构建一个简单的Java工程(两)

    博客<Ant-使用Ant构建一个简单的Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant: 上面样例须要运行多条ant命令才干运行Test类中的 ...