| | |
|
WCF Fundamentals
Course description:
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. This course provides fast-paced exposure to WCF and will help you get started today.
Who Should Attend
Developers interested in ramping up quickly on the WCF architecture, programming model, and other key features that you can take advantage of today. Experience programming in C# using Visual Studio .NET is required. Experience with ASP.NET Web services (ASMX), WSE, and distributed programming frameworks helpful but not strictly required.
|
|
|
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
|
|
Day 2
|
| |
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
|
|
| |
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
|
|
Day 3
|
| |
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
|
|
| |
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
|
|
Day 4
|
| |
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
|
|
|
|
|
| | |