Q: As the number of services and workflows grow in my environment, how can I configure the monitoring and persistence stores to accommodate this growth? Are they all querying the same database?
A: In AppFabric, persistence and monitoring databases can be configured to contain one or more isolated stores. This gives you the flexibility of creating multiple stores within one database (to simplify administration) or to create multiple databases (to improve performance). Using AppFabric tooling you can create databases and stores and can configure where individual services write their data.
Q: Will AppFabric support transactional services?
A: NET 4 WCF and WF today provide transactional services and hence AppFabric also does.
Q: Do I have to install IIS to run AppFabric?
A: If your service uses the HTTP binding then IIS is required. If other bindings are used only the WAS part of IIS is required. When it comes to hosting services you do not need IIS, just WAS (Windows process Activation Service) installed as the process host for your WCF services. WAS enables you to efficiently use the resources on your machine since it is message based activation, rather than requiring a Windows Service permanently available. An added capability of AppFabric is that it provides Autostart of WAS hosted WCF services, meaning that it starts, or "warms up" the services in advance of the first message being received, thereby reducing the latency on first message call.
Q. But I don't have IIS installed, how can I use AppFabric (there is no AppServerExtensions for .Net 4 UI). And isn’t AppFabric hosting without IIS just WAS?
A: You can use appcmd.exe to configure your web application instead of the IIS MMC. In that case you don’t need the AppFabric UI. When you run the Appcmd.exe tool, settings are updated in the %windir%\System32\Inetsrv\Config\ApplicationHost.config file. You still use the WWW service and WAS since they are a part of the OS. But there will be no AppFabric UI since there is no IIS UI if IIS is not installed.
Q: Can I use AppFabric to manage services that are self-hosted or hosted in NT service?
A: AppFabric depends on WAS for hosting the WCF/WF services. To be managed by AppFabric the services have to be running in that container.
Q: How is the WCF/WF host in AppFabric different from the workflow service host in the framework?
A: AppFabric uses WAS as the standard hosting container. The WF template still specifies the WorkflowServiceHostFactory available in the Framework to host the WF runtime.
Q: How do you make life better for a WCF hoster?
A: AppFabric provides a set of powerful features that will be very useful for the WCF hosters. Examples are ability to monitor using the message based tracking, ability to deploy the WCF services to remote nodes and load balanced clusters, ability to easily configure using UI or script.
Q: Does AppFabric allow me to pre-start my WF or WCF services to decrease latency of the initial call?
A: Yes, AppFabric hosting provides the Auto-start activation feature. The auto-start feature creates instances of a WF or WCF service before the first request is received to decrease initial response time. WAS will activate the service application without the need to write complex listener code. To initialize your service create a custom ServiceHostFactory for more information see WCF and AppFabric Auto-Start.
Q: How do I prevent child applications from inheriting Auto-start functionality from the web.config files of their parents?
A: Set the inheritInChildApplication attribute to false in the parent’s Web.config file to prevent any settings defined in the location element for the root of the Web site should not be inherited by any child application.
Q: I am dynamically creating endpoints within my WCF AppFabric service, yet they do not show up in the Endpoints dialog.
A; AppFabric only displays endpoints that are explicitly defined in configuration files. AppFabric does not show the endpoints that are defined in code or those (such as the service endpoint and workflow control endpoint) that are assumed by the runtime.
Great post! Very useful. Thank you very much for answering all these questions, Mike.