第一章 .NET架构
阅读本书你会发现,本书通篇都强调,C#语言决不该被孤立的看待,她必须与.NET Framework一起考虑。C#编译器是以.NET为特定目标的,所以这就意味着用C#写出来的代码必须运行在.NET Framework.的支持上。这样,对C#就有两个重要的推论:
? C#的体系结构和方法论反映了.NET的根本方法论。
? 在许多情况下,C#的许多专用语言特性依赖于.NET的特性或者.NET基础类。
由于这种依赖关系,在开始C#编程之前,理解.NET的体系结构和方法论是重要的。这也正是本章的目的。
我们首先会了解一下当所有以.NET为目标架构的语言(包括C#)被编译和运行时都发生了什么。一旦我们有了大致的了解,我们将更加详细地了解一下Microsoft Intermediate Language (MSIL or simply IL),.NET上面所有的语言最终都会被编译为这种汇编语言。特别的,我们将了解一下IL、Common Type System (CTS)和Common Language Specification (CLS)是怎样共同作用使得.NET下面的语言可以协同工作的。我们也要讨论各种语言(Visual Basic 和 C++)包括怎样适合.NET的。
了解完这些后,我们将要继续了解一下.NET的其他特性,包括程序集、命名空间和.NET基础类。最后结束这一章之前我们要像C#开发人员一样对可疑创建的应用程序的种类做一个大致的了解。
1.1 C#与.NET的关系
相比较其他语言来说,C#是一种新的编程语言,并且以下两个方面体现了他的重要性:
? 它是专门为微软.NET框架(一个为了开发、部署和执行分布式应用软件而设计的功能丰富的平台)设计的。
? 它是一种基于现代面向对象设计方法的语言,在他设计时,面向对象原则已经得到显著应用20年之久,而且微软吸收了所有这些面向对象语言的经验。
一个重要的问题是要弄明白C#本身就是一种语言。尽管它是设计来产生.NET环境下的代码的,但是它不是.NET的一部分。还有一些特性.NET支持,但是C#并不支持,而且可能更令你惊奇的是,还有一些C#语言的特性.NET竟然不支持!(例如,一些运算符重载)
但是,因为C#语言是用于.NET的,所以对我们来说如果我们想要用C#开发出高效的软件,了解.NET Framework就是重要的。因此,在这一章,我们将要花些时间迅速透过表层来观察一下.NET。好,我们开始吧!
1.2 公共语言运行时
.NET Framework的核心是运行时执行环境,其被大家称为公共语言运行时(CLR)或者.NET运行时。在CLR的控制下运行的代码常常本称作托管代码。
但是,在被CLR执行之前,所有我们开发的源代码(用C#或者其他的语言)都需要被编译。这样的编译需要两个步骤:
1. 将源代码编译为中间语言(IL)代码
2. 由CLR将中间语言代码编译为特定平台上面的代码
这两步编译过程是非常重要的,因为中间语言(IL)的存在正是.NET众多优点的关键。好,让我们来看看为什么。
1.2.1 托管代码的优点
Microsoft中间语言与Java字节码共享一种思路,他们都是一种语法简单的低级语言(建立在数字代码基础上,而不是文本代码),可以被快速的翻译为本地机器码。代码有这样设计良好并且通用的语法是意义重大的优点。
1.2.1.1 平台无关性
首先,这就意味着包含字节代码指令的相同的文件可以被部署在任何的平台,在运行时编译过程的最后一个阶段可以很容易的完成,所以代码可以运行在特定的平台上。换句话说,源代码被编译成中间语言使得我们可以获得.NET的平台无关性,这和在Java平台上源代码被编译为Java字节码以获得平台无关性的道理是一样的。
你应该注意到.NET的这种平台无关性目前还是理论上的,因为在本书写作的时候,还只有在Windows平台上才完全实现了.NET。但是,已经有一个部分实现的.NET(参见Mono项目,一个正在致力于建立于开源平台之上的.NET,具体请访问www.go-mono.com/)
本文地址:http://com.8s8s.com/it/it43430.htm