.Net FrameWork


从以前的dos平台到现今的Windows 2003、Vista、Win7,开发语言也是百花齐放、究竟选择哪一种,到底哪个才是最好的?更为痛苦的是团队内成员之间用的开发语言的一致性的要求,不一致的话,VC++开发的类库文件Delphi,无法调,反之也如此,无法良好的实现代码重用、效率提高等,不得不痛苦的去查Windows API等巨厚无比的手册、宝典,自己重新写成类库等来调用。

        那么没有更好技术,实现各个语言之间的共通吗?团队成员之间不再局限于语言的困扰,.Net FrameWork就是应时而生的产物。

        .Net FrameWork也叫.Net 框架,主要包括两部分内容:公共语言运行时(CLR)和框架类库集(FCL)。

        

C#、VB、VC++、J#

Visual Studio.Net IDE

公共语言规范(CLS)

.Net 3.0、3.5 4.0组件(WPF、WWF、WCF)

Asp.Net 、Ado.Net、Winform、WinCe

基础类库(FCL)

公共语言运行时(CLR)

Windows XP、WindowsVista、Windows7操作系统

 

 

公共语言运行时:CLR

 

 

          原来的程序设计语言都是针对平台的,比如Windows、Linux,而现在从C# 、Java 开始,一种新的程序语言执行方式产生了,就是“中间代码+虚拟机”的执行机制。这种中间代码是不能直接执行的,它需要“虚拟机”的装置来管理和执行,可以使解释执行也可以使编译执行。如下图所示:

        


在.Net 框架里管理和执行中间代码的虚拟机,就是公共语言运行时(CLR),它负责管理和执行由.Net编译器产生的中间代码。

        执行过程如下:

ü       在开发环境VisualStudio.Net中编写C#代码

ü       编译器将代码编译成中间语言代码(中间语言类似于汇编语言,但不是机器码)

ü       中间语言代码由CLR管理和执行。

