Wrox的C#高级编程第三版第一部分第一章(1~4页)

** 第一章 ** ** .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/

Published At
Categories with Web编程
Tagged with
comments powered by Disqus