demystifying windows communication foundation

49
Keith Elder Microsoft MVP INETA Speaker Blog: http://keithelder.net/blog/ Demystifying Windows Communication Foundation

Upload: bala-subra

Post on 17-Jun-2015

476 views

Category:

Documents


4 download

DESCRIPTION

Intro to WCF

TRANSCRIPT

Page 1: Demystifying Windows Communication Foundation

Keith ElderMicrosoft MVP

INETA Speaker

Blog: http://keithelder.net/blog/

Demystifying Windows Communication Foundation

Page 2: Demystifying Windows Communication Foundation

Originally from Ripley, Ms

1. Raised on a small farm2. Yes I have milked a cow, slopped

the chickens and fed the hogs3. Home of the 2nd largest flea

market in the US

Page 3: Demystifying Windows Communication Foundation

Modelled During the 80's

Page 4: Demystifying Windows Communication Foundation
Page 5: Demystifying Windows Communication Foundation

Quicken Loans

$500! Cash!

Page 6: Demystifying Windows Communication Foundation

About Quicken Loans

Originally founded in 1985 as Rock Financial by Dan Gilbert

Grew to one of the largest independent mortgage banks in the country1998 IPO1999 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 employeesLargest online retail home loan lender

Page 7: Demystifying Windows Communication Foundation

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

Page 8: Demystifying Windows Communication Foundation

Agenda

How We Got Here

ASMX vs WCF Throwdown

WCF ContractsService

Data

Message

Bindings

Security

Reliability

Declarative

Summary

Page 9: Demystifying Windows Communication Foundation

From Objects to Services

PolymorphismEncapsulationSubclassing

Message-basedSchema+ContractBinding via Policy

1980s

2000s

Interface-basedDynamic LoadingRuntime Metadata

1990s

Object-Oriented

Service-Oriented

Component-Based

Page 10: Demystifying Windows Communication Foundation

The Challenge Radically Simplifying Distributed Application Development

Development of connected systemsremains costly and frustrating

Different programming models for different tasksNeed for security and reliable messagingInteroperability with applications on other platformsProductive service-oriented programming model needed

Page 11: Demystifying Windows Communication Foundation

Windows Communication Foundation

Unified framework for

rapidly building

service-oriented applications

Page 12: Demystifying Windows Communication Foundation

What Does WCF Replace?

ASMX

WSE

.NET RemotingCOM+

(Enterprise Services)

MSMQ

Page 13: Demystifying Windows Communication Foundation

DEMO

Page 14: Demystifying Windows Communication Foundation

OUR CURRENT ASMX SERVICES INVESTMENT VS WCF

Page 15: Demystifying Windows Communication Foundation

Current ASMX Web Services

Page 16: Demystifying Windows Communication Foundation

What’s So Different About WCF

Page 17: Demystifying Windows Communication Foundation

UNDERSTANDING WCF PRINCIPLES

Page 18: Demystifying Windows Communication Foundation

Services and Clients

Client Service

Message

Message

Page 19: Demystifying Windows Communication Foundation

Endpoints

Client Service

MessageEndpoint Endpoint

Endpoint

Page 20: Demystifying Windows Communication Foundation

Address, Binding, Contract

Client Service

Message

Address Binding Contract

(Where) (How) (What)

Endpoint

ABC A B C

Endpoints

A B C

Page 21: Demystifying Windows Communication Foundation

WCF Architecture: Messaging Runtime

Transport

Encoder

Protocol(s)

Transport

Encoder

Protocol(s)

ClientDispatcher

Service Contractand

Behaviors

Binding

Address

Page 22: Demystifying Windows Communication Foundation

CONTRACTSThe what

Page 23: Demystifying Windows Communication Foundation

Three Types of Contracts

Service Contract

Defines Operations,

Behaviors and Communication

Shape

What does your service do

Data Contract

Defines Schema and Versioning Strategies

What obect data is used

Message Contract

Allows defining application-

specific headers and unwrapped body content

Allows control over the SOAP

structure of messages

Page 24: Demystifying Windows Communication Foundation

Ways to Talk

One Way: Datagram-style delivery

Request-ReplyImmediate Reply on same logical thread

DuplexReply “later” and on backchannel (callback-style)

Client Service

One Way

Request-Reply

Duplex (Dual)

Page 25: Demystifying Windows Communication Foundation

SERVICE CONTRACTSWhat does your service do?

