Integrando aplicações usando Windows Communication Foundation 4.0 André Luís Bonfante Analista de Desenvolvimento de Software [email protected]
Jun 19, 2015
Integrando aplicações usando Windows Communication Foundation 4.0
André Luís BonfanteAnalista de Desenvolvimento de Software
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
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
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
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;
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;
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
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;
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
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>
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
1212
Demo: Criação de um WCF Service
1313
1414
Backup Slides
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
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
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; } }