Export (0) Print
Expand All

Architecting the Virtual Application Infrastructure at Microsoft

Published: June 2010

The following content may no longer reflect Microsoft’s current position or infrastructure. This content should be viewed as reference documentation only, to inform IT business decisions within your own company or organization.

Microsoft Application Virtualization (App-V) helps Microsoft provision, distribute, and manage applications in its global network infrastructure. Application Virtualization reduces costly application-management processes, accelerates application and operating system deployments, and creates a foundation for a software-services and management infrastructure.

Download

Download Technical Case Study, 275 KB, Microsoft Word file

Situation

Solution

Benefits

Products & Technologies

Microsoft needs a more efficient and centralized method to manage application deployment, updates, and removal.

Microsoft Application Virtualization 4.6 with Configuration Manager 2007 R2 SP2 provides an efficient and cost-effective way to manage application tasks through the entire application-management life cycle.

  • Microsoft Information Technology never installs virtual applications on a client, which minimizes compatibility issues.
  • Microsoft targets virtual applications to clients, and makes them available automatically by publishing application shortcuts and file-type associations.
  • Integrating Configuration Manager with Application Virtualization provides additional scalability and availability options for application-virtualization clients.
  • Microsoft Application Virtualization 4.6
  • Microsoft System Center Configuration Manager 2007 R2 SP2

Situation

To increase efficiency and lower costs associated with the application management life cycle, Microsoft Information Technology (Microsoft IT) uses Microsoft Application Virtualization version 4.6 and Microsoft System Center Configuration Manager 2007 R2 SP2 to deliver virtual applications to network clients. App-V is part of the Microsoft Desktop Optimization Pack (MDOP), and deploys and manages virtual applications on client computers. Virtual applications do not install application files or make changes to the local registry. Once Microsoft IT deploys a virtual application, it runs in an isolated environment that prevents application conflicts and significantly reduces costs associated with application-compatibility testing and troubleshooting.

Using App-V and Configuration Manager together centralizes management processes that relate to provisioning, deployment, upgrading, updating, and removal of software applications on a client. An organization that integrates App-V with Configuration Manager can utilize the inherent deployment infrastructure that the Configuration Manager architecture provides, which enables the organization to continue realizing its return on investment (ROI) for its existing infrastructure. Additionally, the organization will benefit from a single management solution for both physical and virtual applications, which scale throughout an enterprise network.

This case study describes the challenges that organizations often face when managing applications using traditional application management processes. It also details, for IT professionals and technical decision makers (TDMs), how Microsoft is addressing these challenges by implementing an application-virtualization solution that includes App-V 4.6 and Configuration Manager 2007 R2 SP2 integration. Additionally, this case study discusses implementation considerations that provide the foundation for a successful application-virtualization solution.

Note: This case study assumes that readers have a general understanding of Configuration Manager 2007 architecture concepts. Readers that do not have this prerequisite knowledge should refer to the System Center Configuration Manager TechCenter at http://technet.microsoft.com/configmgr/default.aspx.

Identifying the Situation

