11-23

 

一致的编程模型:不像当今的某些操作系统是通过DLL来进行存储,某些操作系统是通过COM组件来进行存储,所有的应用程序服务是通过一直的面向对象编程模型来进行处理的。简单的编程模型:CLR试图大大简化win32以及COM的神秘之处。尤其是当今CLR解放了程序员,他们就不再用了解以下概念了:

registry,GUIDs,IUnKnown,AddRef,Release,HRESULTs等等。CLR不仅仅是从开发者的角度淡化了这些概念,实际上这些东西根本就不存在于CLR中。当然,如果你想写一个.NET Framework的应用程序并且穿插着非.NET代码的话,你必须还是得了解他们的。运行一次之后一直运行:所有的windows开发者想必对“DLL Hell”这个版本问题非常熟悉。当一个旧的组件被一个新的组建安装覆写之后就会发生一些奇怪的行为甚至会不工作。现有的.NET Framework体系分离了应用程序的组建使得应用程序当在它被建立以及测试的时候才载入。如果应用程序在安装之后运行,它就会一直存在。
简单化的部署:当今,应用程序的装载以及卸载都有不小的难度。我们需要进行一些文件的部署,注册的设置,因而我们需要一条捷径。同时,完全卸载一个应用程序几乎是不可能的。对于windows2000,微软推出了一个新的安装引擎来帮助用户来解决以上问题,但是用户不可能使用这玩意永远不会出错。.NET Framework试图使得这一切成为历史。
.NET Framework
的组建不再会被注册表引用了。实际上,安装大部分的.net framework
应用程序仅仅需要复制一些文件到指定目录以及增加一些快捷方式到开始菜单,桌面,异或是快速启动栏。如果要卸载,之需要要把这些文件删除就可以了。
平台的扩展性:当编译器编译.net平台上代码时,编译器产生了一种叫做CIL的语言
common intermediate language,而不再是传统的CPU指令。在运行的时候,CLRCIL翻译成自然的CPU指令。因为这一过程是在运行时完成的,所以它是为宿主CPU所完成。这就意味着你可以部署你的.NET Framework应用程序在任何一台拥有着ECMA标准的CLRFCL的机器上。这些机器可以使X86,X64,IA64等等。用户将会非常欣赏这种执行的体系,如果他们曾经换过他们的电脑硬件或者操作系统。
编程语言集成化:COM(Component Object Model )允许不同编程语言之间的相互交互。
.NET Framework
允许语言之间可以相互交互,所以你可以使用集中不同的语言如果你对他们够熟悉的话。举个例子,一个C++的类继承自VB中的一个类?CLR让这一切变成了可能,因为CLR定义了一种叫做CTS(common type system)的东东,所有以CLR为最终目标的语言一定要使用这个东东。CLS描述了不同语言相互集成时编译器所必须要做的事情。微软它本身提供了几种针对运行时的编译器:C++/CLI.C#,VB.NET,JScript。同时,除了微软以外的其他公司开发为其他语言也会为开发一些编译器,但是这些语言的是会target the CLR的。
简单的代码重用:使用之前描述的方法,你可以开发你自己的一个类,这个类为第三方应用程序提供服务。这使得复用代码非常简单,而且这为组件卖方提供可一个非常大的市场。自动内存管理(GC,Garbage Collection) 编程是非常需要技巧以及规范化的,尤其是当处理某一些可用资源比如文件,内存,屏幕空间,网络连接,数据库资源等等。最平常的一个问题就是忽略释放这些资源,这样会最终导致应用程序在某一个不确定的时间出现异常。CLR会自动跟踪这些资源的使用,以便确保你的应用程序永远不会泄露资源。实际上,没有办法去明确的释放内存。在第20章,我会详细的解释GC怎么工作的。确保类型安全:CLR能够确保所有你的代码是安全的。类型安全能够确保分配的object能一直以一种和谐的方式进行存储。因此,当一个方法输入一个声明为4位的变量时,CLR中发觉这一事实,它会试图将该变量用8位存储。相似的是,如果一个object型在内存重占有10bytes的空间,应用程序不能强迫该object用到10bytes以上的空间。类型安全同时意味着执行流程只会在被熟知的地方传送。同时,这些确保类型安全的措施还能消除很多相同的程序错误以及一些传统的攻击。
良好的调试支持:因为CLR支持很多编程语言,所以你现在使用某一种的特定语言进行某一些特定工作会变得更加容易。对于跨语言的调试,CLR完全支持。

 统一的异常处理:windows开发最让人恼火的地方就是各种不同的错误异常报告。某一些会返回win32状态代码,某一些会返回HRESULTS,还有一些会返回异常。在CLR中,所有的错误是由异常处理的。异常允许开发者对错误单独处理从而使得程序正常运行。这种隔离的机制使得代码的编写,阅读,维护都会简单很多。同时,异常的工作机制是可以跨越单元模型以及语言界限的。同时,不像状态代码与HRESULTS,异常是不可以被忽略的。CLR同时也提供堆栈处理机制,这使得定位Bugs与错误要相对容易多了。

安全性:传统操作系统的安全性是通过账户来实施控制的。这个模型已经被证实是实用的,但是必须得假设所有的核心代码是值得信任的。当这些代码来做于一些物理媒体(比如说CD-ROM)或者值得信任的企业服务器。但是伴随着越来越多的对移动代码的依赖,例如web scripts,internet的应用程序的下载,邮件的附件,我们都需要控制应用程序的行为,用一个更加以代码为中心的方式。代码存储安全为这一切提供了许多。

 

posted @ 2009-11-23 18:01  Tmac_  阅读(128)  评论(0)    收藏  举报