Executive Summary:
Microsoft’s SoftGrid is an application virtualization solution. Microsoft’s SoftGrid provides a sandbox-type environment called SystemGuard that lets virtualized applications run on users’ systems without requiring local operating system (OS) installation. The SystemGuard virtual application environment contains all the elements a virtualized application might need to access.

I'm always astounded by the sheer volume of technologies that exist just in the Microsoft infrastructure space. Deciding which technologies to make a priority, and determining which ones will make your life easier (including whether a technology might change how you manage and maintain your organization), is a constant process.

As the sidebar "The Benefits of Application Virtualization," explains, recent advances in client and server management and OS virtualization have made software deployment easier than ever, but problems with application compatibility and manageability persist. Application virtualization lets you run applications locally, which prevents server-based computing's resource wastage, single points of failure, and limitation to working online. Microsoft's SoftGrid application virtualization solution provides a sandbox-type environment called SystemGuard that lets applications run on users' systems without requiring local OS installation.

SoftGrid's Virtual Environment
SystemGuard is a virtual application environment that contains all the elements an application might need to access, such as files, registry information, COM objects, and environment information. Although SoftGrid-enabled applications don't require installation on the host OS, they do communicate with the OS in a controlled manner to avoid duplicating too much data in the virtualized space.

As Figure 1, shows, the application communicates with what it sees as normal OS facilities within the SystemGuard environment, with full read and write access. SystemGuard then communicates with the actual OS, using strict controls. Configuration information can be read but never modified. Profile and document data can be changed in the OS, which lets you save data and maintain an application's environmental preferences between sessions.

The virtual environment consists of several virtual elements for OS areas that applications use. For example, the Virtual Registry works as an overlay to the actual OS registry. If an application tries to read from the registry and the registry data isn't in the Virtual Registry overlay, the read request is passed to the OS, as Figure 2, shows. Write requests are always made into the Virtual Registry overlay. The same process works for the Virtual File System. For example, this overlay ensures that dynamic link libraries (DLLs) used by an application are always read from the SystemGuard environment first to avoid any conflicts with local versions. If an application relies on a service, the Virtual Services component lets the service function within SystemGuard, unknown to any other application running on the OS. Virtual subsystems also exist for the COM environment, .ini files, process environment, and fonts.

Overhead
SoftGrid's SystemGuard adds less overhead to your environment than you might think. Other than the disk space used to cache the application, which is generally less than for a locally installed application, a virtualized application uses less than 1 percent more CPU than a nonvirtualized application. This is because most of the additional processor usage occurs when SystemGuard first initializes and an application opens, not while the application is running. In addition, memory usage is actually lower for running virtualized applications versus nonvirtualized applications.

Memory overhead can be broken down into paged pool and nonpaged pool. Most applications operate within paged pool memory. Paged pool content can be paged to disk as necessary, and the memory used for a virtualized application is the same as for a locally installed application. The only additional memory used is 20MB for the SoftGrid client. Nonpaged pool memory is used for important OS information that can't be paged to disk.

Configuration data (e.g., registry data) is typically pulled into the kernel during computer start-up. As applications are installed, the registry grows and takes up more space, leading to longer boot times (for HKEY_LOCAL_ MACHINE and HKEY_CLASSES registry areas) or longer logons (for HKEY_CURRENT_USER areas).

For SoftGrid applications, nothing is written to the machine registry. Information needed by the application is loaded at runtime as necessary. Imagine having 40 applications installed locally but running only 10 of them—the registry would bloat significantly as nonpaged pool memory was used up. Running virtualized applications saves 75 percent of nonpaged pool memory.

Network bandwidth is also saved because SoftGrid pulls virtualized applications and components to the client on demand. Initially, the client has just an application's shortcut icon on the desktop. When an application is used, SoftGrid pulls the application down in a sequenced form, allowing very fast application start-up. Only the parts of the application that are needed are pulled down, which uses less disk space on the client.

Another interesting benefit is that when you use SoftGrid with terminal servers, the "therapeutic reboot" isn't necessary. SoftGrid has a highly contained execution footprint and performs an efficient garbage collection process when an application closes.

