目前,仍然有相当一部分企业还没有完全采用最灵活的软件托管战略之一——应用虚拟化。当然这也是合情合理的,从成本节约框架来讲,采用应用虚拟化技术是最难以把握的。
很多软件既没有安装在用户自身的系统上,也没有在客户端或服务器模式中的服务器上运行。然而,客户端或服务器应用程序可能会有性能问题,另外随着配置参数和注册表参数的不断增多和可能会与本地库文件产生冲突,以及中间件越来越相似,本地软件的安装工作也变得相当复杂。对于很多公司来讲,简单地按顺序保持运行桌面应用的系统上所有的公司软件需求是技术支持部门的工作。
应用虚拟化可以使用一种客户端/服务器、两步流程的方法解决这些问题。这个是好消息,坏消息是这个流程不太容易理解。其中部分原因是因为像IT产业的很多术语一样,“应用虚拟化”被赋予过多的含义了。
最直观地来看,提到虚拟化的应用程序,就会认为是一个宿主在某个平台上的虚拟服务器。然而实际上是由于中间件存在的问题,这个情况不太可能出现。应用程序在操作系统和物理平台上运行,但是也使用到其它系统软件工具,如通信系统工作、数据库访问工具和图形用户界面等。比如,如果有一个用在Windows平台上的应用程序,需要在Linux平台上运行,就需要一个复杂的应用程序中间件集合,即所谓的“动态链接库(DLL:Dynamic Link Libraries)”;同样,如果试图在Linux平台上运行Windows DLL,也会遇到兼容性问题和相当多的性能问题。
当前很多应用程序虚拟化都基于双元素模型——一个客户端或者目标系统和一个宿主系统。宿主系统用来运行应用程序,有时也用来通过称作“sequencing”的进程构建所谓的“应用程序包(Application Package)”。在应用程序组件装载和运行的时候创建一系列“机器镜像”,这样的话就可以在创建镜像时保证注册表参数和配置参数都已经得到了处理。在使用应用程序的时候,这些应用程序组件就可以“流向”客户端系统。
由于这些镜像已经和注册表参数和配置参数无关了,所以在客户端就只需要一个兼容的应用程序接口(API)来提供操作系统正常运行所需要的机器镜像集合和中间件接口。在理论上,这就是整合应用程序和不兼容的软件、甚至硬件的原因。只要客户端系统能够模拟宿主系统的执行环境,任何程序都可以正常运行。但是在大多数情况下,为了保证应用程序的可用性最大化,硬件平台(x86)和软件操作系统(Windows)最好能够相同。
应用虚拟化的最大好处就是排除了配置上不兼容的常见问题,尤其是和注册表或者配置数据不兼容问题。很多公司都有应用程序和配置变量不兼容或者完全相冲突的问题,此时找到合适的应用程序就是主要问题了。应用程序虚拟化也能够辅助完成系统保护,因为不会使用受到破坏的系统库文件——流线化应用程序是独立的。
这个方法的问题出在难以对应用程序序列化,序列化可以从轻微不方便到高度复杂性。如果不打算广泛使用应用程序虚拟化技术的话,可能就没有必要花费精力序列化应用程序。另外一个需要考虑的问题是很多应用程序要么根本就没有次序,要么就是序列化之后就不能再正常运行。最好是有一个需要虚拟化的应用程序完整目录,在使用“序列化”这个概念之前,检查这些应用程序与“序列化”和“流线化能力”的兼容性。
对于跨一种操作系统多个版本的应用程序虚拟化,在业界的经验非常有限,因此需要考虑到即将发布的Windows 7的部署。知道虚拟化以何种方式支持新操作系统非常重要,开发人员在正式版本发行的较长一段时间会公布一个预发布版本,用来提供过渡时期的体验。为了安全起见,有必要考虑在任何操作系统的早期版本下所做的应用程序序列化和流线化工作都有可能在新的操作系统下必须重新序列化,并且宿主和目标或者客户端操作系统也必须相同。
应用程序虚拟化是有潜力价值的强大工具,并且一天天变得越来越成熟、越来越功能化、也越来越有用。该项技术也应该是任何一家企业在操作层节支的重要手段,并且需要留意技术方面的不断演进。
鼎峰胡佳雄
QQ.2881064155
Skype.live:2881064155