The application management life cycle has many phases, and there are specific tasks that incur either indirect or direct costs that an organization should consider when calculating the total cost of owning a software application. These phases include:

  • Acquiring or developing the application. For both traditional and virtual application solutions, acquiring or developing the application incurs licensing and development costs that an organization must figure into the total cost of ownership.
  • Application packaging. Packaging an application for deployment often is a timely process that can be costly, depending upon the application's complexities. Many of the traditional packaging costs are due to the time and resources that it takes to package an application, troubleshoot installation and compatibility issues for standard users, and ensure that a package is portable between operating-system versions. An organization also may have to repackage applications to support specific deployment mechanisms. For example, one deployment mechanism may require Microsoft installer (MSI) files, whereas another deployment mechanism may use standard Setup.exe installation files.
  • Application provisioning. Preparing and provisioning an application for deployment includes ensuring that the application includes all required features. This may include providing default configuration settings, and enabling or disabling specific functionality. With traditional packaging, if a specific feature must be added to an application, the application typically has to be repackaged.

    Note: During the Microsoft IT Application Virtualization pilot, Microsoft determined that the costs of packaging and provisioning an application for the App-V environment were approximately 6 percent lower than packaging a traditional application. This was due to a decrease in application-compatibility issues, which reduced the number of times a package had to be resequenced.

  • Application deployment. Costs that relate to application deployment depend on the infrastructure and tools that an organization uses to deploy and install the application on client workstations. If end users experience problems with the application installation, help-desk interaction increases the deployment's total cost, including additional administrative costs for the help desk to maintain necessary documentation and knowledge-base articles. In many cases, applications may cause unforeseen compatibility issues with other applications or operating-system components, which can result in costly user downtime while IT addresses the issues.

    Note: At Microsoft, users typically find, install, maintain, and remove applications on their workstations. Microsoft also encourages users to test new applications by participating in beta programs, which Microsoft employees refer to as "dogfooding." Microsoft's costs of deploying an application tend to be higher because of this user self-reliance and because IT has to address the resulting compatibility issues. Application Virtualization addresses both of these issues by providing targeted application deployment and enabling multiple versions of applications to run in isolated environments.

  • Application servicing. Servicing a traditional application typically results in an organization having to repackage and test the application to ensure that the update does not affect the application negatively. The organization also must deploy the application update to existing installations, which often means that users have to reboot their workstations so that updates take effect. In addition to the time and resources it takes to repackage updated applications, reboots can incur direct costs to an organization. For example, if a typical application update requires an operating system reboot that takes five minutes, then deploying the application to 1,000 clients equals approximately 83 hours of lost productivity.

    Note: Application Virtualization enables an updated application to deploy seamlessly to users, who can continue working while application updates occur. Users no longer have to wait for an installation to finish or have to wait while rebooting after the updated application installs.

  • Application removal. Removing a traditional application can be very time consuming and costly. Administrators often must develop or acquire complex removal scripts to ensure complete removal of the application's files and registry settings. In extreme cases, administrators have to rebuild entire workstations to remove remnants of applications fully.

    Note: A virtual application is never installed on a client workstation, so when a client no longer needs, or has permission, to run it, an administrator simply modifies client permissions to remove access to it.

Solution

Microsoft implemented an App-V 4.5 and Configuration Manager 2007 R2 pilot project to address the challenges that traditional application management poses, and to determine the benefits and validate the tasks of application virtualization. An organization can deploy App-V 4.5 in several architectural scenarios, which depend primarily on the organization's business requirements, size, network requirements, and availability of a Configuration Manager 2007 R2 infrastructure or other third-party application-distribution system. With, the release of App-V 4.6 and Configuration Manager 2007 R2 SP2, the infrastructure and client were upgraded to the latest releases to support X64 bit Operating systems and Windows 7.

Overview of Microsoft Application Virtualization 4.5

App-V 4.5 provides infrastructure and services to support both small and large organizations, and includes several implementation options, such as the Full Infrastructure, the Stand-alone option, or App-V 4.5 integration with Configuration Manager 2007 R2. The following sections describe these implementation scenarios.

App-V 4.5 Full Infrastructure

The App-V Full Infrastructure contains several server-based components and options for supporting network clients. Table 1 provides an overview of the server and client components.

Table 1. App-V Full Infrastructure Components

Infrastructure Components

Description

Application Virtualization Sequencer

This component monitors an application's installation to create a sequenced virtual application package that is delivered to the user. It contains the necessary information that the App-V client requires to run the application in a virtual environment.

Application Virtualization Management Server

This component streams sequenced content to client computers by using the Real-Time Streaming Protocol (RTSP/RTSPS). It also publishes the shortcuts and configuration data (file-type associations, etc.) to clients through an XML-based configuration file, and provides features such as Active Upgrade and License management.

Application Virtualization Streaming Server

This component hosts App-V sequenced packages and provides streaming functionality to clients in branch offices that may not have an adequate wide area network (WAN) connection to the office that contains the App-V Management Server. This component does not contain the App-V Management Console or the App-V Management Web service, or the Desktop Configuration Service, and it cannot publish shortcuts to App-V clients. It also uses HTTP/HTTPS for streaming.

Application Virtualization Data Store

A Microsoft SQL Server® database that stores information, including application records, application assignments, and the groups that are responsible for managing the App-V environment.

Application Virtualization Management Console

