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

本文将 .NET Framework 比喻为一道佳肴,详细介绍了其构成元素,包括CLR、FCL、BCL等核心组件,以及它们之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容。

.NET Framework

  最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基础。.NET Framework不是凭空出来的,实际上API,COM+,和一些相关驱动依然是它的基石。.NET Framework只不过是对这些前辈们进行了系统的封装和扩充,在这个过程中,吸取了Java框架的很多经验。关于Win32 API与.NET Framework API的对应关系,可以参考Microsoft Win32 to Microsoft .NET Framework API Map

  菜谱:除了蓝色部分以外,其他均为.NET Framework的主体。它是基于通用语言基础架构(Common Language Infrastructure,CLI)。它就像一本江湖上失传已久的菜谱。

  厨师通用语言运行平台(Common Language Runtime,CLR),是CLI架构在Windows平台的实现。简单理解就是CLR这个厨师,让CLI这本菜谱发挥了真正作用。

下面我们来尝尝这些佳肴:

  食物类库(Framework Class Library,FCL),所有在.NET能够使用的类库。分为两部分,一部分为原料,另一部分为成品菜

  • 原料基类库Base Class Library(BCL) ,顾名思义,其中包含一些基础的类,如:IO,String,Net等等。它们是做菜所必需的原料,当然也可以直接吃。
  • 成品菜FCL中的其他类。这些类库基本都在引用组合BCL,并在这些类库的基础上做进一步扩充。如:ADO.NET,ASP.NET,Windows Forms等,它们使我们编写程序更加方便、专一。

  餐具公共语言规范Common Language Specification (CLS) 和公共类型系统Common Type System (CTS) ,是CLI的一部分内容,它们的目的是保证各种语言与.NET Framework的兼容性的。就好像有的食客习惯用筷子,有的则喜欢用叉子,像八戒就用九齿钉耙。有了CLSCTS,各路食客就能使用自己喜欢用的餐具吃上可口的食物了。例如:把C#中的int和VB中的Integer统一映射到System.Int32。

  食客:各种语言,C#,VB等等。

  至于食客们是怎么吃这些东西的,可以参考深入探索.NET框架内部了解CLR如何创建运行时对象,这篇文章详细的解释了,.NET是如何运行的,涉及一些底层的东西,大家了解就行,不必深究。

  好了,这是我自己对.NET Framework的一点理解,可能比喻有不恰当的地方,甚至有概念性的错误,希望大家指出来。我毕竟是初学者,大家的批评会帮助我成长。谢谢!

原博客地址:http://www.cnblogs.com/eshizhan/archive/2010/01/26/1657041.html

转载于:https://www.cnblogs.com/makesense/p/6237939.html

参考资源链接:[.NET FrameworkC#入门概览](https://wenku.csdn.net/doc/48wfxdb2y9?utm_source=wenku_answer2doc_content).NET Framework中,CLR、JIT、CTSCLS是实现语言互操作性和高效执行的关键组件。CLR作为.NET Framework的运行时环境,负责管理代码的执行,包括内存分配、垃圾回收、异常处理和类型安全等。它提供了在执行时检查代码的机制,以确保代码的安全性和稳定性。当一个.NET程序被运行时,CLR会启动,并且始终保持活动状态直到应用程序结束。 JIT编译器是CLR的一部分,它的工作是将MSIL(Microsoft中间语言)转换为特定于处理器的机器码。MSIL是一种中间代码形式,它在编译C#或其他.NET语言源代码时生成。这种设计允许.NET程序先以平台无关的形式存在,然后在运行时转换成高效的本地代码,这种动态编译的方法使得.NET程序可以利用JIT编译器进行优化。 CTS(公共类型系统)定义了一套类型和规则的集合,以确保不同.NET语言编写的代码可以相互操作。CTS保证了.NET平台上各种语言编写的类型可以在运行时互操作,这意味着一个C#对象可以被***代码直接使用,反之亦然。 CLS(通用语言规范)是一组规则,这些规则确定了为了在.NET环境下被广泛使用的语言所必须遵守的标准。它保证了所有符合CLS.NET语言编写的组件可以被其他任何一种符合CLS.NET语言访问和使用。 MSIL在这一过程中充当了桥梁的作用。当源代码被编译器编译时,它首先被转换为MSIL,这个过程不依赖于特定的处理器或操作系统。然后,当应用程序运行时,JIT编译器将MSIL编译为机器代码,以在当前运行的平台上执行。MSIL的存在使得.NET程序可以在不同的硬件和操作系统上以相同的效率运行,同时也使得程序能够被优化以适应特定的执行环境。 通过这些组件的协同工作,.NET Framework提供了一个统一的执行环境,不仅保证了不同类型程序的互操作性,也允许开发者利用.NET Framework构建的应用程序在不同的平台上都能获得一致的运行体验。如果你希望进一步学习.NET Framework的这些核心概念,可以参考《.NET FrameworkC#入门概览》。这份资源将为你提供.NET Framework结构和核心组件的全面介绍,以及C#编程的基础知识。 参考资源链接:[.NET FrameworkC#入门概览](https://wenku.csdn.net/doc/48wfxdb2y9?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值