注意,公共语言运行时的另外一个作用是可以轻松实现跨平台(条件是在操作系统上安装.Net FrameWork,微软虽然自己并不提倡跨平台(跨平台会影响Windows操作系统的市场垄断),但现在已经出现了在Linux操作系统中运行和编辑.Net程序的平台,就是Mono(包含了C#编译器、CLR以及FCL)

 

      



微软中间语言--MSIL

 

.       什么是中间语言呢?假设我们有汉语、日语、法语三位学者,他们正在交流一个问题,应该怎么交流呢?如果有一种他们都懂的语言(英语、手语或世界语)来交流,他们彼此才能明白。

        在.Net中中间语言就类似于现实中的英语、手语或世界语,正是由于VB、C#、J#、VC++等编程语言被编译成中间语言,CLR最终执行的是中间语言,所以这里产生了一个语言无关性的问题。

        语言无关性是指.Net框架产生的最终代码是和具体编程语言无关的,只和中间语言有关。不管你使用哪种编程语言,最终都要变为中间语言,你使用任何语言VB或C#都是等效的。现在在公司团队中对于成员使用VB或C#写作就变得简单多了,二者的东西可以互相调用。这样带来的效益是可观的,节省了我们对于不同编程语言知识的学习时间,将更多的精力放在程序的业务逻辑等方面。

 



CTS和CLS

 

CLS被称为通用语言规范,它用来定义.Net语言都应遵循的规则。CTS称作通用类型系统,它通常包含标准数据类型和等。

       CLS定义了.Net编程语言(C#、VB、VC等)数据类型的最小特性集,只有遵循CLS的编程语言定义的值类型或引用类型才会被其他编程语言所引用。比如你在C#中可以定义Uint32返回类型的方法,但这个数据类型并不是CLS所规定的,那么在VB中调用这个方法就会出现麻烦或产生错误。也就是说,保证不同语言程序的互操作性的前提是,在程序里要使用CLS里规定的数据类型进行编程。

        而CTS可以说是.Net的特性全集,从右图中你可以看出某个编程语言的类型等特性只不过是CTS的一个子集。如果你直接使用IL编程,那么你可以使用CTS的所有特性,如果你使用C#,那么你只能使用CTS里面针对C#的那部分类型或准则。



 CTS描述了语言在.Net环境中的定义及其行为方式,一门语言要进入.Net环境运行,就必须符合CTS的规定。对于.Net中的任何语言,其类的定义方式、继承的语法甚至对象的生命周期等相关的语法都是CTS规定的。

 



.Net基础类库(FCL)

 

.       在.Net中,微软已经为广大的程序员们提供了强大无比的类库来方便大家轻松的开发程序。关于类库的概念一直就存在,以前的VC有MFC类库、Delphi有VCL类库、Java有Swing、SWT等类库。这些类库都封装了系统底层的功能,并提供更好的操作方式。

        .Net中的类库封装了对Windows、网络、文件、多媒体的处理功能,是所有.Net语言都必须使用的核心类库。在Visual Studio中使用.Net基本类库(FCL)我们可以开发以下六种应用程序:

n        Windows窗体应用程序

n        Windows控制台应用程序

n        XML Web服务

n        Asp.Net Web窗体应用程序

n        Windows服务

n        .Net组件

FCL类库大约有7000多个类(每个类可能会有上百个方法或属性,比当初18000多个Win32 API显得更厉害了),别看多,理清思路与脉络、万法归一,学习不是难事。

言归正传,这些类被按照命名空间进行了分别别类(命名空间是对类进行分类的)。常用的类库如下:

命名空间

说明

System

包括最基本的类,这些类提供数据类型、事件和事件处理、接口、属性、异常处理等操作。

System.Drawing

处理图形和绘图,包括打印

System.Data

处理数据存取和管理,在定义 ADO.NET 技术中扮演重要角色

System.IO

管理对文件和流的同步和异步访问

System.Windows

处理基于窗体的窗口的创建

System.Reflection

包含从程序集读取元数据的类

System.Threading

包含用于多线程编程的类

System.Collections

包含定义各种对象集的接口和类

System.Net

提供用于网络通信的类、如P2P通信、网络聊天等

 

为什么选择C#,看看以前在Win32下开发一个简单窗体程序师多么的困难吧。代码 如下:

使用Windows API显示一个窗体的程序:

HWND hwndMain = CreateWindowEx(

    0, "MainWinClass","Main Window",

    WS_OVERLAPPEDWINDOW |WS_HSCROLL | WS_VSCROLL,

    CW_USEDEFAULT, CW_USEDEFAULT,

    CW_USEDEFAULT, CW_USEDEFAULT,

    (HWND)NULL, (HMENU)NULL,hInstance, NULL);

ShowWindow(hwndMain, SW_SHOWDEFAULT);

UpdateWindow(hwndMain);

 

在.Net框架下使用C#显示一个窗体的程序:

Form form = new Form();

form.Text = "Main Window";

form.Show();

 





其他行业不再列举,总而言之,使用.Net进行企业级开发、游戏定制、用户服务越来越多,已经应用到社会的方方面面。

 



小结:

 

在本章中,我们主要学习了:

u      什么是.NetFrameWork

u      CTS和CLS的概念

u      .Net FrameWork行业应用

 



英语词汇:

 

英文             全文                                         中文

CLR              CommonLanguage Runtime                公共语言运行时

FCL              FoundationCommon Library                 基础类库

MSIL             MicrosoftIntermediateLanguage             微软中间语言

CTS             Common Type System                 公共类型系统

CLS             Common Language Specification            通用语言规范

 



练习项目:

 

 

使用MSDN了解MSIL、CTS、CLS的一些详细介绍,进行总结归纳。

 

 


posted on 2016-05-01 08:03  波波嘟  阅读(322)  评论(0编辑  收藏  举报