.NET ——FCL、BCL、CTS、CLS

FCL与BCL✅

目录

BCL,基础类库(Base Class Library

  1. BCL是一个公共编程框架,称为基类库,所有语言的开发者都能利用它。

  2. 是CLI(Common Language Infrastructure,公共语言基础结构)的规范之一 CLI内容参考👉.NET 与CLI

    主要包括:执行网络操作,执行I/O操作,安全管理,文本操作,数据库操作,XML操作,与事件日志交互,跟踪和一些诊断操作,使用非托管代码,创建与调用动态代码等,粒度相对较小,为所有框架提供基础支持。

FCL,框架类库(Framework Class Library

  1. .NET Framework 的主要组件FCL(.NET Framework 类库)和CLR(公共语言运行库)

    在这里插入图片描述

  2. FCL (Framework Class Library)FCL是一个全面的类库,是生成.NET Framework 应用程序、组件和控件的基础

    FCL提供了大粒度的编程框架,它是针对不同应用设计的框架 ,FCL大部分实现都引用了BCL

    例如我们常说的开发框架:ASP.NET、MVC、WCF和WPF等等,提供了针对不同层面的编程框架 。

  3. CLR是.NET Framework 核心组件,负责管理程序的执行。主要由公共语言规范(CLS)和通用类型系统(CTS)两部分组成。

    1. 通用类型系统(CTS)

      CTS是一种类型系统和语言规范,它能够确保CLR能够识别和处理的类型,所有.NET开发语言中的类型,无论时VS.NET类型还是C#.NET类型最终都会被编译成CLR能够识别的CTS类型,因此CTS是.NET平台类型的抽象。例如VB.NET中的integer类型和C#中的int类型都编译成CTS的System.Int32类型。如果某种语言编写的程序能够在CLR上运行,并不能说明这种语言完全符合CTS的规范。例如使用C++编写的代码,部分代码并不符合CTS规范,在编译时把这部分不符合CTS的代码会被编译成原始代码本地CPU指令而非中间代码。

      1. 指定了规范来描述类型的定义和行为,CTS是.NET平台类型的抽象

      2. 确保CLR能够识别和处理的类型。以解决不同编码语言的数据类型不同的问题,实现不同语言之间数据类型的统一

        无论是VS.NET类型还是C#.NET类型最终都会被编译成CLR能够识别的CTS类型

        CIL类型C# 关键字VB.NET关键字
        System.BytebyteByte
      3. 注意:如果某种语言编写的程序能够在CLR上运行,并不能说明这种语言完全符合CTS的规范。

        例如使用C++编写的代码,部分代码并不符合CTS规范,在编译时把这部分不符合CTS的代码会被编译成原始代码本地CPU指令而非中间代码IL。

    2. 公共语言规范(CLS)

      1. CLS是CTS的一个子集,所有.NET语言都应遵循此规则才能创建与其他语言可互操作的应用程序

        1. 注意:为了使各语言可以互操作,只能使用CLS所列出的功能对象,这些功能统称为与CLS兼容的功能,它是在.NET平台上运行语言的最小规范

          在.NET框架本身提供的类库(并非所有)都是与CLS兼容的,在查看MSDN文档时,不兼容的类和方法都被特别标记为不兼容,

          例如C#中的System.UInt32就标记为”此API不兼容CLS。兼容 CLS的替代API为 Int64。
          在这里插入图片描述

      2. 定义了不同语言之间必须遵守的共同标准

        包括函数调用方式、参数调用方式、数据类型和异常处理方式。

  • FCL由命名空间组成。每个命名空间都包含可在程序中应用的类、结构、委托和接口等.

    从功能上看,可以将FCL框架类库划分为以下几层:

    最内一层,由BCL的大部分组成,主要作用是对.NET框架,.NET运行时以及CIL语言本身进行支持,例如基元类型,集合类型,线程处理,应用程序域,运行时,安全性,互操作等.

    中间一层,包含了对操作系统功能的封装,例如文件系统,网络连接,图形图像,XML操作等.

    最外一层,包含各种类型的应用程序,例如Window Forms,Asp.NET,WPF,WCF,WF等.

    • 部分常规的FCL命名空间
      命名空间内容说明
      System包含每个应用程序都要用到的所有基本类型
      System.Data包含用于和数据库通信以及处理数据的类型
      System.IO包含用于执行流I/O以及浏览目录/文件的类型
      System.Net包含进行低级网络通信,并与一些常用的Internet协议协作的类型
      System.Runtime.InteropService包含允许托管代码访问非托管操作系统平台功能(比如COM组件以及Win32或定制DLL中的函数)的类型
      System.Security包含用于保护数据和资源的类型
      System.Text包含处理各种编码(比如ASCII和Unicode)文本类型
      System.Threading包含用于异步操作和同步资源访问的类型
      System.Xml包含用于处理XML架构(XML Schema)和数据的类型

【🥰参考原文链接】

  1. https://blog.csdn.net/qq_45767140/article/details/118738596
  2. “菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL) - eshizhan - 博客园 (cnblogs.com)
  3. (19条消息) BCL(基本类库)和FCL(框架类库)_庸人自扰Eam的博客-CSDN博客
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值