当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

3.2.NETFramework框架简介

8/31/2020 9:56:04 PM 人评论

3.2.NETFramework框架简介

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第3章\.NET Framework框架介绍.mp4

.NET Framework提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。.NET Framework是微软重新树立自己在软件业界的信心和地位的崭新战略和概念。本节将详细介绍.NET Framework框架的基本知识。

公共语言运行库的功能是通过编辑器和工具公开,开发人员可以编写利用此托管执行环境的代码。使用基于公共语言运行库的语言编译器开发的代码称为托管代码。托管代码具有许多优点,例如,跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。

如果要使公共语言运行库能够向托管代码提供服务,语言编译器必须生成一些元数据来描述代码中的类型、成员和引用。元数据与代码一起存储;每个可加载的公共语言运行库可移植执行(PE)文件都包含元数据。公共语言运行库使用元数据来完成多种任务,例如查找和加载类,在内存中安排实例,解析方法调用,生成本机代码,强制安全性,以及设置运行时上下文边界。

公共语言运行库自动处理对象布局并管理对象引用,当不再使用对象时翻译它们。按这种方式实一生存期管理的对象称为托管数据。垃圾回收机制消除了内存泄漏以及其他一些常见的编程错误。如果用户编写的代码是托管代码,则可以在.NET Framework应用程序中使用托管数据、非托管数据或者同时使用这两种数据。由于语言编译器会提供自己的类型(如基元类型),因此用户可能并不总是知道(或需要知道)这些数据是否为托管的。

有了公共语言运行库,就可以很容易地设计出能够跨语言交互的组件和应用程序。也就是说,用不同语言编写的对象可以互相通信,并且它们的行为可以紧密集成。例如,可以定义一个类,然后使用不同的语言从原始类派生出另一个类或调用原始类的方法。还可以将一个类的实例传递到用不同语言编写的另一个类的方法。这种跨语言集成之所以成为可能,是因为语言编译器和工具使用由公共语言运行库定义的通用类型系统,而且它们遵循公共语言运行库关于定义新类型以及创建、使用、保持和绑定到类型的规则。

在.NET中所有托管组件都带有生成它们所基于的组件和资源的信息,这些信息构成了元数据的一部分。公共语言运行库使用这些信息确保组件或应用程序具有它需要的所有内容的指定版本,这样就使代码不太可能由于某些未满足的依赖项而发生中断。注册信息和状态数据不再保存在注册表中(因为在注册表中建立和维护这些信息很困难)。取而代之的是,有关用户定义的类型(及其依赖项)的信息作为元数据与代码存储在一起,因此大大降低了组件复制和移除任务的复杂性。

语言编译器和工具公开公共语言运行库的功能对于开发人员来说不仅很有用,而且很直观。这意味着,公共语言运行库的某些功能可能在一个环境中比在另一个环境中更突出。用户对公共语言运行库的体验取决于所使用的语言编译器或工具。

公共语言运行库的主要优点如下。

(1)使性能得到了改进。

(2)能够轻松使用其他语言开发的组件。

(3)类库提供的可扩展类型。

新的语言功能,例如面向对象编程的继承、接口和重载;允许创建多线程的可缩放应用程序,这样可以显式自由的实现线程处理;结构化异常处理和自定义属性支持。

例如,如果使用Microsoft Visual C++ .NET,则可以使用C++托管扩展来编写托管代码。C++托管扩展提供了托管执行环境,并且提供了更加强大的功能和更具表现力的数据访问类型。

公共语言运行库的其他功能如下。

(1)跨语言集成,特别是跨语言继承。

(2)垃圾回收,它管理对象生存期,使引用计数变得不再必要。

(3)自我描述的对象,它使接口定义语言(IDL)不再是必要的。

(4)编译一次即可在任何支持公共语言运行库的CPU和操作系统上运选择功能。

另外,还可以使用C#语言编写托管代码。C#语言具有如下优点。

(1)完全面向对象的设计。

(2)非常强的类型安全。

(3)很好地融合了Visual Basic的简明性和C++的强大功能。

(4)垃圾回收。

C#完全符合公共语言规范,但C#本身不具有单独的运行时库。事实上.NET框架就是C#的运行时库,C#的编程库是.NET类库,因此,能够使用.NET框架类库的所有类。因此,C#能够实现.NET框架所支持的全部功能,具体如下所示。

  • Windows窗体编程。
  • ADO.NET数据库编程。
  • XML编程。
  • ASP.NET的Web编程。
  • Web服务编程。
  • 与COM和COM+互操作性编程。
  • 通过P/Invoke调用Windows API和任何动态链接库中的函数。

综上所述,C#程序的开发流程如图3-1所示。

0301

图3-1 C#程序的开发流程图

在下面的内容中,将简要介绍几个和C#、ASP.NET相关的重要概念。

1..NET Framework类库

.NET Framework类库包括类、接口和值类型,它们可加速和优化开发过程并提供对系统功能的访问。为便于语言之间进行交互操作,.NET Framework类库是符合CLS的,因此,可在任何编程语言中使用,只要这种语言的编译器符合CLS标准。

.NET Framework类库是生成.NET应用程序、组件和控件的基础。.NET Framework类库包括的类可以实现如下功能。

  • 表示基础数据类型和异常。
  • 封装数据结构。
  • 执行I/O。
  • 访问关于加载类型的信息。
  • 调用.NET Framework安全检查。
  • 提供数据访问、多客户端GUI(Graphical Vser Interface,图形用户接口)和服务器控制的客户端GUI。