SoftGrid Components
The SoftGrid suite has five major components that let you create SystemGuard applications and deploy them to clients.

  1. System Center Virtual Application Server—Streams SoftGrid-enabled applications to clients and verifies whether a client is authorized for an application.
  2. SoftGrid Data Store—Stores information about the SoftGrid environment.
  3. SoftGrid Management Web Service— The interface between the SoftGrid Management Console and the SoftGrid Data Store. Uses Microsoft .NET Framework 1.1 or later and requires Microsoft IIS 5.0 or later with ASP .NET extensions enabled.
  4. SoftGrid Client—A locally installed service running on a user's machine that communicates with the virtual application server to receive the streamed application and cache it for use even when the client isn't connected to the network. The client also contains the SystemGuard environment for runtime virtualized application execution.
  5. SoftGrid Sequencer—A wizard-based tool that's used to create a streamable application from the original application media. This process will be familiar to users of software such as WinINSTALL, which creates a .msi file based on installing an application. The sequencing of an application actually consists of three phases: the package configuration, which is an information gathering stage; the application installation, during which the wizard monitors the OS for changes the application makes during installation, including file-system changes, component registration, and registry changes; and the actual launching of the application, which is important because on first use SoftGrid prioritizes the data to stream to the client based on what is first used when the application starts (known as Feature Block 1—FB1—of the stream) rather than waiting for the entire stream to send before the application can start.

Additional components are available that integrate with Microsoft's System Center Configuration Manager (SCCM) solution to let you use SCCM for distribution. In addition, a separate client is designed for terminal server–type environments (including Citrix). Although I don't have space to discuss these components, you should be aware of them in case you use SCCM or terminal servers in your environment.

Installation and Configuration
The first step in using SoftGrid is to install the System Center Virtual Application Server component, which has reasonable software and hardware requirements. A data store is required for storing information such as application usage, licensing, and server configuration. The data store can be hosted on SQL Server 2005 or SQL Server 2000, as well as on Microsoft SQL Server Desktop Engine (MSDE) in test environments. The data store doesn't need to be on the same server as the application, although it should be on the same local network.

A directory service such as Active Directory (AD) is also required for the SoftGrid suite to function. A Windows NT 4.0 domain is sufficient, but I'd be surprised if someone were forward thinking enough to use application virtualization but were still running NT 4.0. During installation, you must specify an account with read access to the directory service. You also need two global groups to identify SoftGrid administrators and users who can use SoftGrid's services. If all users in the domain need access to SoftGrid, you can add the Domain Users group to this global group.

You can install SoftGrid on Windows Server 2003 or Windows 2000 Server. The SoftGrid Management Console runs on Windows 2003 or Windows XP and requires .NET Framework 1.1 and Microsoft Management Console (MMC) 3.0, which is included in Windows 2003 R2 and can be downloaded from Microsoft for other OS platforms.

The SoftGrid System Center Virtual Application Server component requires a Pentium III 1GHz processor, at least 512MB of memory, and 200MB of disk space. The more applications you virtualize, the more disk space you'll need. You can use the Windows load-balancing functionality or hardware load balancers to install and balance multiple SoftGrid Virtual Application Server machines.

To protect the data store, don't use MSDE in a production environment. MSDE has limited recoverability and replication capabilities, as well as limited management options. If you're running multiple SoftGrid servers in an environment that requires high availability, use SQL Server and Windows clustering services to remove any single points of failure.

SoftGrid's documentation includes detailed installation instructions. Be sure that you've read and met the prerequisites of creating an AD account and groups for SoftGrid to use, as Figure 3 shows. To reduce administrative overhead, you can set the AD account password to never expire. However, doing so might cause security problems. Establish a routine for regularly changing the password. Then, you can use the SoftGrid Management Console's Account Authority property settings to easily update the password, as Figure 4 shows.

During installation, you're prompted for various pieces of information, including the following:

  • Components to install (you can have a distributed environment with various server components spread over multiple servers)
  • Whether to use SQL Server or MSDE (you need to specify the database server if you use SQL Server; MSDE is installed by default)
  • AD account to use, including the permission groups you created
  • The path to use for storing application content (which by default is C:\Program Files Softricity\SoftGrid Server\content)

After installation is complete, the SoftGrid Management Console is available in the Administrative Tools program group. On first execution, the Management Console asks for the SoftGrid system to connect to. SoftGrid operates over port 80 and requires the name of the SoftGrid Management Web Service. As I already explained, the Management Console never communicates with the data store directly; all communication occurs through the Management Web Service.

More to Come
Application virtualization is a hot trend. Microsoft's SoftGrid lets you easily virtualize applications without requiring a lot of overhead. In addition, the SystemGuard environment lets applications run simultaneously without encountering any compatibility issues. To test the product, I experimented with virtualizing Microsoft Office XP and Office 2003; I found the process to be very smooth and intuitive. In a subsequent article, I'll explain how to use SoftGrid to virtualize applications.