Chinaunix首页 | 论坛 | 博客
  • 博客访问: 520893
  • 博文数量: 105
  • 博客积分: 4174
  • 博客等级: 上校
  • 技术积分: 1395
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-07 11:35
文章分类

全部博文(105)

文章存档

2013年(3)

2012年(16)

2011年(71)

2010年(3)

2009年(6)

2008年(6)

分类: WINDOWS

2011-08-11 09:40:41

  NET Framework 是微软的几个开发团队一起努力发展的成果,最主要用来产生一个可以用来快速开发、部署网站服务及应用程序的开发平台。这个架构是两个项目的结果:第一个项目的目的是用来改善Windows 作业平台上的程序开发,特别是改善COM(Component Object Model,组件对象模块。一种微软所制定的软件技术;让对象的功能可以被其它软件所叫用,可以让组件重复使用、容易更新及维护);第二个项目则是制作一 个以发展服务(Service)软件为目标的开发平台。这两个项目团队三年多前就已经在一起工作,他们希望可以发展出一种可以快速开发出以因特网为基础, 而且易学易用的开发平台。为了要达到这些目标,所以.Net Framework 在设计时加入了下列特色:

透过因特网的标准做整合
 
  以XML(eXtensible Markup Language,延伸标注语言)及SOAP(Simple Object AccessProtocol,简单对象存取协议)等标准通讯协议,将各种由不同环境所组成的应用程序及组件整合在一起工作。

松散的整合组件
 
  大多数具延展能力(可扩充功能)的系统,现阶段是以「异步讯息」为架构而建立的。要建立这种多层的架构非常复杂,而且工具很少。.NET Framework 不需要很严谨的定义每个组件的结构即可很轻松的整合,这样可提高程序的延展性。

支持多种程序语言
 
   许多程序设计师会使用多种语言来开发他们的解决方案,这是因为每种语言都有它的长处。例如某些语言对于数值计算效率较好,某些语言对于数据库的操作较为 方便,而某些语言又有大量的链接库可供使用;所以没有办法强迫别人只学一种程序语言。.NET Framework 把这些语言整合起来,可以让开发人员使用不同的程序语言来开发解决方案,让程序设计师可以选择他们专长的程序语言,企业则可省去重新训练员工的成本。

提高程序设计师的生产力

  现今程序设计师人才非 常缺乏,程序设计师在人力不足的情形之下就必需提高生产力,因为每个项目的时程很可能很急促;况且公司也希望赶快结案好再进行下一个项目。正因如 此,.NETFramework 的开发团队希望尽可能减少写程序会发生的问题,让程序设计师专心于撰写企业法则(企业处理数据的规则)。所以.NET Framework 有些节省时间的特色,例如容易使用的自动交易机制、自动内存管理,以及丰富的控件。

完善的数据保全

  目前因特网最受大家注目的,就是它的安全性。要设计一个安全性完善的因特网应用程序,在设计时就必须考虑所有组件的保全设计,而不能仅做一部分而已。.NET Framework 在设计安全模型时时即考虑到这点,将所有的数据与程序代码做完善的安全防护。

可用操作系统的服务

  Windows 提供了比其它作业平台更丰富的服务及资源,例如众多的数据存取服务、使用系统所提供的整合安全模式来做身分验证及保全的工作、交互式的使用者接口、成熟的 对象模块、交易程序监视以及讯息队列服务。.NET Framework 当然也将这些操作系统所提供出来的功能包装起来,以更简单的方式提供程序设计师使用。

.NET Framework 是Microsoft 新的程式设计模型,用来开发、部署与执行XML Web Service 以及各种应用程式类型:桌上型、行动式或以Web 为基础的应用程式。 Microsoft 在建立.NET 平台时主要是追求两个目标:第一个目标是要让Microsoft Windows® 变得更为元件导向并简化基本的物件模型以改善在Microsoft Windows 平台上的程式开发;第二个目标是要提供一个现代化、第三代的架构以建立和部署XML Web Service。 使用.NET Framework 时,Microsoft 会大大提升程式设计人员的生产力、增进部署的简易性以及应用程式执行的可靠性。 .NET Framework将崭新的XML Web Service (英文版)概念导入运算领域中。 XML Web Service 使用标准的Internet 通讯协定来进行通讯,例如SOAP、Web Service 描述语言(Web Service Description Language,WSDL) 以及通用描述探索与整合(Universal Description, Discovery, and Integration,UDDI),借以整合专为今日的异质性运算环境所设计之连结松散的应用程式与元件。

