既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容。
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的兼容性的。就好像有的食客习惯用筷子,有的则喜欢用叉子,像八戒就用九齿钉耙。有了CLS和CTS,各路食客就能使用自己喜欢用的餐具吃上可口的食物了。例如:把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 虚拟机类似。以公共语言运行库为目标的代码称为托管代码,不以公共语言运行库为目标的代码称为非托管代码。