2.1 .NET Framework部署目标
2011-11-21 15:48 iRead 阅读(360) 评论(0) 编辑 收藏 举报Microsoft Windows多年来一直因为不稳定和过于复杂而口碑不佳。不管人们对它的评价对不对,之所以会造成目前这种状况,要归咎于几个方面的原因。首先,所有应用程序都使用来自Microsoft或其他产商的动态连接库(DLL)。由于一个应用程序要执行来自多个产商的代码,所以任何一段代码的开发人员都不能百分之百保证别人会以什么方式来使用这段代码。虽然这种交互可能造成各种各样的麻烦,但实际一般不会出太大的问题,因为应用程序在部署之前,会进行严格的测试 和调试。
但对于用户来说,当一家公司决定更新其软件产品的代码,并将新文件发送给他们时,就可能出现问题。这些新文件理论上应该向后兼容于以前的文件,但谁能对此保证呢?事实上,当一个产商更新它的代码时,经常都不可能重新测试和调试以前发布的所有应用程序,无法保证自己的更改不会造成不希望的结果。
很多人都可能遇到过这样的问题:安装一个应用程序时,它可能莫名其妙地破坏了另一个已经安装好的应用程序。这个问题称为“DLL Hell”。这种不稳定性会对普通计算机用户造成不小的困扰。最终结果是用户必须慎重考虑是否在他们的机器上安装新软件。就我个人来说,有一些重要的应用程序是平时经常都要用到的。为了避免对它们产生不好的影响,我不会冒险去“尝鲜”。
造成Windows口碑不佳的第二个原因是安装时的复杂性。如今,大多数应用程序在安装时都会影响到系统的全部组件。例如,安装一个应用程序会造成文件复制到各个目录,更新注册表设置,并在桌面和“开始”菜单上安装快捷方式。之所以出现这个问题,是因为应用程序并不是一个孤立的实体。我们无法轻松备份应用程序,因为必须复制应用程序的文件以及注册表的相关部分。除此之外,也不能轻松将应用程序从一台机器移动到另一台机器。只有再次运行安装程序,才能确保所有文件和注册表设置的正确性。最后,即使表面上能卸载或移除应用程序,也免不了担心它的一部分内容仍潜伏在我们的机器上。
第三个原因设计安全性。应用程序在安装时,会带来各种文件,其中许多是由不同的公司写的。此外,Web应用程序经常会悄悄下载一些代码(比如ActiveX控件),用户根本注意不到自己的机器上安装了这些代码。如今,这种代码能够执行任何操作,包括删除文件或者发送电子邮件。用户完全有理由害怕安装新的应用程序,因为它们可能造成各种各样的危害。考虑到用户的感受,安全性必须集成到系统中,使用户能够明确允许或禁止各个公司开发的代码访问自己的系统资源。
通过阅读本章和第3章可以知道,.NET Framework正在尝试彻底解决DLL Hell的问题。另外,.NET Framework还在很大程度上解决了应用程序四散于用户硬盘的状态。例如,和COM不同,类型不再需要注册表设置。但遗憾的是,应用程序还是需要快捷方式。在安全性方面,.NET Framework包含一个名为“代码安全访问性”(code access security)的安全模型。Windows安全性是基于用户身份的;相反,代码访问安全性基于加载组件的那个宿主应用程序所能控制的权限。像Microsoft Silverlight这样的宿主应用程序只能将少数几个权限授予下载的代码。但是,在本地安装的(self-hosting)应用程序可获得安全的信任(全部权限)。以后会讲到,.NET Framework允许用户灵活地控制哪些东西能够安装,哪些东西能够运行。他们对自己的机器的控制将上升到一个前所未有的高度。