Features and Capabilities
Windows Server AppFabric hosting features enhance the hosting of .NET Framework version 4 Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) services in the Windows Process Activation Service (WAS) by providing the following capabilities:
Simplified deployment and management of WCF and WF services hosted in WAS
Simplified configuration of persistence for durable workflows
Customizable tracking profiles that allow you to capture only the data you need
Dedicated, queryable storage for tracked data
Windows PowerShell cmdlets that allow you to create custom management scripts
Customizable monitoring of hosted services
Supports Internet Protocol Version 6 (IPv6) through Windows IPv6 stack
Automatically starting applications to minimize service latency
This feature requires Windows Server 2008 R2 or Windows® 7.
AppFabric caching features provide a distributed in-memory cache platform for developing scalable, available, and highly-performant applications. The following are the key features of the AppFabric caching features are:
Caches any serializable CLR object and provides access through simple cache APIs
Supports enterprise scale: tens to hundreds of computers
Configurable to run as a service accessed over the network
Supports common cache configurations
Supports dynamic scaling by adding new nodes
A high availability feature which supports continuous availability of your cached data by storing copies of that data on separate cache hosts
Automatic load balancing
Integration with administration and monitoring tools such as Event Tracing for Windows (ETW) and System Center.
Provides tight integration with ASP.NET to be able to cache ASP.NET session data in the cache without having to write it to source databases. It can also be used as a cache for application data to be able to cache application data across the entire Web farm.
Unsupported Scenarios and Configurations
The .NET Framework 4 allows you to define workflow services using XAML (eXtensible Application Markup Language). AppFabric is designed to work with .NET Framework 4 workflow services. This includes workflow services that are activated either by using an SVC file, or through the new configuration-based activation feature which allows a Web service to activate without an SVC file. For more information on configuration-based activation, see Configuration-Based Activation. For more information on defining a workflow as a service using XAML, see WCF And WF Services In The .NET Framework 4 And “Dublin” .
However, WCF and WF services hosted in Windows Process Activation service (WAS) offer the following service activation and configuration options that are not supported by AppFabric.
Services that are part of a pre-compiled Web application are not supported. Pre-compilation is a mechanism used by ASP.NET to improve Web site performance. When the ASP.NET compiler tool encounters the resources of a Web application on the first request, the content of common file types used for activation (such as ASPX or SVC) are compiled into an assembly. It is then replaced with auto-generated text. This ensures that the file remains the physical activation entry point (and URL) even though its content is no longer needed. The AppFabric tools depend on parsing the SVC file content to discover and manage service configuration. After the SVC content is replaced with auto-generated text by ASP.NET compiler, AppFabric can no longer be used to list and manage these services. As mentioned previously, a .NET Framework 4 Workflow service defined using XAML that is a part of a pre-compiled ASP.NET application will continue to work in Windows Server AppFabric. For more information, see ASP.NET Web Site Pre-compilation.
Services that are registered and activated at runtime using the RouteTable.Routes.Add() feature are not supported. The .NET Framework RouteTable class is used to store the URL routes for an application. When an ASP.NET application handles a request, the application iterates through the collection of routes in the Routes property to find the first route that matches the format of the URL request. For more information, see the RouteTable class.
Using the RouteTable for service registration is a common pattern for RESTful services that require the classic REST-style URLs. For example, http://server/AutoService/Car/123-345-678.
AppFabric Hosting Features
AppFabric hosting features rely on WAS to provide the hosting environment for WCF and WF services, and extends the IIS Management console to provide management and configuration tools for WAS-hosted services. If you have existing WCF or WF services hosted in WAS, AppFabric Hosting Services allows you to enumerate and manage these services. However, if your services are hosted in a managed Windows service or a standalone application, you must migrate the services to the WAS hosting environment before you can use AppFabric hosting features with these services.
If you are currently hosting services in a host other than WAS, we recommend that you carefully evaluate the features and capabilities of AppFabric, as well as those of the WAS hosting environment, before deciding to move your services to WAS. For more information about the hosting options for WCF and WF services, see Hosting Services (http://go.microsoft.com/fwlink/?LinkId=166423).
Current application deployment methods include the use of Xcopy or the use of deployment packages based on technologies such as Windows Installer. Xcopy moves application artifacts from the folder corresponding to a virtual directory to a destination folder. Deployment packages are used to deploy additional artifacts, such as certificates, user accounts associated with an application pool, registry settings, and database data. While existing deployment technologies are suitable for single-server deployments, Xcopy is often too simple while the creation of a Windows Installer package is often too complex and can require specific development knowledge to implement. Neither is particularly suited to deploying a service to a server farm for scale-out purposes.
The IIS Web deployment tool, MSDeploy, provides simple package-based deployment functionality that can be used from a command line, the IIS Management Console, or Visual Studio 2010. MSDeploy can also be used to synchronize one computer to another.
A key component of application manageability is the ability to apply configuration options that affect application behavior without changing the underlying code. AppFabric provides the following functionality for configuration of hosted applications and services:
Simplified application configuration: The guiding principle used by AppFabric hosting features is that only the configuration settings in the Web.config files are used for administration purposes. The settings defined in the source code are not accessible and cannot be modified by AppFabric administrative tools. This principle applies to both imperative code like C# and declarative code such as XAML. Even if the code itself is easily visible, which is the case with XAML, the settings are still treated as locked and are inaccessible.
To simplify configuration management, AppFabric applies default settings for each server node that is configured by setup. These settings are defined in the root Web.config file and can be used by any hosted application. An administrator may also apply site or application-specific configuration settings via the site or application Web.config file to apply more precise tracking or persistence behavior for hosted applications.
WCF configuration options provided through the IIS Management console: Current WCF configuration using the WCF Service Configuration Editor tool (SvcConfigEditor.exe) provides challenges for both developers and IT Professionals. Particularly, use of the Service Configuration Editor requires a fairly thorough understanding of the WCF service model, which introduces additional overhead for IT Professionals.
AppFabric improves this experience by extending the familiar IIS Management console with the IIS Manager extensions for WCF and WF to accomplish the most common configuration tasks. Examples include enabling tracing, defining application throttling parameters, and enumerating all running services that can be accomplished using the IIS Manager extensions. Other configuration options can be applied using the AppFabric Configuration Wizard or the IIS Configuration Editor available with IIS 7.0.
WF persistence configuration: To support the concept of durable workflows for long-running business processes, WF services can persist to a persistence store and resume processing when a specific event, such as receiving a message, occurs. However, configuring persistence has remained largely a manual process that requires the creation of a persistence service that is backed by a durable storage mechanism.
To simplify the configuration of workflow persistence and to support server farm configurations, AppFabric Hosting Services provides a SQL Server-based persistence store and a SQL persistence provider that can be leveraged by any durable workflow hosted within WAS. AppFabric also enables you to use a custom persistence store and provider of your own choosing. AppFabric allows the configuration of either default persistence settings that are inherited by all hosted applications, or persistence settings that are specific to an individual application.
Windows PowerShell cmdlets: While providing configuration and management options within the IIS Management console allows easy administration of hosted applications, it is often desirable to create scripts that automate multi-step configuration and management scenarios.
To support the creation of scripting solutions, AppFabric hosting features include the ApplicationServer module for Windows Powershell, which contains cmdlets that provide the same level of access to configuration and management of hosted applications as the tools provided in the IIS Management console.
In addition to simplifying the deployment, management, and configuration of hosted services, AppFabric Hosting Services also makes it easier to monitor your applications by capturing tracing information emitted at runtime and storing it in the monitoring database. Once captured, this information is then available in the Dashboard feature in the IIS Management console, or directly from the monitoring database.
The information gathered from an application can be customized through the use of tracking profiles to capture information such as activity state (start, stop, faulted), the contents of specific variables within a workflow, or custom tracking information emitted by the application through the use of a custom tracking record.
AppFabric Hosting Services works with WAS to provide a robust hosting environment for middle-tier WCF and WF applications. Some of the features provided by WAS are:
Message-based activation of applications and worker process. Applications start and stop dynamically in response to incoming work items that arrive using HTTP and non-HTTP network protocols.
Robust application and worker process recycling to maintain the health of running applications.
Centralized application configuration and management.
In addition to the features traditionally provided by WAS, .NET Framework 4 provides enhancements in the area of activating a hosted service. Activation of a service built using .NET Framework 3.5 requires the creation of a separate “service file” (with an .svc extension) that must be deployed with the service. Furthermore, if the service uses WF, an additional Extensible Application Markup Language (XAML) file (with a .xaml extension) has to be created and deployed with the service. .NET Framework 4 accommodates direct activation of a WF service without having to create and deploy a separate .svc file. The XAML file must have the extension .xamlx to accommodate direct activation of the associated WF application by the host. Both WCF and WF applications can be activated directly from the Web.config file without the requirement for a separate .svc file. For more information about this and other features of the WAS hosting environment, see Hosting (http://go.microsoft.com/fwlink/?LinkId=166403).
While simplified activation of a hosted service removes the requirement for a service file, it does not address the mechanics of message-based activation used by WAS. When a service is hosted in WAS, no service instance is created until a message is received that is addressed to the service. This means that when a service first starts, it must initialize a new instance by, for example, allocating memory, loading libraries, and creating objects. If your application processes time-sensitive data, this delay in starting individual services may be unacceptable. Even if you are not processing time-sensitive data, this reliance on message-based activation imposes limits on how your service can receive data, as message-based activation requires a WAS activator. Out of the box .NET provides an activator for the following protocols:
http: Provides HTTP activation for both IIS 7.0 and WCF.
net.tcp: Provides TCP port-based activation.
net.pipe: Provides named pipe-based activation.
net.msmq: Used with Message Queuing (MSMQ) applications that are WCF-based.
msmq.formatname: Provides backwards compatibility with existing MSMQ applications.
To overcome the limitation of message-based activation, AppFabric Hosting Services can take advantage of the IIS auto-start feature provided by Windows Server 2008 R2 and Windows 7 to automatically start your WAS-hosted service as soon as it is deployed instead of waiting for an activation message.
AppFabric Caching Features
AppFabric Caching Services fuses memory across multiple computers to give a single unified cache view to applications. Applications can store any serializable CLR object without worrying about where the object gets stored. Scalability can be achieved by simply adding more computers on demand. AppFabric Caching Services also allows for copies of data to be stored across the cluster, thus protecting data against failures. AppFabric Caching Services includes an ASP.NET session provider object that enables ASP.NET session objects to be stored in the distributed cache without having to write to databases. This increases the performance and scalability of ASP.NET applications.
For more information aboutAppFabric caching features, see Introduction to Caching with Windows Server AppFabric (http://go.microsoft.com/fwlink/?LinkId=164828).