Windows Communication
Foundation
Jim Fawcett
CSE681 – SW Modeling & Analysis
Summer 2008
References
• Programming “INDIGO”, David Pallmann, Microsoft Press, 2005
• Windows Communication Foundation Unleashed, McMurtry, Mercuri,
Watling, Winkler, SAMS, 2007
• Pro WCF, Peiris and Mulder, apress, 2007
• MSDN WCF Root Page
• WCF Feature Details
• Distributed .NET Learn ABCs Of Programming WCF
• Service Station Serialization in Windows Communication Foundation
• Service Station WCF Messaging Fundamentals
• Windows Communication Foundation Glossary
• Windows Communication Foundation Tools
2
References – Activation & Channels
• How to Access WCF Services with One-Way and Request-Reply Contracts
• How to Access Services with a Duplex Contract
• Sessions, Instancing, and Concurrency
• WCF Essentials Instance Management
• WCF Essentials One-Way Calls, Callbacks, Events
References – Web Model
• How to Create a Basic Web-Style Service
• WCF Web Programming Model Overview
• Web Programming Model
• WCF Web Programming Object Model
• WCF Syndication HTTP Programming with WCF and the .NET Framework 3.
5
• Creating WCF AJAX Services without [Link]
• Creating WCF Services for [Link] AJAX
References – Odds and Ends
• Accessing Services Using a Client
• Clients
• Client Architecture
• Client Configuration
• Call WCF Service Operations Asynchronously
• A Performance Comparison
• Security in WCF
What is WCF?
• Provides software services on machines, networks,
and across the internet
• Unified programming model for all of these
• Supported natively on Windows Vista
– Requires installation on XP
• Not available on other platforms
– Mono?
– DotGnu?
– Mac OSX ?
6
Integration into .Net 3
• One model for distributed systems decomposes into
presentation layer, application logic layer, and data
layer, all bound together with communication.
• Presentation: WPF, Silverlight with [Link]
• Data: LINQ - binds views to storage
• Communic: WCF – local, network, internet
• Applic. Logic: Custom designs
7
WCF Design Principles
• Boundaries are explicit
– No attempt to hide communication
• Services are autonomous
– Deployed, managed, and versioned independently
• Services share contracts and schemas, not types
– Contracts define behavior, schemas define data
• Compatibility is policy-based
– Policy supports separation of behavior from access
constraints
8
Essential Pieces of WCF
• Contracts for services, data, and messages
– A contract is simply an interface declaration
• Service, Data, and Message definitions
– Class implementations
• Configurations defined programmatically or
declaratively
– config files.
• A host process (can be self hosted)
– IIS, Windows Executable, Windows Service, or WAS
• .Net Framework (3.5) Classes provide support for all
of the above.
9
Look and Feel of WCF
• Convergence of programming models
– Just like web services
– Similar to .Net Remoting
– Sockets on steriods
– Hosting for local, network, and web
• Communication models
– Remote Procedure Call (RPC) with optional data models
– Message passing
– One way, request and wait for reply, asynchronous full
duplex
10
WCF Architecture
11
ServiceModel Namespace
• Bindings, Channels, Endpoints, Messages,
Serialization
• Activation, Concurrency, Hosting, Security,
Sessions
• Queuing, Transactions
• Exceptions
12
Principle Parts of a WCF Service
• Contract
– An interface defining services rendered
– Service, Data, Message
• Endpoints
– Address: [Link]
– Binding: wsHttpBinding
– Contract: ICalculator
• Implementation
– One or more classes that implement the contract
interfaces. May also include hosting code.
13
WCF Service Files
• [Link]
– Interface(s) that define a service, data, or message
contract
• [Link]
– Implement the service’s functionality
• [Link]
– Markup file (with one line) used for services hosted in IIS
• Configuration files that declare service attributes,
endpoints, and policy
– [Link] (self hosted) contains service model markup
– [Link] (hosted in IIS) has web server policy markup
plus service model markup, as in [Link]
14
Service serviceModel Markup
• <[Link]>
<services>
<service name=“mySvcName” behaviorConfiguration=“…”>
<endpoint address=“” binding=“wsHttpBinding”
contract=“[Link]” />
<!-- can expose additional endpoints here -->
<endpoint address=“mex” binding=“mexHttpBinding”
contract=“IMetadataExchange” />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name=“[Link]”>
<serviceMetaData httpGetEnabled=“true” />
<serviceDebug includeExceptionDetailInFaults=“false” />
</behavior>
</serviceBehaviors>
</behaviors>
</[Link]>
15
Channels
• Channels are the vehicles that transport
messages. They provide:
– Transport protocols via bindings
• Http, wsHttp, Tcp, MSMQ, named pipes
– Encoding and Encryption
– Reliable sessions
– Communication modes
• Simplex, duplex, send and wait
– Security modes
16
WCF Bindings
17
Interoperability
• Channel protocols determine interoperability with
other platforms:
– BasicHttpBinding universal interoperability
– wsHttpBinding platforms that use ws extensions
– netTcpBinding .Net on both ends
– MSMQ WCF to pre WCF windows platforms
18
Hosting
• Self Host
– Service has a Main entry point, runs in its own
process.
• Internet Information Server (IIS)
– BasicHttpBinding provides a web service.
– wsHttpBinding provides web service with ws*
extensions.
• Windows Activation Service (WAS)
– Uses virtual directory, like web service.
19
Service Behaviors
• Instancing:
– Singleton: one instance for all clients
– Per call: one instance per service call
– Private session: one instance per client session
– Shared session: one instance per session shared between
clients
• Concurrency models for instances:
– Single: one thread at a time accesses instance
– Multiple: more than one thread may enter instance
– Reentrant: threads make recursive calls without deadlock
20
Other Service Behaviors
• Throttling:
– Limits on number of messages, instances, and threads a service can
process simultaneously
• Error handling:
– Options to handle, let framework handle, and report to client
• Metadata:
– Services can be self-describing, providing MEX endpoints
• Lifetime:
– Can specify session duration, service operations to initiate sessions
and others to terminate sessions
• Security:
– Can specify message confidentiality, integrity, authentication,
authorization, auditing, and replay detection.
21
Structuring Service Code
Service Class Attribute
Service contract interface [ServiceContract]
Service operation method [OperationContract]
Implementation class [ServiceBehavior]
Derive from contract interface
Implementation method [OperationBehavior]
Data Contract class [DataContract] class
[DataMember] member
Message Contract interface [MessageContract] interface
[MessageHeader] member
[MessageBody] member
22
Building Clients
• Build proxy with svcutil
– Visual Studio will do that if you add a service or
web reference
– Proxy code is in a subdirectory under the project.
• Add proxy code to project
• Add “using [Link]” to client
code
• Build and run
23
Generating Proxies
• [Link] generates code:
– from a mex endpoint:
svcutil [Link]
– from WSDL or XSD files:
svcutil [Link]
• [Link] generates WSDL and XSD files from
a service library:
– svcutil [Link]
24
Channel Model
• You can create a channel programmatically
– In this case you access the channel directly
without the need of a proxy.
• All of the configuration normally done with a
[Link] or [Link] can also be done
programmatically.
25
Types of WCF Contracts
• WCF supports:
– Service contracts
• Supports RPCs with native data types
– Data contracts
• Data contracts provide definitions of user defined data
structures for transmission through RPCs
– Message contracts
• Message contracts support message passing
• Instead of calling functions send and receive messages
26
27
WCF Samples
• Microsoft has provided a large set of very interesting
samples:
– WCF Samples home:
[Link]
– Setup instructions here:
[Link]
– Download here: [Link]
FamilyID=0043041F-95D6-4EB7-966A-C21A737E193A&displaylang=en
– Note:
• Samples use a single virtual directory, created by the setup process
• Builds clear the virtual directory and copy built sample files
• Initial setup installs developer certificate, required to run SSL
• In Vista, must Run Visual Studio as administrator
28
White Papers
• The following two white papers, by David
Chappell plus the Microsoft samples are a
great help learning WCF.
– [Link]/articles/white_papers/
Introducing_WCF_in_.Net_Framework_3.5_v1.[Link]
– [Link]/articles/white_papers/
WCF_Diversity_v1.[Link]
29
End of Presentation
30
Thank you
31