GETTING STARTED WITH WINDOWS COMMUNICATION FOUNDATION 4.5 Ed Jones & Grey Guindon WELCOME TO TWIN CITIES CODE CAMP! P:2 OVERVIEW What does it mean to be SOA? Contracts and Service Implementation Bindings and Behaviors Hosting the Service Consuming WCF Services What’s New in 4.5? P:3 CAMP GOLDY CODE CAMPING RESERVATION SYSTEM A simple service that allows one to make, alter, or cancel a reservation at the Camp Goldy Code Campground The reservation system is available to any client, regardless of type of code, native OS, etc. P:4 SERVICE ORIENTED ARCHITECTURE AND PRINCIPLES P:5 WHAT IS SERVICE ORIENTATION? Service-Oriented Architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are welldefined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration. -Wikipedia, “Service-Oriented Architecture” P:6 SOA DESIGN PRINCIPLES Explicit Boundaries Share Contract and Schema, not Classes Autonomous Stateless Interoperable P:7 WHAT IS WCF? Windows Communication Foundation (WCF) is a framework for building service-oriented applications. It is a runtime and a set of APIs for creating systems that send messages between services and clients. WCF is the foundation for other distributed technologies by Microsoft, such as Azure, AppFabric, and BizTalk And speaking of Azure… – Free 90-day trial at http://www.windowsazure.com – Click “Try It Free” P:8 HOW IT WORKS: A WCF OVERVIEW P:9 WCF CONTRACTS Building out service and data contracts P:11 CONTRACTS CAN BE KIND OF STICKY… P:12 WCF CONTRACTS Contracts determine what data and operations are exposed Service contracts define operations Data contracts define the data (duh!) And you’ve got other contracts, too – Message Contracts – Fault Contracts P:13 A CONTRACT IS JUST A SCHEMA… P:14 SERVICE CONTRACTS & DATA CONTRACTS P:15 CONFIGURING THE SERVICE P:16 BINDINGS The binding controls the messaging details (what happens on the wire) for that endpoint. Common bindings are common recipes as to how WCF will configure the underlying channel stacks. There are countless extensibility points found throughout the WCF channel layer. P:17 ABC’S: ADDRESS, BINDING, CONTRACT P:18 HOSTING THE SERVICE P:19 HOSTING THE SERVICE A WCF Service is a library, it has no life of its own The host brings the WCF service to life by providing the process in which it operates. Most of the time, WCF services will run in a ready-made host environment such as Internet Information Server (IIS) or Azure And speaking of Azure… – Free 90-day trial at http://www.windowsazure.com – Click “Try It Free” A lot of things require a host! P:20 USING A WCF SERVICE P:21 CONSUMING A SERVICE Because WCF exposes service functionality through open standards, such as SOAP, you can use almost any type of client to consume the service. Allowing a .NET client to consume the service is as easy as creating a service reference or generating a proxy through a command-line utility (svcutil.exe) Non-.NET clients would typically use SOAP to consume a WCF Service P:22 OTHER THINGS YOU CAN DO WITH WCF Secure Services RESTful Services Routing Streaming Data Discovery Web Sockets …and much, much, more P:23 WHAT’S NEW IN WCF 4.5 Config File Tooltips, IntelliSense Contract-First Generation Generate Classes from Sample XML ASP.NET compatibility mode (aspNetCompatibilityEnabled) defaults to “true” WCF Configuration Validation Streaming Improvements Single WSDL WebSocket Support ChannelFactory Caching UDP Support HttpClient Class P:24 REFERENCES Wikipedia – “Service-Oriented Architecture” http://en.wikipedia.org/wiki/Serviceoriented_architecture Stefan Tilkov, “10 Principles of SOA” http://www.infoq.com/articles/tilkov-10-soa-principles John Spacey, “The 9 Principles of Service Oriented Design” http://simplicable.com/new/the-9-principlesof-soa-design MSDN, “How to: Host a WCF Service in a Managed Windows Service” http://msdn.microsoft.com/enus/library/ms733069.aspx P:25 THANK YOU! Ed Jones, MCT, MCPD (Web, Azure), MCTS (WCF, BizTalk) – Email: ed.jones@rbaconsulting.com – Blog (Extremely Talented Monkeys): http://talentedmonkeys.wordpress.com P:26