Introdução ao WCF: Uma plataforma para aplicações distribuídas
1. Uma introdução sobre
WCF – Windows Communication
Foundation
Waldemir Cambiucci
Arquiteto de Soluções twitter.com/wcamb
Microsoft Brasil blogs.msdn.com/wcamb
1
2. Agenda
O que é o WCF?
Cenários de serviços com WCF
Recomendações para a construção de
serviços com WCF
Conclusões
Recursos
Publicação: Outubro/2009
2
3. Objetivos da Sessão
Apresentar uma introdução sobre o WCF –
Windows Communication Foundation.
Apresentar uma abordagem para cenários de
serviços implementados com WCF.
3
5. O que é o WCF?
Plataforma para aplicações distribuídas
interoperável, escalável e orientado a mensagens
Modelo de programação unificado
ASP.NET Web Services (ASMX), .NET Remoting,
Mensageria, Enterprise Services/COM+, RESTful
Suporte n-tier, web services, protocolos WS* e
modelos de programação web:
POX, REST, JSON, AtomPub, etc.
5
6. O que é o WCF?
WCF – Windows Comunication Foundation é um
framework de desenvolvimento do .NET Framework,
que permite a construção de interfaces de serviços
para cenários diversos, oferecendo recursos para a
construção de aplicações distribuídas.
É parte integrante do .NET Framework desde a
versão 3.0.
6
7. .NET Framework 3.5 SP1
.NET ADO.NET
Entity
ADO.NET Data
Services
ASP.NET
Dynamic Data
ASP.NET
Routing
Framework Framework
.NET Framework 3.5
Principais REST AJAX LINQ RSS
recursos do
POX ATOM JSON +BCL
.NET
Framework. .NET Framework 3.0
Card
WCF WPF WF
Space
.NET Framework 2.0
Web
ADO.NET CLR Services
ASP.NET
8. O que é o WCF?
Windows Communication Foundation
Ambiente para a comunicação entre sistemas
Baseado em mensagens
Multi-protocolo
Multi-hosting
Compatível com WS, WS-*, tcp, P2P, etc.
Altamente configurável
Permite desacoplamento entre Serviços e sua
Configuração
8
9. Modelo unificado de programação
O WCF oferece um modelo unificado de programação
para a comunicação entre sistemas.
.NET Remoting
ASMX
My My
WSE
System Service
MSMQ
Enterprise
Services
9
10. Modelo unificado de programação
O WCF oferece um modelo unificado de programação
para a comunicação entre sistemas.
.NET Remoting
ASMX
My My
WCF
WSE
System Service
MSMQ
Enterprise
Services
10
11. Anatomia de um serviço WCF
Fundamentos
Um serviço é orientado a mensagens, trocadas entre
cliente e provedor.
Cliente Serviço
Bv Bv
Bv C B A Mensagem A B C Bv
11
12. Anatomia de um serviço WCF
Fundamentos
Metadata
Cliente
Bv
Endpoint Serviço
Bv C B A Mensagem A B C Bv
A B C Bv
Proxy
Address Binding Contract ServiceHost<T>()
Endpoint
(Onde) (Como) (O quê)
12
13. Arquitetura WCF
Aspectos de nível
lógico e contratos
Aspectos de
comportamentos e
serviços
Aspectos de
multi-protocolo e mensagens
Aspectos de
multi-hosting
14. Contratos
[ServiceContract]
public interface IMyInterface
{ Definição do
[OperationContract] contrato
public void MyMethod();
}
public class MyService: IMyInterface
{
public void MyMethod()
{
Implementação
... do serviço
}
}
<service>
<endpoint name=“MyService”
address=“...” Address + Binding +
binding=“netTcpBinding” Contract = Endpoint
contract=“IMyInterface” />
15. Anatomia de um serviço WCF
Canais de comunicação no WCF
Cliente
Criação de
canais no WCF
Proxy Endpoints
Channel Channel
Serviço
Dispatcher
Channel Channel
Transport Transport
Channel Channel
15
16. Bindings
T = Transport Security | M = Message Security
Binding Interop. Segurança Sessão Transação Duplex
BasicHttp BP 1.1 TM
WsHttp WS TM X X
WsDualHttp WS M X X X
NetTcp .NET TM X X X
NetNamedPipes .NET T X X X
NetMsmq .NET TM X X
NetPeerTcp .NET TM X
MsmqIntegration MSMQ TM
16
17. Composição de Bindings
ABC do WCF
Transport Encoder Security Reliability Protocol
HTTP
TCP Binary
Text WS-* WS-* WS-*
HTTP
Text
Transport
TCP
Binary WS-* WS-*
Pipes WS-*
MTOM Custom Custom
MSMQ Custom
Custom
Custom
17
18. Bindings com HTTP
BasicHttpBinding
HTTP + Text/MTOM Encoding + Transport Security
(https)
Primeira escolha para:
Integração com tudo que fala SOAP/HTTP
WS Basic Profile 1.1 compliant
WsHttpBinding / WsDualHttpBinding
BasicHttpBinding features + Segurança no nível da
Mensagem + Reliable Session + Transaction Flow
WsDualHttpBinding: Conversações Bidirecionais Duplex
Primeira escolha para:
Cenários avançados para Web Services
Federated Security, Reliable Delivery, Transaction Integration
18
19. Bindings com TCP/IP
NetTcpBinding
WCF Framing Protocol + Binary Encoding
Transport/Message Security, Reliable Session, Transactions
Bidirectional (Duplex) no mesmo socket
Prefira em relação ao WsHttpBinding quando:
Cenários WCF-a-WCF sensíveis à Largura de
Banda/Desempenho
Notificações/feedback instantâneos ao Cliente com
NAT/Firewall
NetNamedPipeBinding
Mesmas features do NetTcpBinding
Confiabilidade garantida pelo Windows
Prefira em relação ao NetTcpBinding quando:
Necessita desempenho máximo na comunicação entre
máquinas ou in-process
19
20. Bindings com MSMQ
NetMsmqBinding
Transporte MSMQ + Binary Encoding
Segurança nos níveis de Transporte/Mensagem,
Transações
Primeira escolha para:
Reliable, Durable, Queued One-Way Messaging
Cenários de alta vazão
MsmqIntegrationBinding
Transporte do MSMQ + MSMQ Encodings
Segurança do MSMQ, Transações
Primeira escolha para:
Cenários de Integração com aplicações MSMQ existentes
Integração simples com o Host Integration Server e o BizTalk
20
21. Bindings para REST
webHttpBinding
“web-friendly” WCF Binding no .NET 3.5
Permite a construção de serviços ”RESTful”
Suporta transporte HTTP e HTTPS somente
Não utiliza envelopes SOAP
WebMessageEncoding
JSON, XML, Binary
Novos bindings estão disponíveis com o .NET 3.5 SP1,
considerando integração com WF, sessões,
recuperação, etc.
21
22. Uma árvore de decisão para Bindings
Para cada cenário de aplicação
Programming WCF Services
teremos um binding específico
by Juval Lowy que melhor atende suas
necessidades.
22
24. WCF para Aplicações Intranet
Suporte ao modelo Cliente Intranet
Cliente/Servidor.
Serviços distribuídos Windows
entre processos e Active
fronteiras de máquinas. TCP
Directory
Características: NetTcpBinding
Mensagens TCP/binária Serviço
Autenticação Windows Componente de
Negócio
NetTcpBinding
DALC
24
25. WCF para Web Services
Suporte para protocolos
SOAP/WS* Cliente Internet
(Basic Profile)
Cliente Internet
(WS*)
Características:
Mensagens HTTP/Text UserName
HTTPS HTTP
Transporte seguro via
SSL ou segurança por credentials
BasicHttpBinding WSHttpBInding
mensagens
Autenticação baseada Serviço
em usuário/senha Componente de
Negócio
BasicHttpBinding e
WSHttpBinding DALC
25
26. EndPoints para Web Services
Suporte ao
wsHttpBinding
Tratando Behaviors
de serviços
26
27. WCF e mundo Web
Browser Browser
Suporte para modelos de
programação Web, clientes AJAX Silverlight
AJAX e Silverlight.
Características:
HTTP/HTTPS
POX, REST, Atom/Pub
Segurança via URL com
segurança de aplicação WebHttpBinding WebHttpBinding
WebHttpBinding para Ajax
Serviço
REST-Centric
Componentes de
Behavior webHttp(JSON) e Negócio
enableWebScript (AJAX)
DALC
27
28. EndPoints para Cliente AJAX/REST
Usando um
endpointBehavior
enableWebScript
Usando o binding
webHttpBinding
Usando o behavior
custom, para suporte
ao cliente AJAX
28
29. Serviços Distribuídos Browser
Serviços WCF podem
HTTPS
encapsular funcionalidades UserName
de negócio para aplicações credentials
Web Aplicação
ASP.NET
Suporta fronteiras
distribuídas e segurança TCP
Certificate
Certificate
Características: NetTcpBinding Store
Mensagens TCP/binário Serviço
Autenticação por certificados Componente de
NetTcpBinding Negócio
DALC
29
30. SOA Cliente Internet Cliente Internet
Browser
(Basic Profile) (WS*)
WCF é parte de uma HTTPS HTTP HTTPS
estratégia orientada
a serviços.
Aplicação
Interfaces de ASP.NET
serviços para toda
lógica de negócio.
NetTcp
WSHttp
BasicHttp
Características:
Serviço
Diversos cenários de
bindings possíveis Componente de
Negócio
Big SOA versus Little
SOA DALC
30
31. Cloud Computing
Cliente Internet Cliente Internet
Browser
(Basic Profile) (WS*)
Serviços
publicados na HTTPS HTTP HTTPS
nuvem, através de
um ISB – Internet Aplicação
ASP.NET
Service Bus
.NET Services da
Plataforma de Service
WSHttp / on-premise
Bus
Serviços Azure: Serviço
Access Control Componente de
Negócio
Service Bus Access Control
DALC
Windows Azure
.NET Services
Service Bus
31
32. WCF para Aplicações Intranet
Considerações gerais
Característica Descrição
Hospedagem Windows NT Service -> Windows Server 2003
WAS -> Windows Server 2008
Protocolo TCP
Transporte Named Pipes (cliente e serviço na mesma máquina)
Protocolo SOAP + Binary
Mensageria
Segurança Credencial Windows
Certificado X.509
Binding NetTcpBinding
NetNamedPipeBinding
32
33. WCF para Web Services
Considerações gerais
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
33
34. WCF e mundo Web
Considerações gerais
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
34
35. WCF e cenários de mensageria
Considerações gerais
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)
35
37. Resumo sobre o WCF
WCF realiza a separação entre Serviço e
Protocolos utilizados
Grande poder de abstração!
Implementa uma gama grande de protocolos
e mecanismos para diferentes cenários
Múltiplos protocolos podem ser usados para
um mesmo serviço
Simplifica a implementação e a configuração
Cabe ao arquiteto definir que protocolos e/ou
mecanismos devem ser utilizados
Pode ser customizado...
38. Resumo sobre o WCF 4.0
Novos recursos estão chegando com o WCF 4.0:
Configuração simplificada de serviços
Standard Endpoints
Discovery
Router service
Melhorias no suporte à REST
Para saber mais sobre o WCF 4.0:
A Developer's Introduction to Windows Workflow
Foundation (WF4) in .NET 4 Beta 1
http://msdn.microsoft.com/en-us/library/ee342461.aspx
A Developer’s Introduction to Windows Communication
Foundation (WCF) .NET 4 Beta 1
http://msdn.microsoft.com/pt-br/library/ee354381(en-us).aspx
39. Recursos
Série de posts sobre WCF
http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx
Windows Communication Foundation: Application Deployment
Scenarios
http://msdn.microsoft.com/en-us/library/cc512374.aspx
Série de posts sobre Cenários de WCF
http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_
rios+de+servi_26002300_231_3B00_os+WCF/default.aspx
40. Recursos (cont.)
ArqBR.Groups
http://arqbr.groups.live.com/
ArqCasts no Channel9/Brasil
http://channel9.msdn.com/brasil/
ebook Arquitetura de Soluções
http://blogs.msdn.com/wcamb/archive/2009/10/01/ebook-
sobre-arquitetura-de-solu-es.aspx
Centro de Arquitetura MSDN
http://msdn.microsoft.com/pt-br/architecture/default.aspx
40