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
|
|