Introducing Windows Server AppFabric
Windows Server AppFabric extends Windows Server to provide enhanced hosting, management, and caching capabilities for Web applications and middle-tier services. The AppFabric hosting features add service management extensions to Internet Information Services (IIS), Windows Process Activation Service (WAS), and the .NET Framework 4. This includes Hosting Services and Hosting Administration tools that make it easier to deploy, configure, and manage Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) based services. The AppFabric caching features add a distributed, in-memory object cache to Windows Server that makes it easier to scale out high-performance .NET applications, especially ASP.NET applications.
Services and service-oriented architectures are being built into many types of applications today, from simply exposing some functionality as a service for others to use to an application itself being a complex coordination across many services. The need to construct applications that can easily participate and perform in this services world has never been greater. Modern applications typically have at their heart a data-driven transactional component (such as taking orders on a web site) together with highly distributed business logic that manages these transactions across a middle tier.
Often, deploying, managing, and monitoring middle-tier services can be a labor-intensive process that requires developers to create a hosting infrastructure and spend time creating custom deployment solutions for their applications. Even after the application is deployed, developers are often required to manage the application by making manual modifications to configuration files. AppFabric can help reduce this burden by simpiflying service deployment, providing a customizable monitoring solution, and providing a rich management toolset, all of which can be directly accessed through the IIS management console or scripted using the AppFabric modules for Windows PowerShell.
Developers are also increasingly tasked with requirements to deliver highly responsive and highly scalable applications. This is true not only for middle-tier services, but also for Web, mobile, and desktop applications. As demands on applications increase (e.g., a Web site becomes popular, or other groups start consuming your shared service), expensive data access can often present serious limitations to application performance and scale. While caching is a well-established solution in the database world, it is also becoming increasingly recognized as a fundamental component in delivering high-performance Web applications and composite services. In both cases, you can use the AppFabric Caching Services to improve the performance and scalability of your data-intensive .NET applications and services. The AppFabric Caching Services provide a highly available, distributed, in-memory cache that can easily scale elastically (scale-out/scale-in) independently of your application or data tiers. With a .NET API and seamless integration with ASP.NET and PowerShell, AppFabric Caching Services ensures that you can introduce caching into your solutions with minimal code disruption and a consistent management experience.
The following sections explore some of these challenges in hosting middle-tier services and scaling Web applications, and describe the solutions that AppFabric provides.
Setting up a hosting environment for an application that includes WCF- and WF-based services can be complex and time-consuming. While IIS/WAS provides a robust hosting environment for such applications, taking advantage of its features can require a considerable development effort, custom deployment solutions, and manual configuration procedures. Once a solution is deployed and configured, managing services can be a challenge.
AppFabric Hosting Services enable you to get your WCF- and WF-based services up and running easily. You can take advantage of AppFabric’s hosting capabilities without developing additional hosting features. The Hosting Services extend the hosting capabilities of WAS by providing a default configuration of the WAS hosting environment. Hosting Services includes features provided by the Workflow Management Service, including lock/retry, auto-start, durable timers, and a command queue.
AppFabric Hosting Administration provides tools to manage your running workflow instances much more easily, with control, monitoring, and query capabilities. You can also configure WAS and the applications hosted within WAS in a standard way. The Hosting Administration tools enable you to configure the address of service endpoints, manage auto-start activation, and configure security and performance settings.
For more information on the hosting capabilities of AppFabric, see Hosting Concepts.
AppFabric In-Memory Cache Platform
The use of an in-memory cache to store frequently used application data is a long-standing method for improving application performance. Reading from and writing to memory is orders of magnitude faster than reading from and writing to disk. However, in-memory cache size is generally limited by the amount of memory available on the computer that the application is running on and data stored in an in-memory cache is subject to total loss due to the inherent volatility of computer memory. Development of applications that can make full use of an in-memory cache is further limited by the lack of an application programming interface (API) for storage and retrieval of objects in a memory cache. Development of applications that make use of caching may also be hindered by the lack of cache management functionality.
AppFabric caching features can help scale your .NET applications easily and inexpensively by allowing you to combine the memory capacity of multiple computers into a single unified cache cluster. These features include Caching Services, the Cache Client, and Cache Administration tools. The AppFabric Caching Services are highly scalable, allowing many computers to be configured as nodes of a cache cluster that is available as a single unified memory cache. The Caching Services provide a high-availability feature that supports continuous availability of your cached data by storing copies of that data on separate cache hosts. When high availability is enabled on a multi-server cluster, your application can still retrieve its cached data if a cache server fails.
The Caching Services provide a comprehensive set of fully documented API’s for integrating the use of an in-memory cache with your .NET based application. In addition, there is seamless integration with ASP.NET for storing session state in the cache. This can provide ASP.NET sites with a cost-effective path for quickly improving site performance and scale. The AppFabric Cache Administration provides a full set of administration tools for the creation, configuration, and management of in-memory caches. The caching and hosting features of AppFabric are both included in an integrated installation package.
For more information, see Windows Server AppFabric Caching Features.
It can be challenging to get stateful, long-running services in Windows Workflow Foundation up and running. To set up persistence to ensure that workflows are durable, you may need to create a persistence store, create a schema, set up a persistence database, and then configure it. In the production environment, you may have a database that holds on to instances of the durable workflows that have been invoked. Some of these workflow instances may be suspended, some may be running. It can be hard to see what is happening with the system.
With AppFabric, persistence works right out of the box. The AppFabric Hosting Services use the SQL persistence store that ships with .NET Framework 4, and create a default persistence database that your applications can leverage, which allows you to scale your stateful services across a set of computers. You can use a custom persistence store of your own choosing. And AppFabric Hosting Administration provides you with the tooling that you need to monitor activity in the persistence database or with your long-running workflows.
For more information on persistence features in AppFabric, see Persistence Concepts.
With WCF- and WF-based applications, you cannot always see what is happening with services and workflow instances. If you have services and workflows on multiple machines, where are they getting activated? How many of them are getting activated? What is their status? Are you getting errors?
AppFabric Hosting Services and Hosting Administration enable you to perform health monitoring and troubleshooting of running WCF and WF services, and to control those services. You do so in the AppFabric Dashboard page of the IIS Manager. The AppFabric Dashboard enables you to constantly be aware of the state of your system. Monitoring data can help you better control workflow instances. You also have the flexibility of changing the queries that generate the data, and of selecting a monitoring level that enables you to collect enough data to monitor the health of your applications while keeping the performance cost of monitoring the applications at an appropriate level. AppFabric monitoring is built on tracking and tracing capabilities provided in the .NET Framework.
Events are stored in a monitoring database that is accessible through the Hosting Administration tooling. A tracking participant writes events to an Event Tracing for Windows (ETW) session, and the Event Collection Service installed with the AppFabric hosting features reads the events from the ETW session, delivering high-performance data processing. When you install the AppFabric hosting features, the installation program sets up a configurable monitoring infrastructure that is designed to be used in your production environment. You can use the SQL monitoring store that ships with .NET Framework 4 or a custom store of your choosing. You can configure AppFabric to purge the monitoring database automatically.
For more information on monitoring features in AppFabric, see Monitoring Concepts.
IT professionals and developers need powerful and easy-to-use tools to help them deal with WCF- or WF-based services in a production environment. To manage an application, you may have to use several tools and manually edit configuration files. You may not have visibility into data about your services and you may not have control over your configuration. It can be difficult to determine how to set the configuration of an application, because you may have to access multiple configuration files, using Service Configuration Editor to open them and edit their configuration elements.
AppFabric hosting features provide a rich set of extensions to the IIS Manager for service management. The AppFabric Dashboard gives you visibility into the health of a system, and the unified configuration user interface gives you control over your service configuration. When necessary, you can resume, suspend, cancel, or terminate persisted workflow instances and start or stop services. Because the user interface is based on IIS Manager, you have a similar administrator experience and similar tools for WCF- and WF-based services as you do for Web applications. You can perform many application management tasks within the IIS Manager, rather than jumping from tool to tool or editing configuration files manually.
In the AppFabric extension to the IIS Manager, it is easy to enumerate the services on a server, and you can easily change the queries to adjust your data. You can see how many workflow instances are in a running state or in a non-running state. You can view persisted workflow instances or tracking workflow instances.
In the IIS Manager, you can see the configuration for a service in a single dialog box. In that dialog box, you can set the configuration for a service, and the default configuration settings for an application, Web site, or server, which can be inherited by a service. The AppFabric Hosting Services leverage the behavior merge capability of .NET Framework 4, which enables a service to inherit configuration properties from any level of the IIS hierarchy. In many configuration scenarios, the Hosting Services enable you to make configuration settings in the appropriate Web.config file without the need to access that file directly.
The Hosting Administration tools include Windows PowerShell cmdlets that enable you to manage applications from the PowerShell console or via scripts that enable you to configure in an automated fashion. These PowerShell modules include the ApplicationServer module for AppFabric Hosting Services and the DistributedCacheAdministration and DistributedCacheConfiguration modules for AppFabric Caching Services.
AppFabric includes a setup wizard to install both AppFabric hosting and caching features, and a configuration wizard to configure those features. You can also install AppFabric using WebPI.
For more information on the AppFabric management tools, see Management Tools.
Often with a new product, you must learn new ways of developing your application to take advantage of new features or integrate with the product.
With AppFabric Hosting Services, there are no special requirements for creating an application beyond ensuring that the application can be hosted in the IIS/WAS hosting environment using the Windows Process Activation service (WAS). The default project templates in Visual Studio® (WCF Service Application and WCF Workflow Service Application) support IIS/WAS and are managed by AppFabric without requiring any modifications. If you have applications that are hosted in WAS currently, they can be deployed to AppFabric without modification.
For more information on developing an application for use in AppFabric, see Developing an Application.
It can be difficult to deploy a service from one server to another, or to deploy a service to multiple servers using an identical configuration.
AppFabric Hosting Services leverage the Microsoft Web Deployment tool (also called the Web Deploy tool) to deploy services into its hosting environment. The Web Deploy tool is integrated with both IIS and Visual Studio environments, so you can easily package and deploy services directly from within Visual Studio, or deploy pre-packaged applications directly from the IIS Manager.
Hosting Services and Administration Extensibility
Some pre-packaged solutions can be difficult to build upon.
The AppFabric hosting features provide extensibility points for you to create custom solutions. You can add a module to the IIS Manager, and you can create your own UI tools on top of AppFabric Hosting Administration cmdlets. You can provide custom UI for your application’s target user. You can create your own cmdlets or use piping to combine AppFabric cmdlets as you need. Extensibility points are also available in the monitoring and persistence capabilities of Hosting Services. You can use a custom monitoring or persistence store.
For more information on extensibility in AppFabric, see AppFabric Extensibility.