This is a Microsoft Management Console (MMC) 3.0 snap-in administration console, which an administrator installs in the Application Virtualization Server or on a separate administration workstation.

Application Virtualization Web Service

This Internet Information Services (IIS)–based component manages communication between the Management Console, App-V Management Server, and the Data Store.

Application Virtualization Client

This component is available as App-V Desktop Client or App-V Terminal Services Client. Both clients create and manage the virtual environment in which virtualized applications run.

Note: Application streaming also can use the server message block (SMB) protocol from a standard file server or the HTTP/HTTPS protocol from a server that contains the IIS Web server role.

App-V 4.5 Stand-Alone

The Application Virtualization Sequencer provides an option to create a stand-alone MSI package that contains all of the metadata and files that a virtual application requires to run on a stand-alone App-V client. An administrator can provide the MSI-wrapped application package to the App-V client via DVD or a universal serial bus (USB) flash drive, or can integrate it with an enterprise software delivery system. If an organization chooses to use a stand-alone virtual application, the App-V server infrastructure components are not necessary.

App-V 4.5 Integration with Configuration Manager 2007 R2

Configuration Manager 2007 R2 provides built-in support for virtual application deployment. An administrator advertises sequenced virtual-application packages to collections of users or systems, and then deploys them using the standard Configuration Manager architecture. Benefits for integrating Configuration Manager and App-V 4.5 include:

  • Administrators can manage both physical and virtual applications using a single management console and management infrastructure leveraging known workflows. This results in reduced complexity and the need to learn a new system.
  • The inherent scalability of Configuration Manager distribution points provide more efficient distribution of virtual applications, without having to use App-V management or streaming-server components.
  • Configuration Manager clients, by default, download virtual applications from a Distribution Point and run them from the local cache. Administrators also can configure virtual applications to stream to the client from a nearby distribution point using HTTP/HTTPS.
  • An administrator can target virtual-application delivery to specific collections that contain users or computer systems, and can schedule application delivery to ensure that applications are available after a specific time.
  • Administrators can leverage standard Configuration Manager features, such as distribution-point failover, data throttling using Background Intelligent Transfer Service (BITS), enhanced reporting, and support for internet-facing clients and branch-caching scenarios.
  • Administrators can collect inventory and asset intelligence information about the virtual application's version, to which machines or users it is deployed, and how often it is used.
  • Administrators can leverage the automated operating-system deployment capabilities of Configuration Manager to deliver virtual applications as part of their operating-system deployment and upgrade efforts.

Application Virtualization Sequencing

The Application Virtualization Sequencer monitors a standard application installation and captures the setup process so that it can reproduce the application within the App-V client's virtual environment. When the App-V Sequencer sequences an application, it generates several files. Table 2 describes these files.

Table 2. Sequenced Package Files

Infrastructure Components

Description

.SFT File

This file contains all of the application files, dependencies, and configuration information, and may contain more than one application (such as application suites). This file can be quite large.

.ICO File

This file provides the shortcuts on the App-V client.

.OSD File

This file configures and controls how a virtual application launches and runs.

.SPRJ File

This project file describes the applications that the sequenced package contains.

Manifest File

This XML file contains package information that enterprise software-deployment solutions use.

After the sequencing process is complete, the administrator imports and configures the sequenced package files to provide virtualized application functionality in the App-V Full Infrastructure scenario or the Configuration Manager integrated scenario.

Note: Microsoft IT determined that an organization can minimize sequencing costs significantly if the application owner is involved directly in the sequencing process. The application owner contains extensive information about how the traditional application should work, and can provide valuable insight on necessary dependencies. If a package has complex or unknown dependencies, an organization must remediate each dependency to ensure a positive user experience with the virtual application.

Microsoft's App-V Solution Strategy

In September 2007, Microsoft began a phased pilot project to implement App-V 4.5 beta within the production environment. Microsoft wanted to validate the App-V 4.5 functionality, and had additional goals, including:

  • Deploy the App-V client to 40,000 systems by the release-to-manufacturing (RTM) date.
  • Deploy at least 40 applications by the RTM date.
  • Ensure that for 80 percent of virtualized applications, the launch time is no greater than three times how long it takes to launch the local-application equivalent.
  • Document bug issues and submit design-change requests to include in the App-V 4.5 release.
  • Integrate Configuration Manager 2007 R2 when it becomes available.

