关于.net的一些概念

1. C#

C#是由微软开发的基于.NET Framework的一种面向对象的广泛应用的高级编程语言。

2. .NET Framework

.NET框架(.NET Framework) 是由微软开发,一个致力于敏捷软件开发(Agile softwaredevelopment)、快速应用开发(Rapidapplication development)、平台无关性和网络透明化的软件开发平台。

3. CLR

是.NET框架的核心组件,负责管理程序的执行。

功能:

自动垃圾收集

安全和认证

通过访问BCL得到广泛的编程功能

4. BCL,FCL

基类库(BCL)就.NET Framework提供的基础类库。我们编写.NET程序时,可以调用它们。BCL提供的类库:

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

  1. 通用基础类

这些类提供了一组极为强大的工具,可以应用到许多编程任务中,比如文件操作,字符串操作、安全和加密

  1. 集合类

这些类实现了列表、字典、散列表以及位数组

  1. 线程和同步类

这些类用于创建多线程程序

  1. XML类

用于创建、读取以及操作XML文档

框架类库(FCL)是更广泛的库,例如包含:ASP.NET,WinForms,XML堆栈,ADO.NET等。你可以说FCL包括BCL。

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

5. JIT

JIT, just in time, 即时编译。在CLR中,把IL转换成机器代码的工作交给了JIT编译器。即时编译只在方法第一次被调用时发生。

6. CLI,CTS,CLS

CLS是CTS的子集,CLR是CTS的具体实现

CLI,Common Language Infrastructure, 公用语言基础, 是一组阐述了系统的架构、规则和约定的规范。

CTS, Common Type System, 公共类型系统。CTS规定了在托管代码中一定会使用的类型的特征,包括:类、结构、委托,类中的方法、字段、属性、事件等,还定义了一些约束,比如所有类型都隐式继承自System.Object类型。

CLS, Common Language Specification, 公共语言规范,必须完全符合CTS的标准,是CTS的子集。

详细说明了一个.NET兼容编程语言的规则、属性和行为,其主题包括数据类型、类结构和参数传递。

比如C#编译生成的程序集有很多类,VB编译生成的程序集也有很多类,现在VB编译需要引用C#程序集的某个类,怎么办呢?

 我们需要让C#程序集中,需要被引用的这个类符合CLS规范,.NET为我们准备了CLSCompliant特性。

[assembly:CLSCompliant(true)]
public class SomeClass
{    
}

7. IL

IL,Intermediage Language,中间语言,并不是CPU可以直接执行的本地机器语言,在转换成计算机可以识别的指令之前,还要进行一个被称为"Just in time"的二次编译过程。在.NET框架下,任何语言,比如C++,VB.NET,C#,等等,在经过各自的编译器编译之后,都会被转换成中间语言。IL还有另外的2种叫法:CIL,Common Intermediate Language;MSIL, Microsoft Intermediate Language。

8. 托管代码(managed code)和非托管代码(unmanaged code)

托管代码:为.NET框架编写的代码,需要.NET Framework运行环境

非托管代码:不在CLR控制之下运行的代码,比如win32 C/C++

9. 程序集(Assembly)

.NET语言编译器根据源代码文件生成的文件,格式dll或者exe,包括CIL,Type Metadata,Reference Metadata.

10. Assembly Manifest 程序集清单

11. 类型元数据

12. 引用元数据

13. .net core

14.Mono与Xamarin

15. .net standard

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

https://www.cnblogs.com/eshizhan/archive/2010/01/26/1657041.html

.NET学习笔记 -- 那堆名词到底是啥(CLR、CLI、CTS、CLS、IL、JIT)

https://www.cnblogs.com/xiekeli/p/4680846.html?utm_source=tuicool

通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

https://www.cnblogs.com/1996V/p/9037603.html#net1

浅谈ASP.NET框架

https://www.cnblogs.com/wangjiming/p/8201129.html

.Net跨平台和.Net Framework和mono

https://blog.csdn.net/wangligen123/article/details/86482454

.NET Framework、.NET Core、Mono、Xamarin之间关系

https://blog.csdn.net/MePlusPlus/article/details/76242330

介绍 .NET Standard

https://zhuanlan.zhihu.com/p/24267356

原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878926.html