8
Introducing WCF Ken Casada Developer Evangelist Microsoft Switzerland Blog: http :// blogs.msdn.com/swiss_dpe_team/Default.aspx [email protected]

Introducing WCF

  • Upload
    kerri

  • View
    62

  • Download
    0

Embed Size (px)

DESCRIPTION

Introducing WCF. Ken Casada Developer Evangelist Microsoft Switzerland Blog: http :// blogs.msdn.com/swiss_dpe_team/Default.aspx [email protected]. Sys.Messaging. Ent Services. Attribute-based programming. Message- based programming. Windows Communication Foundation. - PowerPoint PPT Presentation

Citation preview

Page 2: Introducing  WCF

Interop withother platforms

ASMX

Ent ServicesAttribute-

based programmi

ng

WSE

WS-* protocols

Sys.MessagingMessage-

based programming

Locationtransparency

Remoting

Unified framework supersets existing technologies

Windows Communication Foundation

Page 3: Introducing  WCF

20,379 lines security

5,988 lines reliable messaging

25,507 lines transactions

Total lines 56,296

4,442 lines infrastructure

class HelloService { [WebMethod] public String Hello(String Greeting) {

X509CertificateCollection collection = new X509CertificateCollection();IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB))); IntPtr data = (IntPtr)((int)blob + Marshal.SizeOf(typeof(CRYPTOAPI_BLOB)));…

SeqAckRange range = new SeqAcknRange(id, low, high );SeqAckRange[] ranges = { range };ReliableQueue.ProcessAcks( ranges );…

BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction);…

return Greeting; }}

ProductivityUsing Visual Studio .NET 2003

Page 4: Introducing  WCF

10 lines security

1,804 lines reliable messaging

25,507 lines transactions

Total lines 27,321

class HelloService { [WebMethod] public String Hello(String Greeting) {

foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecToken }

… SeqAckRange range = new SeqAcknRange(id,low,high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); …

BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); …

return Greeting; }}

ProductivityUsing Visual Studio .NET 2003 and WSE

Page 5: Introducing  WCF

1 code + 2 config (elem.)security

0 code + 1 config (elem.)

reliable messaging2 code + 1 config (attr.)

transactionsTotal lines:

3 code (what) + 4 config (how)

Using Visual Studio 2005 and WCF

[ServiceContract]class HelloService { [OperationContract] [PrincipalPermission(SecurityAction.Demand, Role = “Adminstrators")] [TransactionFlow(TransactionFlowOption.Mandatory)] [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] String Hello(String Greeting) {return Greeting;}}

<bindings> <wsHttpBinding> <binding name="Binding1“ transactionFlow="true"> <security mode="Message"> <message clientCredentialType="Windows“/> </security> <reliableSession enabled="true" /> </binding> </wsHttpBinding></bindings>

Productivity

Page 6: Introducing  WCF

Client Service

Endpoints

EndpointEndpoint

Endpoint

Endpoint

Page 7: Introducing  WCF

Client Service

Endpoint Address, Binding, Contract

CBA

CBA

CBA

ABC

AddressWhere?

ContractWhat?

BindingHow?

Page 8: Introducing  WCF

WCF