.NET认识与理论总结

一、.NET是什么

  有些开发者觉得.NET就是一个开发工具,或一个平台、一个软件开发环境。我觉得这些认识都不完全,个人觉得,.NET应该是一个概念,是微软的一个战略与梦想。

  微软对于.NET的定义:Microsoft .NET 是 Microsoft XML Web services 平台,XML Web services 允许应用程序通过 Internet 进行通讯及共享数据,不管所采用的是哪种操作系统、设备或编程语言,Microsoft .NET 平台提供创建XML Web services 并将这些服务集成在一起。 

  通俗理解为:Microsoft .NET是微软以Web services为核心,为信息、人、系统、各种设备提供无缝连接的一组软件产品、技术或服务。我们一般所说的.NET多指.NET Framework、Visual Studio.NET及开发出的应用程序,如ASP.NET、WinForm等。.NET Framework是一个开发和执行环境,允许不同的程序设计语言和库无缝结合共同创建基于WINDOWS的应用程序,轻松的创建、管理、部署,并与其它网络系统集成。

   如下图是.NET Framework的体系结构:

上图可以了解到.NET开发框架的几个主要组成部分:

  • 整个开发框架的核心与基础是公共语言运行库(CLR)和它所提供的一组基类库(BCL);
  • 在开发技术方面,.NET提供了全新的访问数据库技术ADO.NET,以及开发技术ASP.NET、Winform;
  • 在开发语言上,.NET支持VB、VC++、C#、JS等多种语言,Visual Studio则是支持这些开发语言的开发工具。

  .NET Framework是一个与硬件无关的程序执行平台,我们使用的C、C++、Delphi语言开发的程序编译后都是硬件能识别的机器代码,而开发的.NET应用程序编译后不是机器代码,而是.NET Framework识别的中间语言代码MSIL(Microsoft Intermediate Language),这些代码不专用于任何一种操作系统,因此可以跨语言。

  程序运行时,首先由JIT(Just-In-Time)编译器通过二次编译成专用于当前操作系统和目标机器结构的本机代码,然后通过托管的CLR环境和基类库在计算机中执行,所以我们开发的 .NET应用程序必须要安装.NET Framework才能运行。

  .NET应用程序运行的经过如下:

  应用程序—(编译)—>程序集(MSIL)—(JIT编译)—>本机代码

   (1)使用.NET兼容语言(C#)开发应用程序,然后应用程序编译为中间语言(MSIL),存储在程序集中;

   (2)在执行代码时,首先必须使用JIT编译器将中间语言编译成本机代码。JIT编译器会确切的知道程序运行在什么类型的处理器上,可以利用该处理器提供的特性或特定的机器指令来优化最后的可执行代码;

  (3)在托管的CLR环境下运行本机代码。

  使用比喻加深理解:

  .NET就像中国移动整个的网络和服务运营平台,.NET Framework则是支持该平台运行的那些基础设施,开发的软件就行运行在这个平台下的各种服务,如语音通话、短信、彩信等。任何服务都需要移动网络的支持,就像我们开发的软件需要.NET Framework的支持才能运行一样。

二、.NET特性

  .NET有如下几大特性:

1、一次编译,到处运行。

  开发的应该程序编译后是一种中间代码(MSIL)的程序集,至于如何运行,是交给.NET Framework的JIT编译器来完成中间代码转变成可识别的机器代码。因此,只要.NET Framework支持的地方,应用程序就可以运行。

2、编程语言汇成一家,不分你我。

  现在编程语言多种多样,VB、C#、J#、Delphi、JAVA等。.NET Framework中设计了一个通用语言系统CLS(Common Language System),定义了很多标准的数据类型,在编译成中间语言MSIL时,各种高级语言的数据类型都被转换成CLS系统中标准的数据类型。例如,VB.NET中的Integer数据类型被转换成System.int32,C#中的int类型也被转换成System.int32,这样不同语言就可以通过CLS相互转换,就能相互调用不用语言编写的方法和类库。

3、内存自动管理,安心编程。

  CLR最大的影响就是它的内存管理功能,为应用程序提供了高性能的垃圾回收机制GC(Garbage Collector)。GC自动跟中应用程序操作的对象,对内容进行管理。

4、基类库,使开发简单。

  类是面向对象设计语言的非常重要一部分,.NET Framework中的类库提供了非常丰富的类,如字符串的处理、数据库的连接、文件访问等类,使开发变得简单。

原文地址:https://www.cnblogs.com/xbzsz/p/6791484.html