.NET Framework提供一组丰富的接口以及抽象类和具体(非抽象)类。可以按原样使用这些具体的类,或者在多数情况下从这些类派生用户自己的类。若要使用接口的功能,既可以创建实现接口的类,也可以从某个实现接口的.NET Framework类中派生类。

2.命名约定

.NET Framework类型使用点语法命名方案,该方案隐含了层次结构的含意。此技术将相关类型分为不同的命名空间组,以便可以更容易地搜索和引用它们。全名的第一部分(最右边的点之前的内容)是命名空间名,全名的最后一部分是类型名。例如,System.Collections.ArrayList表示ArrayList类型,该类型属于System.Collections命名空间。System.Collections中的类型可用于操作对象集合。

此命名方案使扩展.NET Framework库的开发人员可以轻松创建分层类型组,并用一致的、带有提示性的方式对其进行命名。库开发人员在创建命名空间的名称时应遵循“公司名称技术名称”格式,例如,Microsoft.Word命名空间就符合此原则。

利用命名模式将相关类型分组为命名空间是生成和记录类库的一种非常有用的方式。但是,此命名方案对可见性、成员访问、继承、安全性或绑定无效。一个命名空间可以被划分在多个程序集中,而单个程序集可以包含来自多个命名空间的类型。程序集为公共语言运行库中的版本控制、部署、安全性、加载和可见性提供外形结构。

3.系统命名空间

System命名空间是.NET Framework中基本类型的根命名空间。此命名空间包括所有应用程序使用的基础数据类型的类:Object(继承层次结构的根)、Byte、Char、Array、Int32、String等。在这些类型中,有许多与编程语言所使用的基元数据类型相对应。当使用.NET Framework类型编写代码时,可以在应使用.NET Framework基础数据类型时使用编程语言的相应关键字。

用文本编辑器或开发工具编写完C#代码后,需要使用编译器进行编译调试。C#编译器的文件名为cec.exe,它一般位于“C:\WINDOWS\Microsoft.NET\Framework\”目录下。

另外,如果用户安装了.NET Framework 4.5或Visual Studio 2012,也可以分别通过如下两种方法进行编译。

  • 如果用户安装了.NET Framework 4.5,则可依次单击【开始】︱【所有程序】︱【.NET Framework 4.5 SDK】︱【SDK命令提示】命令,在弹出的命令提示界面中可以执行csc.exe命令来进行编译,如图3-2所示。

图片 1

图3-2 命令提示界面

  • 如果用户安装了Visual Studio 2012,则可依次单击【开始】︱【所有程序】︱【Microsoft Visual Studio 2012】︱【Visual Studio Tools】︱【Visual Studio 2012命令提示】选项,在弹出的“Visual Studio命令提示2012”界面中执行csc.exe命令来进行编译,如图3-3所示。

图片 1

图3-3 “Visual Studio命令提示2012”界面

C#编译器常用参数的具体说明如下。

  • “/help”或“/?”:将参数说明显示在屏幕。
  • “/optimize”或“/o”:启用/禁用优化。
  • “/out”:指定输出文件名,默认值是包含主类的文件或第一个文件的基名称。
  • “/reference”或“/r”:从指定程序集引用元数据。
  • “/target”或“/t”:这样使用“/target.exe” 或“/t.exe”, “target:library” 或“t:library”, “/target:module” 或“/t:moudle”, “/target:winexe” 或“t:winexe” 格式输出文件。

实例001 手动编译C#程序

源码路径 光盘\daima\3\1\  视频路径 光盘\视频\实例\第3章\001

本实例的实现文件为“name.cs”,具体实现代码如下。

using System;
using System.Collections.Generic;
using System.Text;
namespace name
{
  class Program
  {
   static void Main(string[] args)
   {
    string name;          //string变量类型,名为name
    name = "西门吹雪 ";      //赋值name变量
    string myString;        //string变量类型,名为myString
    myString = "\"我\"是";    //赋值myString变量
    Console.WriteLine("{0} {1}", myString, name);
    Console.ReadKey();
   }
  }
}
范例001:使用匿名类型、
var关键字
源码路径:光盘\演练范例\001视频路径:光盘\演练范例\001范例002:演示扩展方法的使用
源码路径:光盘\演练范例\002视频路径:光盘\演练范例\002\

上述实例代码的具体实现过程说明如下。

  • 通过using指令引用类命名。
  • 通过namespace定义命名空间name。
  • 设置函数方法Main。方法Main是项目程序的入口点,即程序运行后就执行它里面的代码。
  • 定义变量name,类型为string,并设置其值为“西门吹雪”。
  • 定义变量myString,类型为string,并设置其值为“"我"是”。其中字符“\"”的功能是转义双引号。
  • 通过WriteLine方法输出变量的值。WriteLine是System.Console类的重要方法,其功能是将变量值输出到控制台中。

编译上述程序文件“name.cs”,具体方法是打开图3-3所示的“Visual Studio命令提示(2012)”界面,然后输入“csc /out:name.exe name.cs”,按回车键。此时将在指定位置生成指定名称的可执行文件“name.exe”,如图3-4所示。

图片 1

图3-4 “Visual Studio命令提示(2012)”界面

运行文件“name.exe”后,程序的执行结果,如图3-5所示。

H4~H1UZZU26N32KFYLVZB2H

图3-5 name.exe运行结果

上一篇:3.1C#概述

下一篇:3.3C#的基本语法

相关教程

共有条评论 网友评论

验证码: 看不清楚?