.NET Framework 包括公共语言运行库(CLR:common language runtime)和框架类库(FCL:.NET Framework Class Library)。也许好多朋友会以为这两者是平级的关系,其实不然。公共语言运行库比框架类库更接近底层,后者依赖于前者。让大家看一下下图明白了。

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

  后,看看.NET的整体结构

  到这里为止,相信大家对.NET世界里的这些概念有了一个更清晰的认识。VB.NET、VC.NET 、C#等是.NET世界里的编程语言,他们同属于一个级别,而ASP.NET、ADO.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应用程序。

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