.Net--CLS,CTS,CLI,BCL,FCL

1.什么是CLS

所以.NET专门为此参考每种语言(例如C# ,VB,F#)并找出了语言间的共性,然后定义了一组规则,开发者都遵守这个规则来编码,那么代码就能被任意.NET平台支持的语言所通用。
而与其说是规则,不如说它是一组语言互操作的标准规范,它就是公共语言规范 - Common Language Specification ,简称CLS

 CLS(公共语言规范)类型、命名、事件、属性、数组等方面对语言进行了共性的定义及规范。这些东西被提交给欧洲计算机制造联合会ECMA,称为:共同语言基础设施

于是你对其它人这样说,我总结出了一门语言很多必要的东西如两种主要类别:值类别和引用类别五个主要类型:类、接口、委托、结构、枚举我还规定了,一个类型可以包含字段、属性、方法、事件等成员,我还指定了每种类型的可见性规则和类型成员的访问规则,等等等等,只要按照我这个体系来设计语言,设计出来的语言它能够拥有很多不错的特性,比如跨语言,跨平台等,C#和VB.net之所以能够这样就是因为这两门语言的设计符合我这个体系。

2.什么是CTS

当你需要设计面向.Net的语言时所需要遵循一个体系(.Net平台下的语言都支持的一个体系)这个体系就是CTS(Common Type System 公共类型系统),它包括但不限于:

  • 建立用于跨语言执行的框架。
  • 提供面向对象的模型,支持在 .NET 实现上实现各种语言。
  • 定义处理类型时所有语言都必须遵守的一组规则(CLS)。
  • 提供包含应用程序开发中使用的基本基元数据类型(如 Boolean、Byte、Char 等)的库。

上文的CLS是CTS(Common Type System 公共类型系统)这个体系中的子集。
一个编程语言,如果它能够支持CTS,那么我们就称它为面向.NET平台的语言。

3.什么是CLI

微软已经将CTS和.NET的一些其它组件,提交给ECMA以成为公开的标准,最后形成的标准称为CLI(Common Language Infrastructure)公共语言基础结构。
所以有的时候你见到的书籍或文章有的只提起CTS,有的只提起CLI,请不要奇怪,你可以宽泛的把他们理解成一个意思,CLI是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准。

4.什么是基础类库BCL?

当你通过VS创建一个项目后,你这个项目就已经引用好了通过.NET下的语言编写好的一些类库。比如控制台中你直接就可以用ConSole类来输出信息,或者using System.IO 即可通过File类对文件进行读取或写入操作,这些类都是微软帮你写好的,不用你自己去编写,它帮你编写了一个面向.NET的开发语言中使用的基本的功能,这部分类,我们称之为BCL(Base Class Library), 基础类库,它们大多都包含在System命名空间下

基础类库BCL包含:基本数据类型,文件操作,集合,自定义属性,格式设置,安全属性,I/O流,字符串操作,事件日志等的类型

5.什么是框架类库FCL?

有关BCL的就不在此一一类举。.NET之大,发展至今,由微软帮助开发人员编写的类库越来越多,这让我们开发人员开发更加容易。由微软开发的类库统称为:FCL(Framework Class Library.)NET框架类库,我上述所表达的BCL就是FCL中的一个基础部分,FCL中大部分类都是通过C#来编写的。

在FCL中,除了最基础的那部分BCL(基础类库-通用)之外,还包含我们常见的 如 : 用于网站开发技术的 ASP.NET类库该子类包含webform/webpage/mvc,用于桌面开发的 WPF类库、WinForm类库,用于通信交互的WCF、asp.net web api、Web Service类库等等

相关推荐

  1. .Net <% %>

    2024-07-17 15:36:02       28 阅读
  2. <span style='color:red;'>NAT</span>

    NAT

    2024-07-17 15:36:02      43 阅读
  3. U-net

    2024-07-17 15:36:02       61 阅读
  4. .NET gRPC

    2024-07-17 15:36:02       55 阅读
  5. ValueConverters.NET

    2024-07-17 15:36:02       49 阅读
  6. ASP.<span style='color:red;'>NET</span>

    ASP.NET

    2024-07-17 15:36:02      36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 15:36:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 15:36:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 15:36:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 15:36:02       69 阅读

热门阅读

  1. Python 基础——元组

    2024-07-17 15:36:02       22 阅读
  2. uniapp 手写签名实现

    2024-07-17 15:36:02       21 阅读
  3. Matcher group方法

    2024-07-17 15:36:02       22 阅读
  4. leetcode热题100.乘积最大子数组(动态规划进阶)

    2024-07-17 15:36:02       23 阅读
  5. 二叉树---二叉树的最大深度

    2024-07-17 15:36:02       20 阅读
  6. AI技术在企业招聘中的应用案例分析

    2024-07-17 15:36:02       25 阅读
  7. 土土土土土土土土圭

    2024-07-17 15:36:02       22 阅读