Note: Before the pilot project, Microsoft implemented a proof-of-concept using Microsoft SoftGrid® 4.2 technology, which Microsoft acquired with its acquisition of Softricity, Inc. Microsoft updated this configuration and infrastructure to the newly branded Microsoft App-V 4.5, and used it for subsequent phases of the pilot project.

Phase 1 - App-V 4.5 Full Infrastructure

Microsoft began the App-V pilot project by implementing the Full Infrastructure model. Table 3 provides a summary on the hardware that Microsoft used initially.

Table 3. App-V 4.5 Hardware

App-V Component

Hardware Configuration

Data Store (SQL Server)

HP DL385: (1x2) AMD Opteron/2.2 gigahertz (GHz); 2 gigabyte (GB) random access memory (RAM) each; 68.8 GB total hard-drive capacity; 18 GB utility storage; integrated lights out (iLO); redundant power supplies; and redundant fans.

Operating System: Windows Server® 2003

Web Service (IIS Server role)

HP DL385: (1x2) AMD Opteron/2.2 GHz; 1 GB RAM; 68.8 GB total hard-drive capacity; 18 GB utility storage; iLO; redundant power supplies; and redundant fans.

Operating System: Windows Server 2003

Management Server (File Server)

HP DL385: (1x2) AMD Opteron/2.2 GHz; 4 GB RAM; 68.8 GB total hard-drive capacity; 18 GB utility storage; iLO; redundant power supplies; and redundant fans.

Operating System: Windows Server 2003

Note: For additional information on sizing the App-V infrastructure for your organization, see the Application Virtualization 4.5 Documentation at http://technet.microsoft.com/appvirtualization/cc843994.aspx.

The initial pilot project had 300 volunteer users accessing approximately 15 applications, including Adobe Acrobat, Microsoft Office Visio® drawing and diagramming software, and internal Microsoft utilities.

Microsoft controlled application access by creating an Active Directory® Domain Services security group for each application. Users then had to add their user accounts to the appropriate security groups to access applications. Once the App-V Web service recognized the security group permissions, it deployed shortcuts and file-type associations to the client computer automatically. 

Phase 1 grew from 300 users to more than 1,200 volunteer users by February 2008, and at this phase's end, Microsoft moved the Management Server and Web Service components to two separate virtual machines on a single host server. This gave Microsoft a significant cost benefit by minimizing the necessary physical hosts for the App-V implementation. The SQL Server data store remained on a physical host server.

Phase 2 - Integration with Configuration Manager 2007 R2

The beta release became available in February 2008, and Microsoft moved into the pilot's second phase, which saw major changes in application delivery to the client. Integrating Configuration Manager with App-V does the following:

  • No longer requires the use of App-V infrastructure components, including the App-V Management Server, the App-V Streaming Server, the App-V Web Service, or the App-V Management Console. Administrators perform all App-V management from the Configuration Manager console and can completely leverage the existing Configuration Manager infrastructure.
  • Enables application delivery using Configuration Manager download and execute capabilities, or streaming from enabled distribution points using HTTP/HTTPS.
  • Delivers applications through a "push" rather than a "pull" method.

Phase 2 targeted a specific Configuration Manager site containing approximately 5,000 clients. Microsoft used the following high-level process to update and migrate clients taking part in the virtual application pilot:

  1. Created a query-based collection for computers that were taking part in the pilot.
  2. Targeted a mandatory advertisement to install the App-V virtualization client to the collection. Microsoft limited this advertisement to 32-bit Windows® XP or Windows Vista®–based computers with at least 5 GB of hard-disk space available. The 5-GB limit minimized the risk that a client would have low disk space and not be able to receive critical updates.
  3. Enabled the Allow virtual application package advertisement feature on the Advertised Programs Client Agent.
  4. Enabled the existing Distribution Points to support Application Virtualization.
  5. Imported a sequenced application into the Configuration Manager environment, and deployed the virtual application to clients. As a proof-of-concept, Microsoft deployed Adobe Reader as a mandatory application to users.

