Interop day wcf_presentation

17
Integrando aplicações usando Windows Communication Foundation 4.0 André Luís Bonfante Analista de Desenvolvimento de Software [email protected]

description

Presentation on Windows Communication Foundation, detailing how this new Microsoft technology not only combines all the benefits of its predecessors, but addresses all their limitations. With the introduction of WCF, developers are able to develop high-quality SOA services using a single programming model and exposing it in several manners, by configuring multiple endpoints. All the benefits together make the WCF the default choice for integrating applications.

Transcript of Interop day wcf_presentation

Page 1: Interop day wcf_presentation

Integrando aplicações usando Windows Communication Foundation 4.0

André Luís BonfanteAnalista de Desenvolvimento de Software

[email protected]

Page 2: Interop day wcf_presentation

22

Tecnologias Microsoft para Integração de Aplicações• Ao longo dos anos, acompanhamos o surgimento de diversas

tecnologias Microsoft para integração de aplicações;• Cada tecnologia possuía um modelo de programação

diferente, portanto o desenvolvedor tinha de despender um esforço considerável de análise e optar pela opção que, de forma geral, atendesse melhor os requisitos.

DCOMCOM+

.NET REMOTINGMSMQ

ASMX/WSE

Page 3: Interop day wcf_presentation

33

Tecnologias Microsoft para Integração de Aplicações• Atualmente, vem crescendo a necessidade de integrarmos

aplicações de diferentes plataformas;• Alinhada a essa demanda crescente por interoperabilidade e

desacoplamento, vêm se consolidando as aplicações orientadas a serviço (SOA), onde são criados serviços expostos através de protocolos padronizados como HTTP e formatos de mensagens amplamento adotados como SOAP, XML, RSS e JSON.

.NET ApplicationWindows

Java ApplicationLinux

SOAP/HTTP

RSS/HTTP PHP ApplicationLinux

Page 4: Interop day wcf_presentation

44

Simple Object Access Protocol (SOAP )• SOAP é um formato simples e padronizado de mensagens baseado

em XML para comunicação entre aplicações, independente de plataforma e linguagem, de acordo com as WS-specifications;

• As mensagens SOAP são compostas por um cabeçalho onde especificamos os protocolos WS-* implementados pelo serviço e um corpo, onde incluimos as mensagens;

<?xml version="1.0"?> <soap:Envelope     xmlns:soap=http://www.w3.org/2003/05/soap-envelope”>    <soap:Header>    </soap:Header>    <soap:Body>        <GetExchangeRatesRequest>           <SourceCurrency>USD</SourceCurrency>           <TargetCurrency>BRL</TargetCurrency>       </GetExchangeRatesRequest>     </soap:Body></soap:Envelope> 

Reliable Messaging

Messaging

TransactionsSecurity

XML

Met

adat

a

Page 5: Interop day wcf_presentation

55

WS-Security

WS-SecureConversation

WS-Policy

WS-Trust

WS-ID-WSF

WS-Federation

WS-Privacy

WS-Test

WS-Reliable Messaging

WS-ReliableMessaging

WS-RM-Policy

WS-Transactions

WS-AtomicTransaction

WS-Coordination

WS-BusinessActivity

WS-* Specifications• WS-* é um termo genérico abrangendo diversas especificações de

requisitos não-funcionais implementados pelo serviço, determinando padrões para diversos aspectos da aplicação, como suporte a transações, criptografia de mensagens e tolerância a falhas;

Page 6: Interop day wcf_presentation

66

WS-* Specifications• Em contrapartida, as tecnologias de serviços ainda estão

amadurecendo e quanto maior o número de WS-* specifications adotadas, menor será a interoperabilidade;

Page 7: Interop day wcf_presentation

7 7

Era pré-WCFFuncionalidade .NET 

RemotingMSMQ ASMX WSE

Plataformas Windows Windows Independente

Independente

Protocolos HTTP, TCP, Named Pipes

HTTP, TCP, UDP

HTTP HTTP, TCP, UDP

Formatos de mensagens

Binário,SOAP Binário,SOAP

SOAP SOAP, Binário (MTOM)

Suporte a transações Sim Sim Não Não

WS-* Specifications N/A N/A WS-Basic-Profile

Security, SecureConveration,

Trust, WS-RMMensagens assíncronas

Sim Sim Não Sim

Modelo unificado de programação

Não Não Não Não

Suporte a múltiplos endpoints

N/A N/A Não Não

WCF

Independente

HTTP, TCP, Named Pipes, MSMQ, P2P

SOAP/Binário(MTOM

)/RSS/JSON/XML

Sim

Amplamente suportadas

Sim

Sim

Sim

Page 8: Interop day wcf_presentation

88

Windows Communication Foundation• WCF é um framework que oferece todas as vantagens das

tecnologias que o precederam, através um único modelo de programação para desenvolvimento aplicativos SOA;

• O modelo de programação é unificado, sendo possível expor um mesmo serviço usando SOAP e REST;

