Demystyfying Windows Communication Foundation

Download Report

Transcript Demystyfying Windows Communication Foundation

Demystifying Windows
Communication Foundation
Keith Elder
Microsoft MVP
INETA Speaker
Blog: http://keithelder.net/blog/
Twitter: http://twitter.com/keithelder
Podcast: http://deepfriedbytes.com
Originally from Ripley, Ms
1. Raised on a small farm
2. Yes I have milked a cow, slopped the
chickens and fed the hogs
3. Home of the 2nd largest flea market
in the US
Modelled During the 80's
Quicken Loans
$500! Cash!
About Quicken Loans
Originally founded in 1985 as Rock Financial by Dan Gilbert
Grew to one of the largest independent mortgage banks in
the country
1998 IPO
1999 Launched Rockloans.Com
1999 Intuit, Inc (makers of TurboTax and Quicken) purchased
Rock Financial.
July 2002 Dan Gilbert purchased Quicken Loans back from
Intuit. Retained Quicken Loans branding and marketing
initiatives.
5000 employees
Largest online retail home loan lender
Deep Fried Bytes is an audio
talk show with a Southern
flavor hosted by
technologists and
developers Keith Elder and
Chris Woodruff. The show
discusses a wide range of
topics including application
development, operating
systems and technology in
general. Anything is fair
game if it plugs into the wall
or takes a battery.
http://deepfriedbytes.com
Agenda
How We Got Here
ASMX vs WCF Throwdown
WCF Contracts
Service
Data
Message
Bindings
Security
Reliability
Declarative
Summary
From Objects to Services
Object-Oriented
1980s
Polymorphism
Encapsulation
Subclassing
Component-Based
1990s
Interface-based
Dynamic Loading
Runtime Metadata
Service-Oriented
2000s
Message-based
Schema+Contract
Binding via Policy
The Challenge
Radically Simplifying Distributed Application Development
Development of connected systems
remains costly and frustrating
Different programming models for different tasks
Need for security and reliable messaging
Interoperability with applications on other platforms
Productive service-oriented programming model needed
Windows Communication
Foundation
Unified framework for
rapidly building
service-oriented applications
What Does WCF Replace?
ASMX
MSMQ
COM+
(Enterprise
Services)
WSE
.NET
Remoting
DEMO
OUR CURRENT ASMX
SERVICES INVESTMENT VS
WCF
ASMX Challenge
User’s Desktop
Open Form
Event
Smart Client
UserControl
Event
Service
Event
UserControl
Java Client
Current ASMX Web Services
What’s So Different About WCF
UNDERSTANDING WCF
PRINCIPLES
Services and Clients
Client
Message
Message
Service
Endpoints
Client
Service
Endpoint
Endpoint
Message
Endpoint
Address, Binding, Contract
Client
Service
Endpoints
Endpoint
C
B
A
Message
A
B
C
A
B
C
Address
Binding
Contract
(Where)
(How)
(What)
WCF Architecture: Messaging Runtime
Service
Client
Dispatcher
Protocol(s)
Protocol(s)
Encoder
Encoder
Transport
Transport
Contract
and
Behaviors
Binding
Address
The what
CONTRACTS
Three Types of Contracts
Service
Contract
Defines
Operations,
Behaviors and
Communication
Shape
What does your
service do
Data
Contract
Message
Contract
Defines Schema
and Versioning
Strategies
Allows defining
applicationspecific headers
and unwrapped
body content
What obect data is
used
Allows control over
the SOAP
structure of
messages
Ways to Talk
One Way
Client
Service
Request-Reply
Duplex (Dual)
One Way:
Datagram-style delivery
Request-Reply
Immediate Reply on same logical thread
Duplex
Reply “later” and on backchannel (callback-style)
What does your service do?
SERVICE CONTRACTS
Service Contract
using System.ServiceModel;
[ServiceContract]
public interface ICalculate
{
[OperationContract]
double Add( double a, double b);
[OperationContract]
double Subtract( double a, double b);
}
Service Contract: OneWay
[ServiceContract]
public interface IOneWayCalculator
{
[OperationContract(IsOneWay=true)]
void StoreProblem (ComplexProblem p);
}
Service Contract: Duplex
Asymmetric
[ServiceContract(Session=true,
CallbackContract=typeof(ICalculatorResults)]
public interface ICalculatorProblems
{
[OperationContract(IsOneWay=true)]
void SolveProblem (ComplexProblem p);
}
public interface ICalculatorResults
{
[OperationContract(IsOneWay=true)]
void Results(ComplexProblem p);
}
DEMO – SERVICE CONTRACT
What object data needs to flow back and forth?
DATA CONTRACTS
Data Contract
[DataContract]
public class ComplexNumber
{
[DataMember]
public double Real = 0.0D;
[DataMember]
public double Imaginary = 0.0D;
public ComplexNumber(double r, double i)
{
this.Real = r;
this.Imaginary = i;
}
}
Defines the mapping between the type and a SOAP envelope
MESSAGE CONTRACTS
Message Contract
[MessageContract]
public class ComplexProblem
{
[MessageHeader]
public string operation;
[MessageBody]
public ComplexNumber n1;
[MessageBody]
public ComplexNumber n2;
[MessageBody]
public ComplexNumber solution;
// Constructors…
}
BINDINGS
Bindings & Binding Elements
Binding
HTTP
Transport
Text
Security Reliability
TX
Protocol
Encoders
TCP
HTTP
Text
Security
Reliability
MSMQ
IPC
Binary
TX
.NET
Custom
Custom
Custom
Standard Bindings
Binding
Interop
Security
Session
TX
Duplex
BasicHttpBinding
BP 1.1
N, T
N
N
n/a
WSHttpBinding
WS
M, T, X
N, T, RS
N, Yes
n/a
WSDualHttpBinding
WS
M
RS
N, Yes
Yes
WSFederationBinding
Federation
M
N, RS
N, Yes
No
NetTcpBinding
.NET
T, M
T ,RS
N, Yes
Yes
NetNamedPipeBinding
.NET
T
T, N
N, Yes
Yes
NetPeerTcpBinding
Peer
T
N
N
Yes
NetMsmqBinding
.NET
T, M, X
N
N, Yes
No
MsmqIntegrationBinding
MSMQ
T
N
N, Yes
n/a
N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions
Bindings & Behaviors: Security
Client
Service
C
B
A
Be
A
B
C
A
B
C
A
B
C
Be
Bindings Insert
Claims in
Messages
Behaviors
Implement
Security Gates
Feature Overview
Security
Claims based end-to-end security
Secure end-to-end message exchanges
Secure access to resources
Record resource access requests
X509, Username/Password, Kerberos, SAML,
custom credentials
Message security
Confidentiality and integrity
Transport or message level
Access to resources
Authentication and authorization
DEMO - BINDINGS
Bindings & Behaviors: Transactions
Client
Service
C
B
A
Be
A
B
C
A
B
C
A
B
C
Be
Bindings Flow
Transactions
Behaviors
AutoEnlist and
AutoComplete
Bindings & Behaviors: Reliable
Sessions
Client
Service
C
B
A
Bindings provide
Session and
Guarantees
A
B
C
A
B
C
A
B
C
Feature Overview
Reliability and Transactions
End-to-end Reliable messaging
In-order guarantees
Exactly once guarantees
Transport-Independent Sessions
Integration with ASP.NET Sessions in IIS-Hosted
compatibility mode
Transactions
Guaranteed atomic success or failure across
services
Code vs. Config
Defining Endpoints
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.serviceModel>
<services>
<service serviceType="CalculatorService">
<endpoint address="Calculator"
bindingSectionName="basicProfileBinding"
contractType="ICalculator" />
</service>
</services>
</system.serviceModel>
</configuration>
Configuring Bindings
<endpoint address="Calculator"
bindingSectionName="basicProfileBinding"
bindingConfiguration="Binding1"
contractType="ICalculator" />
<bindings>
<basicProfileBinding>
<binding configurationName="Binding1"
hostnameComparisonMode="StrongWildcard"
transferTimeout="00:10:00"
maxMessageSize="65536"
messageEncoding="Text"
textEncoding="utf-8"
</binding>
</basicProfileBinding>
</bindings>
Custom Bindings
<bindings>
<customBinding>
<binding configurationName="Binding1">
<reliableSession bufferedMessagesQuota="32"
inactivityTimeout="00:10:00"
maxRetryCount="8"
ordered="true" />
<httpsTransport manualAddressing="false"
maxMessageSize="65536"
hostnameComparisonMode="StrongWildcard"/>
<textMessageEncoding maxReadPoolSize="64"
maxWritePoolSize="16"
messageVersion="Default"
encoding="utf-8" />
</binding>
</customBinding>
</bindings>
DEMO – MULTIPLE BINDINGS
WCF Summary
Application
…
Error
Behavior
Metadata
Behavior
Instance
Behavior
Throttling
Behavior
Transaction
Behavior
Type Integ.
Behavior
Concurrency
Service Model
Messaging
…
Hosting
Environments
Secure
Channel
…
WAS
HTTP
Channel
ASP.NET
WPF
Behavior
Text/XML
Encoder
Reliable
Channel
TCP
Channel
WinForm
Queue
Channel
NT Service
Binary
Encoder
COM+
WCF Summary
WCF is the future of distributed computing
It combines the best of all existing Microsoft
distributed computing stacks
It uses WS-* standards for interoperability and .NET
value-add for performance and integration with
existing solutions
WCF is available for Windows Vista, Windows XP
SP2, Windows Server 2003, Windows Server 2008