Page 26: Demystifying Windows Communication Foundation

Service Contract

using System.ServiceModel;

[ServiceContract]public interface ICalculate {

[OperationContract] double Add( double a, double b); [OperationContract] double Subtract( double a, double b);

}

Page 27: Demystifying Windows Communication Foundation

Service Contract: OneWay

[ServiceContract]public interface IOneWayCalculator{ [OperationContract(IsOneWay=true)] void StoreProblem (ComplexProblem p);}

Page 28: Demystifying Windows Communication Foundation

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);}

Page 29: Demystifying Windows Communication Foundation

DEMO – SERVICE CONTRACT

Page 30: Demystifying Windows Communication Foundation

DATA CONTRACTSWhat object data needs to flow back and forth?

Page 31: Demystifying Windows Communication Foundation

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

Page 32: Demystifying Windows Communication Foundation

MESSAGE CONTRACTS

Defines the mapping between the type and a SOAP envelope

Page 33: Demystifying Windows Communication Foundation

Message Contract

[MessageContract]public class ComplexProblem{ [MessageHeader] public string operation; [MessageBody] public ComplexNumber n1; [MessageBody] public ComplexNumber n2; [MessageBody] public ComplexNumber solution; // Constructors…}

Page 34: Demystifying Windows Communication Foundation

BINDINGS

Page 35: Demystifying Windows Communication Foundation

Bindings & Binding Elements

Transport

IPCMSMQ

Custom

TCP HTTP

ProtocolEncoders

.NETTX

Custom

Security Reliability

Binding

HTTP TXSecurity ReliabilityText

Text

Binary

Custom

Page 36: Demystifying Windows Communication Foundation

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

Page 37: Demystifying Windows Communication Foundation

Bindings & Behaviors: Security

Service

CBA

CBA

Client

ABC

CBA

BeBe

Bindings Insert Claims in Messages

Behaviors Implement

Security Gates

Page 38: Demystifying Windows Communication Foundation

Claims based end-to-end securitySecure end-to-end message exchangesSecure access to resourcesRecord resource access requests

X509, Username/Password, Kerberos, SAML, custom credentialsMessage security

Confidentiality and integrityTransport or message level

Access to resourcesAuthentication and authorization

Feature OverviewSecurity

Page 39: Demystifying Windows Communication Foundation

DEMO - BINDINGS

Page 40: Demystifying Windows Communication Foundation

Bindings & Behaviors: Transactions

Service

CBA

CBA

Client

ABC

CBA

BeBe

Bindings Flow Transactions

Behaviors AutoEnlist and AutoComplete

Page 41: Demystifying Windows Communication Foundation

Service

CBA

CBA

Client

ABC

CBA

Bindings provide

Session and Guarantees

Bindings & Behaviors: Reliable Sessions

Page 42: Demystifying Windows Communication Foundation

End-to-end Reliable messagingIn-order guarantees

Exactly once guarantees

Transport-Independent SessionsIntegration with ASP.NET Sessions in IIS-Hosted compatibility mode

TransactionsGuaranteed atomic success or failure across services

Feature OverviewReliability and Transactions

Page 43: Demystifying Windows Communication Foundation

Code vs. Config

Page 44: Demystifying Windows Communication Foundation

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>

Page 45: Demystifying Windows Communication Foundation

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>

Page 46: Demystifying Windows Communication Foundation

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>

Page 47: Demystifying Windows Communication Foundation

DEMO – MULTIPLE BINDINGS

Page 48: Demystifying Windows Communication Foundation

Application

Service Model

Messaging

Hosting Environments ASP.NETASP.NET WPFWPF WinFormWinForm NT ServiceNT Service COM+COM+

TCPChannel

TCPChannel

HTTPChannel

HTTPChannel

QueueChannelQueue

Channel

SecureChannelSecure

ChannelReliableChannelReliableChannel

Instance BehaviorInstance Behavior

Throttling Behavior

Throttling Behavior

Type Integ. Behavior

Type Integ. Behavior

TransactionBehavior

TransactionBehavior

ConcurrencyBehavior

ConcurrencyBehavior

ErrorBehavior

ErrorBehavior

MetadataBehaviorMetadataBehavior

BinaryEncoderBinary

Encoder

Text/XMLEncoder

Text/XMLEncoder

……

……

……

WCF Summary

WASWAS

Page 49: Demystifying Windows Communication Foundation

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