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

.NET Framework是什么 - 图1

1. 比喻理解  

最下层蓝色部分是.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是如何运行的,涉及一些底层的东西,大家了解就行,不必深究。

2. 具体介绍:

下面从上而下详细介绍 .NET Framework 体系结构中各部分的具体内容。

1) 编程语言

在 .NET Framework 框架中支持的编程语言包括 C#、VB、C++、J# 等, 但目前使用最多的是 C# 语言。
正是由于在 .NETFramework 中支持多种编程语言,因此 .NET Framework 也配备了对应的编译器。

2) CLS

CLS(Common Language Specification, 公共语言运行规范)定义了一组规则,即可以通过不同的编程语言(C#、VB、J# 等)来创建 Windows 应用程序、ASP.NET 网站程序以及在 .NET Framework 中所有支持的程序。

3) .NET Framework 类库(Framework Class Library, FCL)

在 FCL 中包括 Windows Forms (Windows 窗体程序)、ASP.NET(网站程序)、WPF(Windows 的界面程序的框架)、 WCF(Windows 平台上的工作流程序)等程序所用到的类库文件。

4) CLR

CLR 是 .NET Framework 的基础。用户可以将 CLR 看作一个在执行时管理代码的代码,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格类型安全以及可提高安全性和可靠性的管理。
它与 Java 虚拟机类似。以公共语言运行库为目标的代码称为托管代码,不以公共语言运行库为目标的代码称为非托管代码。

5) OS

操作系统(Operating System, OS)在目前的 .NET Framework 中仅支持在 Windows 上使用,在后续的版本中将支持在 Linux 和 Mac 操作系统上使用。