Double Feature: WCF and Workflow




On-Demand! version of this course

Windows Communication Foundation (WCF) is the next-generation platform for building connected systems on the Windows platform. WCF makes it possible to build secure, reliable, and transacted systems through a simplified programming model that unifies and improves many of the previous .NET technologies including ASMX, WSE, .NET Remoting, .NET Enterprise Services (COM+), and System.Messaging. Not only is WCF simpler to use than its predecessors, it’s also more flexible and interoperable thanks to its focus on service orientation and its support for standard protocols and specifications. WCF is sure to change the way every .NET developer builds connected systems in the years ahead.


Windows Workflow Foundation (WF) allows developers to create dynamic, reactive applications with true object reuse and composition. WF provides the tools and services .NET developers need to add rich workflow capabilities to their ASP.NET and Smart Client applications as well as Web and Windows services. WF solves many common problems that developers encounter when building typical applications with processes that span more than a single interaction. With the ability to fully involve business users and IT Pros in the use and monitoring of an application, WF stands to change the way many .NET programs are written in the future.


This course will provide fast-paced exposure to both WCF and WF to get you started building transparent services and smart clients today.


Who Should Attend

Developers interested in ramping up quickly on the WCF/WF architectures, programming models, and other key concepts and features.


Download printable course description Download printable course description

course details


Technologies: .NET 3.0, .NET 3.5, Windows Workflow Foundation, Windows Communication Foundation
Language(s): C#
Length: Five days, 8am-6pm
US Class Price: $3295
UK Class Price: $3795

course instructors


Aaron Skonnard
Jon Flanders
Matt Milner
David Cowles

upcoming public offerings


8/10/2009  Irvine, CA


9/28/2009  Waltham, MA


10/12/2009  London


Course outline:

Day 1

  Introducing WCF - Connected Systems
- Distributed technologies
- SOAP vs. REST designs
- Service Orientation
- Introducing WCF
- Services and endpoints
- Consuming WCF services
- Common questions

  Programming Services - WCF service architecture
- Typed vs untyped messages
- Data contract basics
- Service contract basics
- Implementing services
- Hosting services
- Configuring services
- Bindings and behaviors
- Publishing metadata
- Throwing faults/exceptions

  Programming Clients - WCF client architecture
- Client-side endpoint definitions
- SvcUtil.exe and Service References
- Creating a ChannelFactory
- Channel instance lifecycle
- Generated proxy classes
- Handling faults/exceptions
- Asynchronous invocations
- Sharing contract assemblies
- Programming MEX

  Hosting - WCF hosting concepts
- Self-hosting techniques
- ServiceHost lifecycle
- Host base addresses
- Implementing a custom ServiceHost
- Hosting in Windows Services
- Hosting in IIS 5/6
- Using .svc files
- ServiceHostFactory
- ASP.NET compatibility mode
- Hosting in IIS 7 using WAS

Day 2

  Runtime Execution - WCf runtime behaviors
- InstanceContextMode (instancing)
- PerCall, Single, and PerSession
- Bindings that support PerSession
- Session lifecycle and termination
- Advanced instance management
- Durable services (new in 3.5!)
- Service throttling
- ConcurrencyMode (threading)
- Single, Reentrant, and Multiple
- UseSynchronizationContext

  Serialization - WCF supported serializers
- Importing/exporting serializer types
- XmlSerializer
- NetDataContractSerializer
- DataContractSerializer
- Supported types
- [DataContract] mapping and customization
- Optional vs. nillable
- Known types
- DataSets, arrays, and collections
- Serializer events

  Service Contracts - Service contract architecture
- Implementing multiple service contracts
- Service contract derivation
- Runtime dispatching
- Importing/exporting service contract types
- [ServiceContract] mapping and customization
- One-way operations
- Duplex contracts
- Message contracts
- Generic operations

  RESTful Services - Service design styles
- Understanding REST
- REST vs. SOAP comparison
- Resource Oriented Architectures (ROA)
- WCF support for REST/ROA
- [WebGet] and [WebInvoke]
- Dispatching via UriTemplate
- WebHttpBinding, WebHttpBehavior, and WebServiceHost
- Enabling Ajax/JSON integration
- Syndication programming model

Day 3

  Faults and Exceptions - Exceptions vs. SOAP faults
- WCF exception/fault handling
- The generic SOAP fault
- Including exception details in faults
- Throwing/catching FaultException
- Typed faults via FaultException
- Advertising faults with [FaultContract]
- Global exception handling via IErrorHandler
- Proper client-side exception handling

  Security - The "CIA" of security
- WCF security choices
- Declaring a protection level
- Configuring security in WCF bindings
- Transport vs. message-based security
- Credentials and authentication
- Security call context (ServiceSecurityContext)
- Authorization options
- Federation and claims
- Implementing an authorization behavior

  Reliability - Building reliable systems
- Reliable messaging (WS-ReliableMessaging)
- Sessions vs. reliable sessions
- ACID transactions
- Flowing transactions with WCF
- Queued messaging
- Using the NetMsmqBinding
- Combining queues and transactions
- Compensating transactions

  Extensibility - WCF runtime architecture
- Channel extensibility overview
- Dispatch/client runtime extensibility
- Runtime interception stages
- Implementing interceptors
- Applying interceptors via behaviors
- Implementing behaviors
- Sharing state between extensions
- Custom ServiceHost/ChannelFactory

Day 4

  Introducing Windows Workflow Foundation - Building reactive systems
- Components of Windows Workflow Foundation
- Understanding workflows and activities

  Activity Fundamentals - Creating simple activities
- Using dependency properties and activity binding
- Creating validation logic for custom activities
- Activity lifecycle

  Workflow Runtime and Services - Hosting the workflow runtime
- Creating and managing workflow instances
- Using runtime services
- Creating custom runtime services
- Workflow runtime events

  Composite Activities - Creating actitivites that control other activities
- Managing child activities
- Working with the ActivityExecutionContext
- Activity Conditions and attached dependency properties
- Building simple composite activities to reuse control flow logic

  Programming WF with Visual Studio - Understanding workflow projects and the build process in Visual Studio
- Activities included in the base activity library such as While, Replicator, EventHandlingScope, and Listen
- Workflow debugging
- Synchronization issues and concurrent processing

Day 5

  State Machines - State machine concepts
- State machine specific activities
- Design patterns supported by state machine workflows

  Persistence and Tracking Services - Workflow and activity serialization
- Persistence service basics
- Using the SQL Server persistence service
- Tracking services architecture
- Creating tracking profiles
- Using the SQL Tracking Service
- Creating custom tracking services

  Consistency and Reliability - Transactions and compensation
- Handling errors in workflows, activities and the host application
- Using the WorkBatch and the IPendingWork interface to participate in workflow transactions

  Workflow and (Web) Services - ASMX / .NET 2.0 web service support
- Using the Send and Receive activity to model service communications with WCF
- Hosing workflow as services
- Consuming and aggregating services from workflows
- Hosting workflow services in IIS and Windows Process ACtivation Services

  Business Rules and Dynamic Update - Creating business rule policies
- Using the Policy activity
- Consuming business rules from .NET code; outside of a workflow
- Applying dynamic updates to running workflow instances
- Combining dynamic update with business rules