- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NET(C)Internalsasadeveloper,netframeworkinmyeyes.doc
——当我第一次听到Microsoft .NET平台时,我就知道它将续写微软不败的神话。(Jeffrey Richter)
引言
这篇文章我很早很早之前就想写了,本来是想把它作为我开博的第一篇的,但由于种种原因直到现在写出来。本文不是用.NET平台和其余平台(诸如Java)做比较,不去评论孰优孰劣。仅仅是作为一个.NET开发者,介绍一下我眼中的.NET。
1、.NET Framework
.NET Framework包括公共语言运行时(Common Language Runtime,CLR)和框架类库(Framework Class Library,FCL)。
CLR是.NET Framework 的基础、核心,提供了包括内存管理、线程管理和远程调用等核心服务。
FCL是一个基于面向对象的可重用类型集合,用于支持多种应用的快速开发,诸如ASP.NET Web应用、Windows Form应用、Web Service应用、Windows Presentation Foundation(WPF)应用等。
图1、.NET Framework(来自:MSDN)
.NET Framework提供一个托管执行环境、简化开发和部署、整合了多种开发语言。CLR是.NET体系的基础,所有的.NET代码都运行在CLR之上,并且与FCL紧密结合,并由此创建基于.NET的Windows Forms、Web Forms和XML Web Services等应用程序。.NET Framework的下层是操作系统,上层是.NET的高级开发语言(C#、F#等)。
1.1、CLR
CLR(公共语言运行时,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
为了提高平台的可靠性,以及为了达到面向事务的电子商务应用所要求的稳定性级别,CLR还要负责其他一些任务,比如监视程序的运行。按照.NET的说法,在CLR监视之下运行的程序属于“托管”(managed)代码,而不在CLR之下、直接在裸机上运行的应用或者组件属于“非托管”(unmanaged)的代码。
CLR将监视形形色色的常见编程错误,许多年来这些错误一直是软件故障的主要根源,其中包括:访问数组元素越界,访问未分配的内存空间,由于数据体积过大而导致的内存溢出,等等。
可以使用 C# 语言编写托管代码,C# 语言提供了下列优点:
完全面向对象的设计。
非常强的类型安全。
很好地融合了 Visual Basic 的简明性和 C++ 的强大功能。
垃圾回收。
类似于 C 和 C++ 的语法和关键字。
使用委托取代函数指针,从而增强了类型安全和安全性。函数指针通过 unsafe C# 关键字和 C# 编译器 (Csc.exe) 的 /unsafe 选项可用于非托管代码和数据。
1.2、FCL
.NET Framework 类库是一个由 Microsoft .NET Framework 中包含的类、接口和值类型组成的库。该库提供对系统功能的访问,是建立 .NET Framework 应用程序、组件和控件的基础。为便于语言之间进行交互操作,.NET Framework 类型是符合 CLS 的,并因此可在任何编程语言中使用,只要这种语言的编译器符合公共语言规范 (CLS)。NET Framework 包括的类型执行下列功能:
表示基础数据类型和异常。
封装数据结构。
执行 I/O。
访问关于加载类型的信息。
调用 .NET Framework 安全检查。
提供数据访问、多客户端 GUI 和服务器控制的客户端 GUI。
.NET Framework 提供一组丰富的接口以及抽象类和具体(非抽象)类。可以按原样使用这些具体的类,或者在多数情况下从这些类派生您自己的类。若要使用接口的功能,既可以创建实现接口的类,也可以从某个实现接口的 .NET Framework 类中派生类。.NET Framework 类库提供下列命名空间。
?
2、.NET的程序运行
.NET上的程序从源码到执行有以下几个步骤(来自Jeffery Richter的《.NET框架程序设计》):
将源码编译为托管模块;
将托管模块组合为程序集;
加载公共语言运行时CLR;
执行程序集代码。
这几个过程我总结为下图:
图2、.NET上的程序运行
关于托管模块与程序集的关系,我理解如下:
CLR实际上不和托管模块打交道,它直接打交道的对象是程序集。程序集由一个或多个托管模块及相关的资源文件逻辑组成。其次,程序集是组件复用,以及实施安全策略和版本策略的最小单位。程序集中有一个托管模块中包含清单(manifest)的
文档评论(0)