ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
AAB306 - Wcf Services Best Practices - wcamb
1. Recomendações para a
construção de serviços com WCF
Waldemir Cambiucci
Arquiteto de Soluções twitter.com/wcamb
Microsoft Brasil blogs.msdn.com/wcamb
1
2. Agenda
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 abordagem para cenários de
serviços implementados com WCF.
Apresentar alguns aspectos importantes para a
construção de serviços 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. 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ê)
6
7. Recomendações gerais
Hosting de serviços
Encadeamento de serviços
Reconhecimento de cenários assíncronos
Segurança de serviços
Escolha de bindings adequados
Nomenclatura e versionamento
Validação, tratamento de exceção, logging,
etc…
7
8. Hosting de serviços
Self-Hosting Managed-Hosting
Cenários Cenário
Não possui controle Possui controle do
do ambiente ambiente
Aplicações P2P Alta escalabilidade,
disponibilidade,
gerenciamento
Implementação
Windows Service
Implementação
Windows 2008:
Console Application
IIS/WAS
WinForms, WPF,
Windows 2008
etc.
R2/.NET Framework
4.0: Dublin
8
9. Hosting de serviços
Windows Server 2003
IIS 6 para serviços HTTP
Windows Services para serviços não-HTTP
Windows Server 2008 / Windows Server 2008 R2
IIS 7 para serviços HTTP
IIS 7 / Windows Process Activation Service (WAS)
para todos os protocolos
Windows Services também pode ser usado
Dublin irá oferecer novos recursos para
administração e hosting de serviços WCF e WF
9
10. Modelo de Hosting
Funcionalidade Windows Service IIS 6, IIS 7 / WAS
Domínio de processos e aplicação Sim Sim
Configuração externa de serviço Sim Sim
Service Activation Não Sim
Health Monitoring e Recycling Não Sim
Ferramentas de Gerenciamento Não Sim
Existem ainda outras “Dublin” deve melhorar
considerações sobre ainda mais essas
protocolos, gerenciamento, funcionalidades…
limitações, etc…
10
11. Arquitetura IIS 7 / WAS
Worker Process
(w3wp.exe)
App Domain
TcpProcess
HttpHandler
ProtocolHandler
Windows
Activation NamedPipeProcess MsmqProcess Protocol
Service HttpModule ProtocolHandler ProtocolHandler Handlers
(WAS)
w3svc inpas itcpas imsmqas
HTTP Named Pipe Tcp Msmq Listener
Listener Adapter Listener Adapter Listener Adapter Listener Adapter Adapters
Protocol
http.sys net.pipe net.tcp net.msmq Listeners
HTTP Named Pipe TCP MSMQ
11
13. Hosting de Serviços
Avalie os protocolos esperados para transporte e
entrega de mensagens
bindings suportados / bindings customizados
Avalie as ferramentas de administração e monitoração
de serviços no hosting
Self-Hosting vs. Managed-Hosting
Avalie as questões de threading e tratamento de
concorrência no hosting
Requisições concorrentes e throtling
13
14. Encadeamento de serviços IIS IIS
ASP.NET Web Application ASP.NET Web Application
Web Server Web Server
Propagação de
credenciais,
authn, authz
Windows Service Windows Service
Business Service Business Service
Application Server Application Server Monitoração
Logging,
Caching, etc...
Windows Service Windows Service Windows Service
Processing Processing Processing
Service Service Service
Processing Server Processing Server Processing Server
14
15. Limitando o “Service Hops”
Cruzar processos e fronteiras de máquinas exige
WCF:
Essencial para a distribuição de funcionalidades e
escalabilidade de aplicações.
O desenho orientado a serviços implica no reuso via
serviços, mesmo para chamadas in-process.
Algumas aplicações não podem suportar mais de 2
encadeamentos de serviços numa única requisição.
Criar um baseline/benchmark para sua aplicação.
15
16. Reconheça os cenários assíncronos
Bindings como NetMsmqBinding e o
MsmqIntegrationBinding permitem a entrega através
de filas de mensagens, para soluções assíncronas.
msg1
Cliente Fila MSMQ
WCF
Dispatcher
Proxy Service
msg
MSMQ
Channel
Listener
msg2
WCF
Dispatcher
Service
16
17. Binding para serviços assíncronos
Usando o
msmqIntegrationBinding
para serviços assíncronos.
17
19. Segurança com WCF
Segurança por transporte:
SSL, TLS, IPSec
Ponto-a-Ponto
Aplicado para toda mensagem
Segurança por mensagem:
Segurança para Web Services (WS*)
Segurança para o receptor de mensagens
Segurança para partes da mensagem
19
20. Segurança com WCF
Modo de segurança
Níveis de proteção
Credenciais para cliente e servidor
Impersonation
Negociação de credenciais
Sessões de segurança
Comportamentos de autenticação e
autorização
Web Service Security Guidance
http://www.codeplex.com/WCFSecurityGuide
20
22. Nomenclatura - Métodos
Utilize sempre significados específicos para
seus métodos e interfaces
CreateCustomer / CriarCliente
Recomendação: utilizar “Verbo Simples +
Substantivo”
CreateAccount / CriarConta
VerifyApproval / VerificarAprovacao
GetCustomer / ObterCliente
22
23. Nomenclatura - Métodos
Recomendação: Evite round-trips
Compare com mundo real
Exemplos
Evitar: GetCustomerFirstName,
GetCustomerLastName
Utilizar: GetCustomer
23
24. Versionamento de contrato
Recomendação:
adote uma padronização para versionamento do
contrato de serviços e de dados.
URL da empresa
Nome do
serviço Versão Ano/Mês
ou v1.0.0.0
Nome da
aplicação
24
26. Validação
Assuma que todo input requer atenção na
interface de serviços.
Valide os dados conforme tipo, tamanho, formato,
limites e o domínio de aplicação.
Use o modelo de validação integrado ao WCF
na Enterprise Library 4.1
Enterprise Library 4.1 - October 2008
Hands-On Labs for Enterprise Library 4.1
Use a Enterprise Library 4.1 sempre que possível!
26
27. Validação WCF com EntLib 4.1
Definindo o tipo de
validação de dados
27
28. Logging de serviços WCF
Usando a Enterprise Library
Escolhendo o Trace
Listener para as
mensagens de Logging
28
29. Logging de serviços WCF
Usando a Enterprise Library
Usando o Enterprise
Library Logging para o
trace de eventos no
serviço WCF.
29
30. Bindings versus Segurança
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
30
32. Conclusões
WCF realiza a separação entre serviço e protocolos,
com grande poder de abstração, suportando múltiplos
protocolos e múltiplos hosts.
WCF simplifica a implementação e a configuração de
interfaces de serviços.
Existem diversos aspectos relacionados a construção
de serviços como:
hosting de serviços, encadeamento de serviços,
reconhecimento de cenários assíncronos, segurança de
serviços, escolha de bindings adequados, nomenclatura e
versionamento, entre outros.
32
33. 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
33