Note: When an organization enables the Allow virtual application package advertisement option, Configuration Manager controls the Application Virtualization client, and removes all virtual-application packages that were deployed previously. It is important to prepopulate collections and preconfigure virtual-application packages before enabling the virtual-application package advertisement option. Administrators then can ensure that applications deploy as quickly as possible to clients after the initial cache clears.

When the Phase 2 pilot was complete, approximately 10,000 to 15,000 users had access to virtual applications from the Configuration Manager environment.

Phase 3 - App-V 4.5 and Configuration Manager 2007 RTM Releases

Phase 3 incorporated the RTM releases of App-V 4.5 and Configuration Manager 2007, and the user base receiving the mandatory App-V 4.5 client and Adobe Reader package increased to approximately 47,000 users.

Upgrading to App-V 4.6

In July 2009, Microsoft began a phased pilot project to implement App-V 4.6 beta within the production environment. Microsoft wanted to validate the App-V 4.6 functionality, and had additional goals, including:

  • Validate App-V client support for 64-bit Windows OS’s
  • Deploy the App-V client to 40,000 systems by the release-to-manufacturing (RTM) date.
  • Document bug issues and submit design-change requests to include in the App-V 4.6 release.
  • Integrate Configuration Manager 2007 R2 SP2

Note: Microsoft updated the existing App-V 4.5 and Configuration Manager 2007 R2 configuration and infrastructure to the newly branded Microsoft App-V 4.6, and used it for subsequent phases of the pilot project.

App-V 4.6 - Integration with Configuration Manager 2007 R2 SP2

App-V 4.6 introduced support for 64-bit clients. The beta release became available in July 2009, and Microsoft implemented a phased pilot to include as many as 40,000 machines by RTM. The pilot included upgrade of a percentage of existing 4.5 clients plus additional 32- and 64-bit Windows OS clients, integrating with Configuration Manager 2007 R2 SP2 beta.

Microsoft used the following high-level process to update and migrate clients taking part in the virtual application pilot:

  1. Created a query-based collection for computers that were taking part in the pilot.
  2. Targeted a mandatory advertisement to install the App-V virtualization client to the collection. Microsoft included 32-bit and 64-bit Windows® XP, Windows Vista®, and Window 7®–based computers with at least 12 GB of hard-disk space available. The 12-GB limit minimized the risk that a client would have low disk space and not be able to receive critical updates.
  3. Enabled the Allow virtual application package advertisement feature on the Advertised Programs Client Agent.
  4. Enabled the existing Distribution Points to support Application Virtualization.
  5. Imported a sequenced application into the Configuration Manager environment, and deployed the virtual application to clients. As a proof-of-concept, Microsoft deployed Adobe Reader as a mandatory application to users.

Note: There was no significant change made to the App-V 4.5 infrastructure for this pilot. The purpose was to validate 64-bit support in the client, and integration compatibility between App-V 4.6 and Configuration Manager 2007 R2 SP2.

App-V 4.6 and Configuration Manager 2007 R2 SP2 RTM Releases

At RTM releases of App-V 4.6 and Configuration Manager 2007 R2 SP2,  the user base receiving the mandatory App-V 4.6 client and Adobe Reader package increased to approximately 122,000 users.

Configuration Manager Design Considerations

During the Configuration Manager integration phase, Microsoft considered two methods for delivering virtual applications to clients: streaming delivery, and download and execute delivery. Each method provides advantages and disadvantages for effective application virtualization. The following sections describe the two methods.

Streaming Delivery

Streaming delivery occurs when the App-V client streams virtual applications from a distribution point that an administrator enables to support application-virtualization streaming.

When an administrator targets a client to receive a virtual application, the Configuration Manager client receives the advertisement and passes it to the App-V client. The App-V client then creates the program shortcuts and registers the file-type associations. The application does not stream until the user clicks one of the program shortcuts to start the application.

After the user clicks the program shortcut, the App-V client streams the application package to the client's App-V client cache in a set of feature blocks. After the first feature block streams to the local App-V client cache, the application starts. The application continues streaming in the background until it caches fully.

During the App-v 4.5 pilot, Microsoft discovered that streaming delivery works well when clients have a strong connection to Configuration Manager Distribution points. Additionally, application-delivery and virtual-application updates were seamless from the client's viewpoint, since the distribution point streams packages dynamically. However, streaming required additional storage space on the distribution point. Application streaming requires two copies of the .SFT file, one to support the streaming feature and the second to support updates.

