i社区用户: 密码:
搜索:
首页| 资讯| 信息化| 视频| 专题| 创业| 企业中心| 企业博客| 职场| 周报全文| 方案中心 |电子杂志
市场会展| Blog| i社区| 社区联盟| RSS| 直播 | 发行| wiki |i| 下载| 英才招聘|CIO文库
IT两会 | 互联网年会
产品中心| 笔记本|台式机| DIY|数码| 服务器|网络通信| 手机|软件|显示器|信息安全|存储|组网| 动漫

C#语言系列讲座(3)

Microsoft.NET平台


◆ 南京邮电学院 李建忠


抛开Microsoft.NET平台去谈C#是没有意义的,简单地讲,Microsoft.NET平台是一个建立在开放互联网络协议标准之上,采用新的工具和服务来满足人们的计算和通信需求的革命性的新型XML Web智能计算服务平台。它允许应用程序在因特网上方便、快捷地互相通信,而不必关心使用何种操作系统和编程语言。从技术层面来说,Microsoft.NET平台主要包括两个内核,即通用语言运行时(Common Language Runtime,简称CLR)和Microsoft.NET框架类库, 它们为Microsoft.NET平台的实现提供底层技术支持。

通用语言运行时(CLR)

通用语言运行时是整个Microsoft.NET框架赖以建构的基础,它为Microsoft.NET应用程序提供了一个托管代码的执行环境。它实际上是驻留在内存里的一段代理代码,负责应用程序在整个执行期间的代码管理工作,主要包括:内存管理、线程管理、安全管理、远程管理、即时编译、代码强制安全类型检查等。实际上,CLR代理了部分传统操作系统的管理功能。在CLR下的代码称为托管代码,否则称为非托管代码。也可将CLR看做一个技术规范,无论程序使用什么语言编写,只要能编译成微软中间语言 (MSIL),就可以在它的支持下运行,这使得应用程序得以独立于语言。即时编译器在运行时将中间语言编译成本地二进制代码,它为Microsoft.NET平台提供了多语言的底层技术支持。

CLR的设计目的是直接在应用程序运行环境中为基于组件的编程提供支持。CLR直接支持组件(包括属性和事件)、对象、继承性、多态性和接口。对属性和事件的直接支持使得基于组件的编程变得更简单,而不需要特殊的接口和适配设计模式。在组件运行时,CLR负责管理内存分配、启动和中止线程和进程、强化安全系数,同时还调整任何该组件涉及到的其他组件的附属配置。组件代码是与处理器无关的、易于验证的中间语言 ( IL),而不是某一种特定的机器语言,这意味着组件不但可以在多种计算机上运行,而且可以确保组件不会覆盖它们不使用的内存,也不会潜在地导致系统崩溃。CLR根据托管组件的来源(例如来自因特网、企业局域网、本地机)等因素对它们确定适当的信任度,这样CLR会根据它们的信任度来限定它们执行如读取文件、修改注册表等一些敏感操作的权限。CLR下的编程全部是围绕组件进行的。

值得指出的是CLR通常包括在其他高性能的服务器应用程序中,比如:因特网信息服务器(IIS)、Microsoft SQL Server。这使得我们可以充分利用通用语言运行时诸多的安全、高效的优点来部署自己的商业逻辑。

内存管理

CLR对程序员影响最大的就是它的内存管理功能, 有必要单独把它列出来阐述。它为应用程序提供了高性能的垃圾收集环境,在Microsoft.NET托管环境下,CLR负责处理对象的内存布局,管理对象的引用,释放系统不再使用的内存(自动垃圾收集)。这从根本上解决了长期以来困扰软件的内存泄露和无效内存引用问题,大大减轻了程序员的开发负担,提高了程序的健壮性。值得指出的是Microsoft.NET应用程序可以使用托管数据,也可以使用非托管数据,但CLR并不能判断托管数据与非托管数据。

当用new操作符创建新的对象时,垃圾收集器在托管堆(Managed Heap)中为对象分配内存资源。只要托管堆内的内存空间可用,垃圾收集器就为每一个新创建的对象分配内存。当应用程序不再持有某个对象的引用,垃圾收集器将会探测到并释放该对象。但是垃圾收集器并不是在对象引用无效时就立即开始释放工作,而是根据一定算法来决定什么时候进行收集和对什么对象进行收集。任何一个机器的内存资源总是有限的,当托管堆内的内存空间不够用时,垃圾收集器启动收集线程来释放系统内存。垃圾收集器根据对象的存活时间,对象历经的收集次数等来决定对哪些对象的内存进行释放。一般地说,我们并不知道垃圾收集的确切行为,但Microsoft.NET类库为我们提供了控制垃圾收集行为的部分功能。

垃圾收集器并不意味着程序员从此可以一劳永逸,如果正在操作一个包装了如文件、网络连接、Windows句柄、位图等底层操作系统资源的对象,我们还是需要明确地释放这些非托管资源的。

Microsoft.NET框架类库

Microsoft.NET框架类库是一组广泛的、面向对象的可重用类的集合,为应用程序提供各种高级的组件和服务。它将程序员从繁重的编程细节中解放出来专注于程序的商业逻辑,为应用程序提供各种开发支持——不管是传统的命令行程序还是Windows图形界面程序,或是面向下一代因特网分布式计算平台的ASP.NET或XML Web服务。下面是对这些组件和服务的一个概括:

● 系统框架服务

服务框架包括一套开发人员希望在标准语言库中存在的基类库,例如:集合、输入/输出、字符串及数据类。另外,基类库提供访问操作系统服务如图像、网络、线程、全球化和加密的类。服务框架也包括数据访问类库和开发工具,如调试和剖析服务使用的类。

● ADO.NET组件

ADO.NET为基于网络的可扩展的应用程序和服务提供数据访问服务。ADO.NET不仅支持传统的基于链接指针风格的数据访问,同时也为更适合于把数据返回到客户端应用程序的无连接的数据模板提供高性能的访问支持。

● XML数据组件

所有的数据都可被看做XML,开发人员可以通过XML为任何数据使用转换、传输和确认服务。系统框架对XML数据提供操作支持,系统也支持ADO.NET数据与XML数据之间的通用转换。

● Windows表单组件

Windows表单组件为开发人员提供了强大的Windows应用程序模型和丰富的Windows用户接口,包括传统的ActiveX控件和Windows XP的新界面,如透明的、分层的、浮动的窗口。

● ASP.NET应用服务

ASP.NET的核心是高性能的用于处理基于低级结构的HTTP请求的运行语言。编译运行的方式大大提高了它的性能。ASP.NET使用基于构件的Microsoft

.NET框架配制模板,因此它获得了如XCOPY配制、构件并行配制、基于XML配制等优点。它支持应用程序的实时更新,提供高速缓冲服务改善性能。

● XML Web服务

ASP.NET应用服务体系架构为用ASP.NET建立XML Web服务提供了一个高级的可编程模板。虽然建立XML Web服务并不限定使用特定的服务平台,但是它提供的许多特点将简化开发过程。使用这个编程模型,开发人员甚至不需要理解HTTP、SOAP或其他任何网络服务规范。ASP.NET的XML Web服务为在Internet上绑定应用程序提供了一个利用现存体系架构和应用程序的简单的、灵活的、基于产业标准的模型。

(计算机世界报 第04期 C22)



周报全文频道联系方式:010-68130909
【关于我们】  【广告服务】  【周报发行】  【投稿指南】  【投稿声明】  【联系方式】  【法律声明】
  【媒体手册】  【编读往来】  
Copyright© ccw.com.cn,All rights reserved
中国计算机世界出版服务公司版权所有