到底什么是.NET?

​.NET 概念比较庞大,本文只讨论基础知识,只用简单语言描述。

我们是NET程序员,但是我们有没有思考过到底什么是.NET ?

官方定义 .NET是微软推出来的一个致力于敏捷开发的软件框架。

 大概2000年年左右,微软推出了.NET 标准规范,既然有了标准就等于开发时候定义接口一样,需要东西去实现它。.NET Framework  就是 .NET 的具体实现。

可以这么认为 .NET一种优秀的设计规范和平台标准。

 

下面我们来说说什么是 .NET Framework?

官方定义 .NET Framework  是 Windows 的托管执行环境,可为其运行的应用提供各种服务。

.NET Framework 有两个主要组件:  

1. .NET 公共语言运行时 (Common Language Runtime,CLR)

CLR核心功能:内存管理,程序集加载,安全性,异常处理,和线程同步,CLR像一个管家一样,管理着程序代码的执行,为程序提供一个运行环境。被CLR托管的代码就叫托管代码。

       要想了解CLR机制,就要知道我们写的C#代码经过VS 编译之后变成了什么?       

左边的图是将我们编写的C#源代码编译成托管模块,右边图是托管模块的组成部分,这里我们只关注IL代码,其他的不用关注。C#代码经过编译器生成的并不是最终的CUP指令,而是一个中间语言IL代码,也就是托管代码,CLR操作的就是IL代码,最终由CLR将IL编译成计算机可以认识的Cpu指令。我们应该知道程序运行时候需要占用计算机的内存,C++时代的的程序员是需要自己手动操作管理内存的,需要自己分配和释放内存。但是我们.NET程序员是不需要进行这个操作的。这是因为CLR帮我们自动做分配内存和释放内存的这个操作了。这个操作对于NET开发者来说是透明的,这就是文章的前面所说CLR的主要功能内存管理。由CLR管理释放的内存空间叫做托管堆。在托管堆上的代码称之为安全代码也叫托管代码,反之不在托管堆上的代码就叫非托管代码,非托管代码有可能造成内存泄漏。

CLR是很复杂的一个东西。本文不做过多的讨论,只是对其概念进行简单的讲解。

2.  Framework 类库 

.NET Framework类库应该比较好理解,类似我们自己封装工具类一样的概念。Framework 类库 (Framework Class Library) 简称 FCL,FCL 里面定义了数千个类型供我们用。利用这些类型我们可以开发各种类型的应用程序 webService,MVC,Windows Forms ,WPF,Windows 服务等。所以要想学好.NET的,虽然不需要你都掌握整个.NET类库。这也不现实,但是也要尽可能掌握常用的类型。

总结

.NET Framework是.NET平台标准的主要的实现,实现的不仅仅有.NET Framework还有.NET Core和mono。

.NET Framework包含CLR和 FCL。

CLR为.NET程序提供一个运行环境并对其进行托管。

FCL Framework类库为.NET程序员提供了大量丰富的基础类型供其使用。封装了一些基础的操作,为了.NET程序员的开发提供了便利。

 ps:文章乃个人学习笔记。大神勿喷。

posted @ 2020-01-01 17:56  菜鸟公猿  阅读(2705)  评论(12编辑  收藏  举报