Download and Execute Delivery

Another option for deploying virtual applications is to use the Download and Execute delivery method. When an administrator targets a client to receive a virtual application, the Configuration Manager client receives the advertisement, and then downloads the virtual application package to the local Configuration Manager Client Cache. The Configuration Manager also registers the application with the App-V client, which then creates the program shortcuts and file-type associations.

When a user clicks on a program shortcut, the Configuration Manager client calls the App-V client to launch the application. The App-V client streams the application from the local Configuration Manager cache into the App-V client cache, and then starts the application.

The primary advantage of the Download and Execute delivery option is that a targeted client system always has the full application in its Configuration Manager client cache. This ensures that when a user launches an application while working offline, all of the application's feature blocks are available locally. This also supports Internet-facing clients, unreliable network connections, and clients that do not connect consistently to the network.

The main disadvantage to this delivery option is that the client may store three copies of the .SFT file. For example, the App-V client places a copy of the .SFT file in the Configuration Manager client cache, and locks or pins the cache as long as the client advertisement exists. A second copy of the SFT file goes into the App-V client cache for use during the application's launch. When an application update occurs, and while the App-V client creates a new .SFT file to incorporate the updates, it also creates a third copy of the .SFT file temporarily.

Note: For more information about integrating App-V and Configuration Manager, refer to "Virtual Application Management with Microsoft Application Virtualization 4.5 and System Center Configuration Manager 2007 R2" at http://download.microsoft.com/download/f/7/8/f784a197-73be-48ff-83da-4102c05a6d44/App-V_and_ConfigMgr_Whitepaper_Final.docx.

Benefits

The App-V pilot project helped Microsoft understand the benefits of application virtualization. Most tasks within the application-management life cycle experience either direct or indirect cost savings because application deployment and removal are relatively simple. Microsoft realized the following benefits:

  • Using a targeted approach to application deployment and management removes an organization's reliance on the end user. Organizations can deploy applications that perform a specific job role quickly, and update them efficiently.
  • App-V never installs applications on the local workstation, which minimizes application-compatibility issues with other applications and operating-system services. However, administrators can configure applications to interact with the local system or other applications.
  • Using App-V to deploy or remove access to a virtual application is significantly faster than the traditional installation processes. When a user has permissions to access a virtual application, it is available immediately and does not require a system reboot. When a user no longer has permission to access a virtual application, an administrator can remove all permissions and shortcuts just as quickly.
  • Virtual applications may increase beta testing by users for new versions of applications, without impacting their existing application installations, operating-system settings, or productivity. An organization can deploy a beta application virtually, without interfering with production applications and causing user downtime. Virtual applications also minimize the hardware that an organization requires to support virtual machines and alternate operating-system configurations.
  • Applications that an organization deploys within a virtual environment do not require client reboots, and an administrator can update them seamlessly on the client.
  • When an organization integrates App-V with Configuration Manager 2007 R2, it realizes all benefits of application virtualization without an additional management infrastructure.
  • The flexibility of using either a streaming delivery method or the "download and execute" delivery method provides organizations options for supporting both internal and offline user scenarios.

Conclusion

Deploying Application Virtualization gave Microsoft the ability to evaluate the tasks and develop the processes that a more efficient application-management process requires. Integrating with Configuration Manager 2007 R2 SP2 allows an organization to leverage the existing software-deployment environment, and it provides additional availability and scalability options for virtual application requirements. 

For More Information

For more information about Microsoft products or services, call the Microsoft Sales Information Center at (800) 426-9400. In Canada, call the Microsoft Canada information Centre at (800) 563-9048. Outside the 50 United States and Canada, please contact your local Microsoft subsidiary. To access information via the World Wide Web, go to:

http://www.microsoft.com

http://www.microsoft.com/technet/itshowcase

http://www.microsoft.com/systemcenter/appv/default.mspx

http://www.microsoft.com/systemcenter/configurationmanager/en/us/default.aspx

http://technet.microsoft.com/en-us/windows/bb899442.aspx

© 2010 Microsoft Corporation. All rights reserved.

This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. Microsoft, Active Directory, SoftGrid, SQL Server, Visio, Windows, Windows Server, and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft