In the past few years, client and server management have changed dramatically. In the "old days," file servers housed installation software, and administrators installed applications manually or used logon scripts to deploy them. Now, Active Directory (AD) and Group Policy let you more easily assign and publish applications to computers, and Microsoft Systems Management Server (SMS) provides an even better solution, with more granular and sophisticated software deployment and progress reports.
Although these technologies help deploy software, application compatibility and manageability concerns remain. (For example, how do you patch an application? Will the application work if another application is installed? Is the application compatible with Vista?) Whenever you install an application, components are registered to the machine; executable files, DLLs, and other files are copied to the file system; and information is written to the registry. When you upgrade or uninstall an application, information is left behind. Over time, computers become polluted with leftover files, registry information, and registered components that can cause compatibility problems.
Virtualization has also improved recently. Traditionally, OS virtualization has been useful for two key scenarios: consolidation and testing. In the past, each major application ran on its own server, which was expensive from both a hardware and a licensing perspective. Now, virtualization lets you run multiple "sandboxed" OSs on one physical server. Application compatibility problems don't occur because although several applications are running on a server, each application is running on a virtual OS, with its own hard disk, registry, processor, and memory resources. For testing, virtualization lets you run multiple OSs (e.g., Windows XP, Windows 2000 Server, Windows 95, and Vista) all on the same system, as well as run multiple test environments concurrently.
Running applications in a virtual OS sounds like it would solve any application compatibility problems—which might work for one application, but what about ten? You need to consider the overhead, memory usage, and disk space required. In addition, you must manage, patch, and protect each OS instance. And although applications are sandboxed in the OS, the OS's entire environment is also sandboxed, which makes it difficult to save documents or data created in the application to the host computer's local file system.
The best solution is to virtualize applications, which lets each application run locally on the computer. This solution is different from terminal server–style application publication (also known as server-based computing), in which applications run on the terminal server, with output sent to users' computers. In server-based computing, single points of failure occur because applications reside on the terminal server. In addition, resources are wasted because the workload occurs on the terminal server, while users' computers sit idle. Also, users who are working offline can't run any applications that are hosted on a terminal server.
Application virtualization prevents these problems. A virtualized application runs on the user's machine like a regular application, but in a sandbox environment that prevents installation to the local OS. Microsoft's SoftGrid is an application virtualization solution.