37
| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho | Rafael Godinho Especialista em Desenvolvimento http://blogs.msdn.com/rafaelgodinho Microsoft Brasil

Distribuindo Aplicações com WCF

Embed Size (px)

DESCRIPTION

Na 12ª reunião do .NetArchitects o Rafael Godinho ministrou para o grupo uma ótima palestra sobre como distribuir aplicações com WCF.

Citation preview

Page 1: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Rafael GodinhoEspecialista em Desenvolvimentohttp://blogs.msdn.com/rafaelgodinhoMicrosoft Brasil

Page 2: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Camada de serviços

O que NÃO é WCF

O que é WCF

Cenários de uso

Page 3: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Fonte: P&P - Application Architecture Guide 2.0

Page 4: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Fonte: Martin Fowler - Patterns of Enterprise Application Architecture

Page 5: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

“A camada de serviço define uma fronteira daaplicação com as operações disponíveis a partirda perspectiva dos clientes. Ela encapsula asregras de negócio, controla as transações ecoordena as respostas.”

Fonte: Martin Fowler - Patterns of Enterprise Application Architecture – Tradução livre

Page 6: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

SOA – Service Oriented Architecture

Web Service

WSDL

Page 7: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Plataforma unificada de comunicação

My

System

.NET

Remoting

ASMX

WSE

MSMQ

Enterprise

Services

WCFMy

Service

Page 8: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Evolução do .NET Frameworkao longo dos anos

.net 1.0

.net 1.1

.net 2.0

.net 3.0.net 3.5

Microsoft .NET Framework 1.0 2002

Microsoft .NET Framework 1.1 2003

Microsoft .NET Framework 2.0 2005

Microsoft .NET Framework 3.0 2006

Microsoft .NET Framework 3.5 2007

Microsoft .NET Framework 3.5 SP1 2008

Microsoft .NET Framework 4.0 2009

SP1

Page 9: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

.NET Framework 3.5 SP1

.NET Framework 3.5

.NET Framework 3.0

.NET Framework 2.0

WCF WPF WFCard

Space

REST AJAX LINQ

ADO.NET

Entity

Framework

ADO.NET

Data

Services

ASP.NET

Dynamic

Data

ASP.NET

Routing

ADO.NET CLRWeb

ServicesASP.NET

RSS

POX ATOM JSON +BCL

Page 10: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

ABC A B C

A B C

Address Binding Contract

(Onde) (Como) (O quê)

Cliente Serviço

MensagemBv

Bv

Bv

Bv

Page 11: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Page 12: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

[ServiceContract]

public interface IMyInterface

{

[OperationContract]

public void MyMethod();

}

public class MyService: IMyInterface

{

public void MyMethod()

{

...

}

}

<service>

<endpoint name=“MyService”

address=“...”

binding=“netTcpBinding”

contract=“IMyInterface” />

Address +

Binding +

Contract =

Endpoint

Definição do

contrato

Implementação do

serviço

Page 13: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Aspectos de

multi-hosting

Aspectos de

multi-protocolo e

mensagens

Aspectos de

comportamentos e

serviços

Aspectos de nível

lógico e contratos

Page 14: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Similar à um protocolo de rede

Aplicação

TCP

IP

Ethernet

Aplicação

TCP

IP

Ethernet

Page 15: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Service

Service Endpoints

Dispatcher

Client

Proxy

Channel

Channel

TransportChannel

Channel

Channel

TransportChannel

Page 16: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Criando um serviço em WCF

Page 17: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Self-Hosting Cenários

Não possui controle do ambiente

Aplicações P2P

Como Windows Service

Console Application (Desenvolvimento)

WinForms/WPF

Page 18: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Managed-Hosting

Cenário Possui controle do ambiente

Alta escalabilidade e disponibilidade

Como Windows 2008: IIS/WAS (Windows Process

Activation Service)

Windows 2008 R2/.NET Framework 4.0: Dublin (Futuro)

Page 19: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Hospedagem de serviços

Page 20: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Enterprise Web Services

Web 2.0

Aplicações na Intranet

Mensagens Enfileiradas

Page 21: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

IIS

WCF Service

SOAP/WS* SOAP SOAP/WS* SOAP/WS*

Java.NET 2.0 (ASMX)

.NET 2.0 + WSE

.NET 3.0 (WCF)

Page 22: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Característica Descrição

Hospedagem IIS6 -> Windows Server 2003

IIS7 -> Windows Server 2008

Protocolo Transporte HTTP, HTTPS

Protocolo Mensageria SOAP + WS-*

Autenticação Usuário + Senha (WS-Security)

Segurança Transmissão SSL -> HTTPS

WS-Security -> HTTP

Binding BasicHttpBinding, WsHttpBinding

Page 23: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

POX

REST

JSON

Feeds

Page 24: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Plain-Old-XML

POXService

GetCustomers()

CreateCustomer(...)

SaveCustomer(...)

DeleteCustomer(...)

GET/GetCustomers

POST/CreateCustomer

POST/SaveCustomer

POST/DeleteCustomer

Page 25: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Representational State Transfer

RESTService

GetCustomers()

CreateCustomer(...)

SaveCustomer(...)

DeleteCustomer(...)

GET/Customers

POST/Customers

PUT/Customer(x)

DELETE/Customer(x)

Page 26: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

JavaScript Object Notation

IIS

WCF Service

JSON

JavaScript Silverlight Flash

Page 27: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

AtomPub

Manipulação de informaçõesSomente leitura

RSSAtom

Início

Fim

Clientes antigos

Page 28: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Característica Descrição

Hospedagem IIS6 –> Windows Server 2003

IIS7 -> Windows Server 2008

Protocolo Transposte HTTP, HTTPS

Protocolo Mensageria XML, JSON

Autenticação Basic Authentication

Segurança SSL

Binding WebHttpBinding

WebHttpBehavior

Page 29: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

REST

Page 30: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

WCF - WCF

Client

Proxy

Service

Binary/TCP

WindowsToken

AD

Page 31: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Característica Descrição

Hospedagem Windows NT Service -> Windows Server 2003

WAS -> Windows Server 2008

Protocolo

Transporte

TCP

Named Pipes (cliente e serviço na mesma máquina)

Protocolo

Mensageria

SOAP + Binary

Segurança Credencial Windows

Certificado X.509

Binding NetTcpBinding

NetNamedPipeBinding

Page 32: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Client

Proxy

QueuedService

Client

Proxy

QueuedService

Page 33: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Característica Descrição

Hospedagem Windows NT Service -> Windows Server 2003

WAS -> Windows Server 2008

Protocolo Transporte MSMQ

Protocolo Mensageria SOAP + Binary

Segurança Certificado X.509

Binding MsmqIntegrationBinding (Legado)

NetMsmqBinding (WCF – WCF)

Page 34: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Camada de serviços

O que NÃO é WCF

Visão geral do WCF ABC

Hospedagem

Cenários de uso Enterprise Web Services

Web 2.0

Aplicações na Intranet

Mensagens Enfileiradas

Page 36: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

Rafael GodinhoEspecialista em Desenvolvimentohttp://blogs.msdn.com/rafaelgodinhoMicrosoft Brasil

Page 37: Distribuindo Aplicações com WCF

| Rafael Godinho | http://blogs.msdn.com/rafaelgodinho |

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market

conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.

MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.