日期:2011-03-14  浏览次数:20856 次

Microsoft .NET 框架常见问题
Microsoft Corporation

概念问题
什么是 .NET?
简单地说,Microsoft® .NET 是 Microsoft 以服务的方式递交软件的一种策略。有关完整信息,请参阅有关该主题的白皮书(英文)。

以下是白皮书的摘要,简要介绍了 .NET 的关键内容:

Microsoft .NET 平台
包括用于创建和操作新一代服务的 .NET 基础结构和工具、用于实施多信息客户端的 .NET 用户经验,以及用于启用新一代智能 Internet 设备的 .NET 构造块服务和 .NET 设备软件。


Microsoft .NET 产品和服务
包括 Microsoft® Windows.NET(其核心集成了一组构造块服务)、MSN.NET、个人订阅服务、Microsoft® Office.NET、Microsoft® Visual Studio.NET 和 Microsoft® bCentral™ for .NET。


第三方 .NET 服务
许多领域的合作伙伴和开发人员都有机会在 .NET 平台上提供企业和垂直服务。
此问题针对的是 .NET 框架。.NET 框架是 .NET 平台基础结构的一部分。有关 .NET 框架的详细信息,请参阅下一个问题。



什么是 .NET 框架?
.NET 框架是创建、部署和运行 Web 服务及其他应用程序的一个环境。它包括三个主要部分:公共语言运行时、框架类和 ASP.NET。

.NET 框架是否只适用于创建 Web 站点的用户?
.NET 框架使您可以创建优秀的 Web 应用程序。但它也可以帮助您创建现在的各种应用程序。与当前创建应用程序的方式相比,.NET 在编写任何 Windows 软件(使用 ATL/COM、MFC、Microsoft® Visual Basic® 或标准 Microsoft® Win32®)方面都具有更大的优势。当然,如果您是开发 Web 站点,那么从 ASP.NET 开始,您就会感受到 .NET 框架的强大吸引力。

从何处可以获得 .NET 框架 SDK?
现在可以从 MSDN Online Downloads(英文)下载 .NET 框架 SDK 的 Beta 1 版。鉴于其大小,我们以多种方式提供此 Beta 版:作为一个下载文件 (106 MB),分为 11 部分下载,或者从 Microsoft Developer Store 定购其 CD:

美国/加拿大(英语)


国际(英语)

.NET 框架可以运行于哪些平台?
Beta 1 版可以运行在 Microsoft® Windows® 2000、Windows 95/98/ME 和 Windows NT® 4.0 上。

另外,还有一个称为 .NET 精简框架的 .NET 框架版本。它用于使蜂窝电话和增强型电视等设备也具有 .NET 框架的某些功能。.NET 精简框架将运行在 Windows CE 和其他嵌入式操作系统上。

.NET 框架支持哪些编程语言?
.NET 框架与编程语言无关。事实上任何语言都可以支持 .NET 框架。目前,您可以用许多语言来创建 .NET 程序,包括:C++、Microsoft® Visual Basic.NET、JScript® 和 Microsoft 的最新语言——C#。以后,也会有大量的第三方语言可以用来创建 .NET 框架应用程序,包括 COBOL、Eiffel、Perl、Python、Smalltalk 等等。

.NET 框架和 COM+ 服务之间是什么关系?
在 .NET 框架中,不仅可以完全访问 COM+ 服务,而且也更容易创建服务组件。

.NET 框架组件可被添加至 COM+ 应用程序中。在 COM+ 应用程序中,.NET 框架组件可以利用自动组件服务,例如:事务、对象池、排队组件、事件等等。

.NET 框架和 DCOM 之间是什么关系?
DCOM 是用于进程间通讯的 COM 基础结构。.NET 框架支持大量用于进程间通讯的可插入通道和格式化程序。在托管代码和非托管代码之间进行转换时,.NET 框架使用了 COM 基础结构,尤其是 DCOM。所有使用 COM+ 服务的方案都使用了托管到非托管转换,因此默认使用 DCOM。对于注重互操作性的进程间通讯,.NET 框架也支持 SOAP(简单对象访问协议)。

