.NET框架程序设计——体系结构

谈到.NET,相信对于大多数初学者而言,都会感觉比较乱、比较迷茫,什么是ASP.NET、ADO.NET、VB.NET、VC.NET和.NET Framework 等等概念,搞的我们晕头转向的,他们之间到底是什么关系呢,为何如此相似呢?我们脑子里出现了一堆一堆的问号。下面说一下我自己的理解,不正确的地方还望大家多多指教。

 

首先说一下.NET

.NET是微软的新一代技术平台,代表的是微软的一整套战略,是一整套在Internet上能够无缝连接和沟通的软件技术、工具、产品和服务的总和。它为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。

看了上面的定义,估计大家都有扁我一顿的冲动了。上面那样有点太宏观了,应该不是大家希望得到的结果。那么,我还是从技术的角度说吧。让我们看看.NET 的组成。大家先看一张图片。

.NET框架程序设计——体系结构_第1张图片

.NET开发平台包括:.NET框架和.NET开发工具等组成部分。其中.NET框架(Framework)是整个开发平台的基础,它包括公共语言运行时CLR(Common Language Runtime)和框架类库FCL(Framework ClassLibrary)。.NET开发工具VisualStudio.NET集成开发环境和.NET编程语言。而我们常说的VB.NetVC.NetC#F#等,都属于.NET编程语言。

 

下面说一下.NETFramework 的组成

.NET框架程序设计——体系结构_第2张图片



  CLS: Common Language Specification 公共语言规范                                                                                                                                                                    

 CTS:Common Type System 通用类型系统                                                                                                                                                   

CLI:Common Language Infrastructure 通用语言基础结构                                                                                                                            

                                                                                                                       

CIL:Common Intermediate Language 通用中间语言                                                                                                                                    

                                                                                                                                                                                       


 

.NET框架程序设计——体系结构_第3张图片

我们自己编写的程序,如果没有使用FCL中的组件的话,那么,在.NET的世界里,我们编写的程序和FCL中组件的地位是一样的,属于同一层,但都在CLR之上。

 

最后,看看.NET的整体结构

.NET框架程序设计——体系结构_第4张图片

到这里为止,相信大家对.NET世界里的这些概念有了一个更清晰的认识。VB.NETVC.NET C#等是.NET世界里的编程语言,他们同属于一个级别,而ASP.NETADO.NET是微软为我们封装好的,位于.NET Framework 框架类库中的一些组件,它们不是编程语言,而是一种技术。通俗点说,它们是微软为我们写好的dll(有点片面了),与我们自己编写的dll没有本质的区别。也许有人会问了,我们经常听到vb应用程序、c应用程序、c++应用程序、ASP.NET应用程序,怎么前几类都是编程语言,asp.net就不是了呢?我的理解是,这只是名字的问题,不能直接推断出asp.net也是一种语言,之所以我们叫ASP.NET应用程序,是因为无论我们是用vb.net,还是用C#编写的应用程序,只要我们运用了asp.net技术,那么就可以称之为asp.net应用程序。就跟ado.net编程一样,我们在程序中运用了ado.net技术,我们就称其为ado.net编程,难道你也说ado.net是一种编程语言?所以,asp.net应用程序是对一类应用程序的一个统称。当然,并不是.NET平台上的应用程序都是ASP.NET应用程序,比如我们用vb.net编写的WinForms应用程序,他就不能说是ASP.NET应用程序。我们可以这样认为,在.NET平台上开发的web应用程序称为Asp.net应用程序。

 

以上就是我的一些理解,跟大家理解有出入的,希望大家留下你们的想法,大家一起探讨,一起进步。



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

.NET框架程序设计——体系结构_第5张图片

 

  最下层蓝色部分是.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的一点理解,可能比喻有不恰当的地方,甚至有概念性的错误,希望大家指出来。我毕竟是初学者,大家的批评会帮助我成长。谢谢!




你可能感兴趣的:(.Net编程)