Page 9: Interop day wcf_presentation

99

Windows Communication Foundation• Através de configuração, expomos diversas opções aos clientes

consumindo o serviço, cada uma com combinações diferente de protocolo, formato das mensagens, design e WS-* specifications;

Cliente Requisito Localização Protocolo Formato WS-*.NET 4.0 Web Application

Performance e suporte a

transações

Intranet TCP MTOM WS-Reliability, WS-AtomicTransaction

Java Desktop Application

Segurança, Confiabilidade e

suporte a transações

Internet HTTP SOAP WS-Reliability, WS-AtomicTransaction, 

WS-SecureConversation, 

WS-Policy.NET 4.0 Web Application

Escalabilidade Internet HTTP REST Nenhuma

Page 10: Interop day wcf_presentation

1010

Endpoints• Os serviços são expostos aos clientes através dos endpoints;• Os endpoints são compostos por três elementos, também conhecidos como

ABC: – Address: o endereço onde o serviço está disponível;– Binding: especificam como clientes e WCF services se comunicam através do

endpoint, determinando o protocolo de transporte, encoding e protocolos a serem utilizados;

– Contract: define as operações suportadas e quais os formatos das mensagens de request, response e failure suportadas;

• Endpoints são utilizados tanto para expor serviços, como para consumir serviços;

<service name="InteropDay.Demo.Service1">         <endpoint address="net.tcp://localhost:8082/MyService" binding="netTcpBinding"          name="netTcpBindingEndpoint" contract="InteropDay.Demo.IService1" />    <endpoint address="http://localhost:8083/MyService" binding="wsHttpBinding"          name="wsHttpBindingEndpoint" contract="InteropDay.Demo.IService1"/>          <endpoint address="http://localhost:8085/MyService/mex"  binding="mexHttpBinding" contract="IMetadataExchange" /></service>

Page 11: Interop day wcf_presentation

1111

Hospedando WCF Services• O WCF também oferece flexibilidade quanto à tecnologia a ser

utilizada para hospedar o serviço;• Virtualmente qualquer tipo de aplicação .NET pode atuar como

um host de um WCF service. A escolha da tecnologia de host depende dos protocolos de comunicação a serem suportados.

11

Internet Information Services

HTTP

Windows Activation Services

HTTP

TCP

Named Pipes

P2P

MSMQ

Self Hosted Process(any .NET app)

HTTP

TCP

Named Pipes

P2P

MSMQ

Page 12: Interop day wcf_presentation

1212

Demo: Criação de um WCF Service

Page 13: Interop day wcf_presentation

1313

Page 14: Interop day wcf_presentation

1414

Backup Slides

Page 15: Interop day wcf_presentation

1515

Endpoints (Binding)• Bindings detalham o mecanismo de comunicação que deve ser

utilizando quando conectando ao endpoint , composto por:– definição dos protocolos que devem ser usados ao enviar as mensagens;– definição do protocolo de comunicação, como TCP, Named Pipes ou HTTP;– Definição do encoding das mensagens que são enviadas ao endpoint, como

binário, SOAP, MTOM e XML;

• Os bindings são compostos por diversos binding elements, garantindo o máximo de flexibilidade. As informações contidas no binding são utilizadas pelo runtime para criação da channel stack composta de canais de transporte e protocolo utilizados para troca das mensagens;

Client Protocol Channel Format Transport

ChannelTransport Channel Format Protocol

Channel Service

Page 16: Interop day wcf_presentation

1616

Endpoints (Binding)• O WCF prevê um conjunto de bindings predefinidos que podemos

utilizar para definir múltiplos endpoints que atendam às necessidades de cada cliente:

Binding Interporabilidade

Transporte Encoding Transações

BasicHttpBinding WS Basic Profile 1.1

HTTP SOAP Não

WsHttpBinding WS HTTP SOAP/MTOM Sim

WsDualHttpBinding WS HTTP SOAP/MTOM Sim WebHttpBinding WS HTTP (REST) HTTP 1.1

RequestsNão

NetTcpBinding .NET TCP SOAP/MTOM SimNetPeerTcpBinding .NET P2P SOAP/MTOM Sim

NetNamedPipesBinding .NET Named Pipes

SOAP/MTOM Sim

NetMsmqBinding .NET MSMQ Binário/SOAP Sim MsmqIntegrationBinding MSMQ MSMQ Binário/SOAP Sim

Page 17: Interop day wcf_presentation

1717

Endpoints (Contract)• Os contratos definem as operações e os tipos de mensagens

suportados pelo serviço. A utilização de contratos provê uma segregação clara entre a definição do serviço e sua implementação;

• A definição dos contratos no modelo de programação do WCF se dá através da adição de atributos existentes no assembly System.ServiceModel;

[ServiceContract]    public interface IMyService1    {         [OperationContract]         MyResult MyOperation1(string value);

[OperationContract] string MyOperation2(string value);    }

[DataContract]    public class MyResult    {         [DataMember] public bool MyResultValue {  get; set;  }    }