AppFabric (earlier “Dublin” + “Velocity”) as .Net Application Server
Apart from hosting business logic, Application server performs several other functions like
· Persisting a long running Loan approval workflow so that it can be dehydrated from memory when not being worked on and rehydrated again when needs to be acted.
· Ability to automatically start multiple instances to serve increased users during peak load conditions and reduce running instances during off peak hrs.
· Cache data items like user profiles, etc.
· Ability to find out transactions which may not have gone through because of the invalid data inputs or criteria e.g. Loan approval failure due to failing a specific criteria.
· Ensure secure access to services like Account login, Balance check, Money transfer, etc.
· Reporting on number of requests fulfilled successfully, error conditions, etc.
If we abstract out the functionality from the above bullets the application server performs key functions like Hosting, Persistence, Instancing, Caching, Security, Messaging, Monitoring and Management, etc. helping build highly scalable and available applications.
In J2EE world, this business functionality will be hosted in application server like Oracle BEA WebLogic though Entity or Session beans providing OoB Entity life cycle management, persistence, scaling, etc.
In Microsoft legacy VB, COM+ world, COM+ MTS servers used to provide such functionality. With .Net, the business functionality was usually written using Windows Communication Foundation (WCF), Windows Workflow Foundation (WF) or using APIs from System.EnterpriseServices. Each of these technologies has built in APIs for hosting, persistence, instancing, and security which can be used to mimic Application Server functions with support from IIS. However, it needed more than some effort to support some of the above scenarios through integration between WCF 3.5, WF 3.5 and IIS 7.0 stack because of lack appropriate application server product.
It’s been sometime Microsoft didn’t have any single coherent product, which qualifies as an Application Server in .NET stack. With Microsoft stack penetrating enterprise scale apps, it was high time to have a true middle tier application server product. With PDC 09, Microsoft has announced AppFabric (earlier Dublin) for hosting WCF, WF services providing the entire gamut of application server functions listed above.
At this point, AppFabric is in embryonic stages (beta 1) and is a web download that gets installed on top of IIS 7 as an add-in.
App Fabric can be installed only on Windows Vista, Windows 7, and Windows Server 2008 and needs IIS 7.0 and above, SQL Express or SQL Server 2008 for data persistence. Monitoring is available only for .Net 4.0 WCF and WF services. Certain functionality like Autostart service instance is available only on Windows 7 or Windows 2008 R2.
AppFabric will also be host for Cloud services and provides distributed caching service framework earlier “Velocity”. Check my earlier blog on Velocity here
The App Fabric provides the dashboard view to manage the Workflow instances persisted, WCF calls, and various knobs to control these. From Dashboard, one can drill down to running workflow instances and suspend, resume, cancel it and vice a versa.
With AppFabric, IIS 7.0+ and Windows Server 2008 it will help strengthen the middle tier and help easily build highly scalable on-premise apps.