chap01 .net 基本框架介绍

  2000年,微软向全球宣布其革命性的软件和服务平台,它就是后来的Microsoft.NET,简称.NET。该平台利用以互联网为基础的计算和通讯的特点,通过先进的软件技术和众多的智能设备,提供更简单、更个性化、更有效的互联网服务。 .NET的战略目标是在任何的时候,任何地方,任何工具都能通过.NET的服务获得网络上的任何信息,享受网络带给人们的便捷与快乐。通过10年发展和时间的考验,证明它的确是一个非常好的软件开发技术和网络服务平台,值得我们很好的学习和研究。 

  .NET 就是微软的 XML(Extensible Markup Language) Web 服务平台。该平台包含广泛的产品系列,它们都是基于 XML Internet 行业标准构建,提供从开发、管理、使用到体验 XML Web 服务的每个方面。更具体地说,它正在创建新一代软件工具、服务器、XML Web 服务、客户端和 .NET 体验五个方面。

     .NET开发技术可分为两部分内容,一是应用程序得以运行的框架.NET Framework,.NET应用程序运行的平台;二是.NET的开发环境Visual Studio.NET,是一个集成开发环境IDE(Integrated Development Environment)。目前常用的是.NET Framework 3.5 Visual Studio 2008 。但最近已经有了.NET Framework 4Visual Studio 2010

  .NET框架(Framework )包含两部分内容:公共语言运行时(CLR)和基础类库(FCL)。

  类库就是存放类的库,这些类我们可以直接使用,它们封装了文件的操作、数据库操作、线程、XML解析等一系列的高级应用。我们可以使用.NET框架提供大约7000多个类来建立我们自己的应用程序。下面我们来看一下


1. .net 架构图

2. CLR(公共语言运行时)

  公共语言运行时CLRCommon Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用程序和底层操作系统之间必要的分离和协作。同时CLR也是一种多语言执行环境,支持众多的数据类型和语言特性。他管理着代码的执行,并使开发过程变得更加简单。这是一种可操控的执行环境,其功能通过编译器与其他工具共同展现。 

  为了提高平台的可靠性,以及为了达到面向事务的电子商务应用所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。按照.NET的说法,在CLR监视之下运行的程序属于“托管”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管”(unmanaged)的代码。

  CLR将监视形形色色的常见编程错误,许多年来这些错误一直是软件故障的主要根源,其中包括:访问数组元素越界,访问未分配的内存空间,由于数据体积过大而导致的内存溢出,等等。

  CLR另一个作用是它可以实现跨平台,条件是在操作系统上安装.NET Framework,安装了公共语言运行时的操作系统就可以识别和运行中间语言代码。当然,.NET里面的CLRJava里面的虚拟机JVM是不同的,Java里面的虚拟机是解释执行的,而CLR是编译执行的,即在应用程序第一次被调用时一次性编译成机器码再执行,这样做比解释执行的效率更高。 