.NET 框架是否仅仅是 Windows DNA 的新名称?
不。Windows DNA 是用于创建紧耦合的分布式 Web 应用程序的一种体系结构。由于分布式应用程序变得需要更多的松耦合原理,因此 Microsoft 在 .NET 中发展了该体系结构。.NET 框架是 .NET 体系结构的一部分。

运行时技术问题
术语
什么是公共语言运行时 (CLR)?
公共语言运行时是 .NET 框架应用程序的执行引擎。

它提供许多服务,包括:

代码管理(加载和执行)


应用程序内存隔离


类型安全验证


IL 到本机代码的转换


元数据(增强的类型信息)访问


为托管对象管理内存


强制代码访问安全


异常处理,包括跨语言异常


托管代码、COM 对象和现有 DLL(非托管代码和数据)之间的互操作


自动进行对象布局


对开发人员服务(配置、调试等)的支持

什么是公共类型系统 (CTS)?
公共类型系统是多信息类型系统,它被内置在公共语言运行时中,支持大多数编程语言中的类型和操作。公共类型系统支持大量编程语言的完全实现。

什么是公共语言规范 (CLS)?
公共语言规范是一组结构和限制,用作库编写者和编译器编写者的指南。它使任何支持 CLS 的语言都可以完全使用库,并且使这些语言可以相互集成。公共语言规范是公共类型系统的子集。对于那些需要编写代码供其他开发人员使用的应用程序开发人员,公共语言规范也非常重要。如果开发人员遵循 CLS 规则来设计公共访问的 API,那么就可以在支持公共语言运行时的任何其他编程语言中很容易地使用这些 API。

什么是 Microsoft 中间语言 (MSIL)?
MSIL 是与 CPU 无关的指令集。.NET 框架程序被编译成 MSIL。它包含加载、存储、初始化和调用对象方法的指令。

与元数据和公共类型系统结合,MSIL 允许真正的跨语言集成。

MSIL 在执行前被转换为机器代码,而不是一边解释一边执行。

什么是托管代码和托管数据?
托管代码是编写为支持公共语言运行时服务的代码(请参阅“什么是公共语言运行时?”)。为了支持这些服务,代码必须向运行时提供最小级别的信息(元数据)。默认情况下,所有 C#、Visual Basic.NET 和 JScript.NET 代码都是托管代码。Visual Studio.NET C++ 代码在默认情况下不是托管代码,但通过指定命令行开关 (/CLR),编译器也可以生成托管代码。

与托管代码密切相关的是托管数据。托管数据是由公共语言运行时的垃圾回收器进行分配和释放的数据。默认情况下,C#、Visual Basic 和 JScript.NET 数据是托管数据。不过,通过使用特殊的关键字,C# 数据可以被标记为非托管数据。Visual Studio.NET C++ 数据在默认情况下是非托管数据(即使在使用 /CLR 开关时),但是在使用 C++ 的托管扩展时,可以使用“__gc”关键字将类标记为托管类。就象该名称所显示的那样,它表示类实例的内存由垃圾回收器管理。另外,该类也完全成为 .NET 框架的成员,同时具备它所带来的好处和限制。好处的一个例子是:它可以与其他语言编写的类正确地进行互操作(如托管的 C++ 类可以从 Visual Basic 类继承);限制的一个例子是:托管类只能从一个基类继承。

程序集
什么是程序集?
程序集是 .NET 框架应用程序的主要构造块。它是作为一个单一实现单元(包含一个或多个文件)来创建、标识和部署的功能集合。所有的托管类型和资源都可以被标记为仅在其实现单元内访问,或者标记为可由该单元以外的代码来访问。

程序集通过清单来进行自我说明。清单是每个程序集的不可或缺的