.NET Framework 包含三个主要部分:第一个部分是Common Language Runtime。 它负责执行应​​用程式,可以确保应用程式所有的依赖性都已符合、管理记忆体以及处理像是安全性与语言整合的问题。 Common Language Runtime 提供许多服务,可以协助您简化程式码的开发与应用程式配置同时还能改善应用程式的可靠性。 这项工作的大部分是以通透性的方式处理,简化了开发人员与系统管理员的工作。

第二个部分是统一核心类别。 这些类别可以提供开发人员建置现代化应用程式所需的所有工具,包括XML 支援、网路支援以及资料存取。 开发人员拥有这些统一类别,在建置任何类型的应用程式时(不论是Windows 或Web 为基础的应用程式) 都是使用相同的类别。 这种一致性会增进开发人员的生产力以及程式码的重复使用性。

第三也就是最后一个部分涉及展示类别,这种类别包括开发Web应用程式的ASP.NET (英文版)以及开发以Windows为基础的应用程式或「智慧型用户端」应用程式的XML Web Service (英文版)以及Windows Form (英文版) 。


.NET Framework是Microsoft为开发应用程序而创建的一个富有革命性的新平台。

这句话最有趣的地方是它的含糊不 清,但这是有原因的。首先,注意这句话没有说“在Windows操作系统上开发应用程序”。尽管.NET Framework的Microsoft版本运行在Windows操作系统上,但以后将推出运行在其他操作系统上的版本,例如Mono,它是.NET Framework的开发源代码版本(包含一个C#编译器),该版本可以运行在几个操作系统上,包括各种Linux版本和Mac OS。许多这类项目正在开发,在读者阅读本书时可能就已发布了。另外,还可以在个人数字助手(PDA)类设备和一些智能电话上使用Microsoft .NET Compact Framework(基本上是完整 .NET Framework的一个子集)。使用.NET Framework的一个主要原因是它可以作为集成各种操作系统的方式。

另外,上面给出的.NET Framework定义并没有限制应用程序的类型。这是因为本来就没有限制。.NET Framework可以创建Windows应用程序、Web应用程序、Web服务和其他各种类型的应用程序。

.NET Framework的设计方式保证它可以用于各种语言,包括本书要介绍的C#语言,以及C++、Visual Basic、JScript,甚至一些旧的语言,如COBOL。为此,还推出了这些语言的.NET版本,目前还在不断推出更多的.NET版本的语言。所有 这些语言都可以访问.NET Framework,它们还可以彼此交互。C#开发人员可以使用Visual Basic程序员编写的代码,反之亦然。

所有这些提供了意想不到的多样性,这也是.NET Framework具有诱人前景的部分原因。

1.1.1 .NET Framework的内容

.NET Framework主要包含一个非常大的代码库,可以在客户语言(如C#)中通过面向对象编程技术(OOP)来使用这些代码。这个库分为不同的模块,这样 就可以根据希望得到的结果来选择使用其中的各个部分。例如,一个模块包含Windows应用程序的构件,另一个模块包含联网的代码块,还有一个模块包含 Web开发的代码块。一些模块还分为更具体的子模块,例如在Web开发模块中,有用于建立Web服务的子模块。

其目的是,不同的操作系统可以根据自己的特性,支持其中的部分或全部模块。例如,PDA支持所有的核心.NET功能,但不需要某些更深奥的模块。

部 分.NET Framework库定义了一些基本类型。类型是数据的一种表达方式,指定其中最基础的部分(例如32位带符号的整数),以便使用.NET Framework在各种语言之间进行交互操作。这称为通用类型系统(Common Type System,CTS)。

除了支持这个库以外,.NET Framework还包含.NET公共语言运行库(Common Language Runtime,CLR),它负责管理用.NET库开发的所有应用程序的执行。

1.1.2 如何用.NET Framework编写应用程序

使 用.NET Framework编写应用程序,就是使用.NET代码库编写代码(使用支持Framework的任何一种语言)。本书中所有的示例都使用VS进行开发, VS是一种强大的集成开发环境,支持C#(以及托管和非托管C++、Visual Basic和其他一些语言)。这个环境的优点是便于把.NET功能集成到代码中。我们创建的代码完全是C#代码,但使用.NET Framework,并在需要时利用VS中的其他工具。

为了执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码,这种转换称为编译代码,由编译器执行。但在.NET Framework下,这个过程分为两个阶段。

1. MSIL和JIT

在 编译使用.NET Framework库的代码时,不是立即创建操作系统特定的本机代码,而是把代码编译为Microsoft中间语言(Microsoft Intermediate Language,MSIL)代码,这些代码不专用于任何一种操作系统,也不专用于C#。其他.NET语言,如Visual Basic .NET也可以在第一阶段编译为这种语言,当使用VS开发C#应用程序时,编译过程就由VS完成。

显然,要执行应用程序,必须完成更多的工作,这是Just-In-Time (JIT)编译器的任务,它把MSIL编译为专用于OS和目标机器结构的本机代码。这样OS才能执行应用程序。这里编译器的名称Just-In-Time反映了MSIL仅在需要时才编译的事实。

过 去,常常需要把代码编译为几个应用程序,每个应用程序都用于特定的操作系统和CPU 结构。这通常是一种优化形式(例如,为了让代码在AMD芯片上运行得更快),但有时是非常重要的(例如对于工作在Win9x 和 WinNT/2000环境下的应用程序)。现在就不必要了,因为顾名思义,JIT编译器使用MSIL代码,而MSIL代码是独立于机器、操作系统和CPU 的。目前有几种JIT编译器,每种编译器都用于不同的结构,我们总能找到一个合适的编译器创建所需的本机代码。

 

这样,用户需要做的工作就比较少了。实际上,可以不考虑与系统相关的细节,把注意力放在代码的功能上就够了。

2. 程序集

在编译应用程序时,所创建的MSIL代码存储在一个程序集中,程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的库(其扩展名是.dll)。

除 了包含MSIL外,程序集还包含元信息(即程序集中包含的数据的信息,也称为元数据)和可选的资源(MSIL使用的其他数据,例如声音文件和图 片)。元信息允许程序集是完全自我描述的。不需要其他信息就可以使用程序集,也就是说,我们不会遇到下述情形:不能把需要的数据添加到系统注册表中,而这 种情形在使用其他平台进行开发时常常出现。

因此,部署应用程序就非常简单了,只需把文件复制到远程计算机上的目录下即可。因为不需要目标系统上的其他信息,所以只需从该目录中运行可执行文件即可(假定安装了.NET CLR)。

当 然,不必把运行应用程序所需要的所有信息都安装到一个地方。可以编写一些代码,执行多个应用程序所要求的任务。此时,通常把这些可重用的代码放在 所有应用程序都可以访问的地方。在.NET Framework中,这个地方是全局程序集高速缓存(Global Assembly Cache,GAC),把代码放在这个高速缓存中是很简单的,只需把包含代码的程序集放在包含该高速缓存的目录下即可。

3. 托管代码

在 把代码编译为MSIL,再用JIT编译器把它编译为本机代码后,CLR的任务还没有全部完成。用.NET Framework编写的代码在执行(这个阶段通常称为运行时(runtime))时是托管的。即CLR管理着应用程序,其方式是管理内存、处理安全性, 以及允许进行跨语言调试等。相反,不在CLR控制之下运行的应用程序是非托管的,某些语言如C++可以用于编写这类应用程序,例如,访问操作系统的低级功 能。但是,在C#中,只能编写在托管环境下运行的代码。我们将使用CLR的托管功能,让.NET自己与操作系统进行交互。

4. 垃圾回收

托 管代码最重要的一个功能是垃圾回收(garbage collection)。这种.NET方法可确保应用程序不再使用某些内存时,这些内存就会被完全释放。在.NET推出以前,这项工作主要由程序员负责, 代码中的几个简单错误会把大块内存分配到错误的地方,使这些内存神秘失踪。这通常意味着计算机的速度逐渐减慢,最终导致系统崩溃。

.NET垃圾回收会频繁检查计算机内存,从中删除不再需要的内容。它没有设置时间帧,可能一秒钟内会进行上千次的检查,也可能几秒钟检查一次,或者随时进行检查,但可以肯定进行了检查。

这里要给程序员一些提示。因为这项工作在不可预知的时间进行,所以在设计应用程序时,必须记得要进行这样的检查。需要许多内存才能运行的代码应自己执行这样的检查,而不是坐等垃圾回收,但这不像听起来那样难
阅读(1313) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~