3. 微软中间语言(MSIL)

  微软中间语MSIL(Microsoft Intermediate Language) 是一种类似Java字节码的语言,它是一种介于高级语言和机器语言之间的伪汇编语言。当用户编译一个.NET程序时,编译器将源代码翻译成MSIL代码,它是一组可以有效地转换为本机代码且独立于CPU的指令。当执行这些指令时,实时(JIT)编译器将它们转化为CPU特定的代码。由于公共语言运行时支持多种实时编译器,因此同一段MSIL代码可以被不同的编译器实时编译并运行在不同的结构上。

  从理论上来说,MSIL将消除不同语言之间难以互相调用的问题,例如,一道程序使用C#而另一部分是VB.NET,但是最后这些代码都将被转换为中间语言。这给程序员提供了极大的灵活性,他们可以选择自己熟悉的语言,并且再也不用为学习不断推出的新语言而烦恼了。 

  当程序被编译为托管代码时,编译器将源代码翻译为MSIL代码,这是一组可以有效地转换为本机代码且独立于 CPU 的指令。MSIL 包括用于加载、存储和初始化对象以及对对象调用方法的指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。要使代码可运行,必须先将 MSIL 转换为特定于 CPU 的代码,这通常是通过实时编译器来完成的。由于公共语言运行时为它支持的每种计算机结构都提供了一种或多种 JIT 编译器,因此同一组 MSIL 可以在所支持的任何结构上 的JIT 编译和运行。 

  当编译器产生 MSIL 时,它也产生元数据。元数据描述代码中的类型,包括每种类型的定义、每种类型的成员的签名、代码引用的成员和运行库在执行时使用的其他数据。MSIL 和元数据包含在一个可移植和可执行 (PE) 文件中,此文件基于并扩展过去用于可执行内容的已公布的 Microsoft PE 和公共对象文件格式 (COFF)。这种文件格式包含 MSIL 或本机代码以及元数据,使得操作系统能够识别公共语言运行库映像。文件中的元数据以及 MSIL 的存在使代码能够描述自身,这意味着不再需要类型库或接口定义语言 (IDL)。运行库在执行过程中根据需要从该文件中查找并提取元数据。


4. FCL基础类库(FCL:一组DLL程序集)

  FCL是一组DLL程序集,包含几千个类型定义, 每个类型又有多种功能。微软还在不断地生成额外的程序库,这些额外的程序库提供了更多的类型,创造出更多的功能供你使用。开发者使用这些程序集能够创建如下几类应用程序:

WEB程序

WINDOWS程序

WPF程序

工作流程序

控制台程序

 组件库: 单独的程序集,可用于前面提到的各种类型的应用程序中。

因为FCL包括成千上万个类型, 以名字空间分类展示给开发者。例如Syestem名字空间包含Object基类型,其他所有类型都可由它派生出来,此外, System名字空间包含各种基本数据类型以及格式化数据类型、产生随机数、执行各种数学函数等。所有应用程序都使用System名字空间中的类型。为了访问framwork已有的功能,你需要知道你要的功能在哪个名字空间中, 许多类型允许你定制他们的行为, 你可以从FCL类型派生出你自己的类型。面向对象的本质是.NET Framework如何提供一致的编程模式给开发者。 开发者也能很容易地创建他们自己的名字空间来包含他们自己的类型。 这些名字空间和类型无缝地合并到编程模式中, Win32编程模式想比, 这个新方法大大简化了软件开发。

FCL中的大多数名字空间的类型可以用于任何种类的应用程序, 1.1列出了一些常见的名字空间并简单地描述了其中的类型的用途。这只是众多名字空间中很小一部分例子, 请参考.NET Framework SDK文档来熟悉微软提供的逐渐增长的名字空间。 在.NET平台中运行的任何语言都使用同样的类库,统一了开发模式。现在的.NET类库几乎可以用于开发任何程序,以及使用相同的开发技巧并且程序变得非常简单。 

名字空间

内容描述

System

每个应用程序使用的所有基类型

System.Data

与数据库进行通讯和处理数据的类型

System.Collection

管理集合,如:堆栈、队列、列表等

System.Drawing

操作2-D图形和图像、打印等

System.IO

处理I/O和遍历文件夹与文件的类型

System.Net

允许网络通讯和网络协议的类型

System.Reflection

操作反射,查看元数据以及延迟绑定类型和成员类

System.Runtime.InteropServices

允许托管代码访问非托管OS平台的功能等

System.Security

用于保护数据和资源的类型

System.Text

不同编码文本处理的类型, 例如ASCII和Unicode

System.Threading

用于异步操作和同步访问资源的类型

System.Xml

处理XML架构和数据的类型

System.Web.Services

提供用于创建和操作Web服务的类

System.Web.UI

提供类和接口,为用户界面元素出现在您的 Web 应用程序中的 ASP.NET 服务器控件和页

System.Windows.Forms

提供Web窗体,创建基于Windows应用程序的类




原文地址:https://www.cnblogs.com/wangshide/p/2376239.html