Declarative Services in .NET 4.0 Alan Smith SDC 2010 – 16th March 2010 Alan Smith • Developer, Trainer, Mentor, Evangelist – Know IT Consulting • “Connected Systems Developer” MVP • Microsoft “Connected Technology Advisor” • Contact: – www.CloudCasts.net – geekswithblogs.net/asmith – bloggersguidetobiztalk@gmail.com .NET 4.0 at your Service • Windows Communication Foundation (WCF) – Simplified Configuration – WS-Discovery – Routing Service – Improved REST support .NET 4.0 at your Service • Windows Workflow Foundation (WF) – New workflow runtime – New workflow designer – New activity model – New WCF integration capabilities .NET 4.0 at your Service • WCF Workflow Services – Workflow designer used to create WCF services – Workflow exposed through WCF endpoint – Powerful integration with WCF – One of many uses for WF .NET 4.0 at your Service • Windows Server AppFabric Application Server Extensions (AppFabric) – Formally “Codename Dublin” – Enhanced WCF and WF hosting capabilities – Workflow persistence – Workflow and service management – Distributed in-memory cache (formally “Codename Velocity”) Workflow Service Concepts Concept Description Declarative Service implementation is declared using XAML Persistent State of workflow can be serialized to data store Long-Running Service lifetime can be longer than first call duration Durable Service instances can survive host restarts Classic WCF Service • Client can call methods in any order • Service is instanced on per-call basis • Order state is maintained in LOB Database [ServiceContract(Name = "OrderManagement")] public interface IOrderManagement { [OperationContract] void RegisterOrder(Order newOrder); [OperationContract] void ConfirmOrder(Order newOrder); [OperationContract] void CancelOrder(Order newOrder); } Classic WCF Implementation Client AppFabric Register Confirm Cancel Conform Id = 456 789 123 Order Manager Service Warehouse Database OrderID State 123 Registered Confirmed 456 Registered Confirmed 789 Registered Cancelled Stateful Services – Classic WCF • Client maintains session with service – Secure session – Reliable session – Transport session • Service instancing configured appropriately – Per call – Per session – Single WCF Workflow Service • RegisterOrder creates workflow instance • Order state is maintained in workflow instance • ConformOrder or CancelOrder is then called • Correlation needed between service calls Register (123) Client AppFabric Register Id = 123 Order Manager Service 123 Confirm Cancel AppFabric Persistence Database 123 Confirm Cancel Register (456) Client AppFabric Register Id = 456 Order Manager Service 456 Confirm Cancel AppFabric Persistence Database 123 Confirm 456 Cancel Confirm Cancel Confirm (123) Client AppFabric Conform Id = 123 Order Manager Service 123 Confirm Cancel AppFabric Persistence Database 123 Confirm 456 Cancel Confirm Cancel Register (789) Client AppFabric Register Id = 789 Order Manager Service 789 Confirm Cancel AppFabric Persistence Database 123 Confirm 456 Cancel Confirm 789 Cancel Confirm Cancel Cancel (789) Client AppFabric Cancel Id = 789 Order Manager Service 789 Confirm Cancel AppFabric Persistence Database 123 Confirm 456 Cancel Confirm 789 Cancel Confirm Cancel Confirm (456) Client AppFabric Confirm Id = 456 Order Manager Service 456 Confirm Cancel AppFabric Persistence Database 456 123 Confirm Cancel Confirm 789 Cancel Confirm Cancel Demo… AppFabric Hosting Architecture Visual Studio IIS Manager PowerShell App Fabric Tools App Cmdlets Runtime Services & Components Persistence WCF Hosting WF Monitoring ETW ASP.NET IIS / WAS SQL Server Monitoring Persistence System Centre Services Going 4ward… • WCF – Clean migration path for projects and developer skills – Additional features simplifies configuration and enhances functionality Services Going 4ward… • WCF Workflow Services – New implementation of WF – Will not replace traditional service development • Evaluate and use where appropriate – Should the service be implemented as a process? Services Going 4ward… • Windows Server AppFabric – Great to have for tracing, monitoring and management of traditional WCF services – Must-have for WCF Workflow Services – Distributed in-memory cache features are powerful (formally “Codename Velocity”) Further Development • Bits – Visual Studio 2010 RC – Windows Server AppFabric Beta 2 • Webcasts – www.CloudCasts.net • Questions – bloggersguidetobiztalk@gmail.com • User Groups – SweNug has many events planned for 2010 • Training – WCF, WF and AppFabric courses at Informator Tack!