View
216
Download
0
Category
Preview:
Citation preview
1
Recomendações para a construção de serviços com WCF
Waldemir CambiucciArquiteto de SoluçõesMicrosoft Brasil
twitter.com/wcambblogs.msdn.com/wcamb
2
Agenda
Recomendações para a construção de serviços com WCF
Conclusões
Recursos
Publicação: Outubro/2009
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.
5
O que é o WCF?Plataforma para aplicações distribuídas
interoperável, escalável e orientado a mensagens
Modelo de programação unificadoASP.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.
6
Anatomia de um serviço WCFFundamentos
Cliente
Serviço
MensagemABC
A B C
A B C
Metadata
Bv
Bv
Bv
Bv
Proxy
ServiceHost<T>()Address Binding Contract
(Onde) (Como) (O quê)
Endpoint
Endpoint
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…
8
Hosting de serviços
Self-HostingCenários
Não possui controle do ambiente
Aplicações P2P
ImplementaçãoWindows Service
Console Application
WinForms, WPF, etc.
Managed-HostingCenário
Possui controle do ambiente
Alta escalabilidade, disponibilidade, gerenciamento
ImplementaçãoWindows 2008: IIS/WAS
Windows 2008 R2/.NET Framework 4.0: Dublin
9
Hosting de serviçosWindows 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 paraadministração e hosting de serviços WCF e WF
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 considerações sobre
protocolos, gerenciamento, limitações, etc…
“Dublin” deve melhorar ainda mais essas funcionalidades…
11
Worker Process(w3wp.exe)
App Domain
WindowsActivationService(WAS)
w3svc
HTTPListener Adapter
HTTP
http.sys
inpas
Named PipeListener Adapter
Named Pipe
net.pipe
itcpas
Tcp Listener Adapter
TCP
net.tcp
imsmqas
Msmq Listener Adapter
MSMQ
net.msmq
NamedPipeProcessProtocolHandler
MsmqProcessProtocolHandler
TcpProcessProtocolHandler
HttpHandler
HttpModule
Protocol Handlers
ListenerAdapters
ProtocolListeners
Arquitetura IIS 7 / WAS
13
Hosting de ServiçosAvalie os protocolos esperados para transporte e entrega de mensagens
bindings suportados / bindings customizados
Avalie as ferramentas de administração e monitoraçãode 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
14
Web Server Web Server
Application Server Application Server
Processing Server Processing Server Processing Server
ASP.NET Web Application ASP.NET Web Application
IIS IIS
Business Service Business Service
Windows Service Windows Service
Processing Service
Windows Service
Processing Service
Windows Service
Processing Service
Windows Service
Enca
dea
men
to d
e se
rviç
os
Propagação de credenciais, authn, authz
Monitoração Logging,
Caching, etc...
15
Limitando o “Service Hops”Cruzar processos e fronteiras de máquinas exigeWCF:
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.
16
Reconheça os cenários assíncronos
Bindings como NetMsmqBinding e o MsmqIntegrationBinding permitem a entrega atravésde filas de mensagens, para soluções assíncronas.
Proxy
Cliente
MSMQChannelListener
Fila MSMQDispatcher
Dispatcher
WCFService
WCFService
msg
msg1
msg2
18
Pattern de Serviços Assíncronos
namespace WcfServiceLibrary{
[ServiceContract]public interface IAsyncOrderService{
[OperationContract(AsyncPattern = true)]IAsyncResult BeginGetOrders(int numOrders,
AsyncCallback callback, object state);
[OperationContract]Order[] EndGetOrders(IAsyncResult result);
}
Scale WCF Application Better with Asynchronous Programminghttp://blogs.msdn.com/wenlong/archive/2009/02/09/scale-wcf-application-better-with-asynchronous-programming.aspx
Pattern Begin/End para operações
Assíncronas
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
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 Guidancehttp://www.codeplex.com/WCFSecurityGuide
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
23
Nomenclatura - Métodos
Recomendação: Evite round-trips
Compare com mundo real
Exemplos
Evitar: GetCustomerFirstName, GetCustomerLastName
Utilizar: GetCustomer
24
Versionamento de contratoRecomendação:
adote uma padronização para versionamento do contrato de serviços e de dados.
URL da empresa
Nome da aplicação
Nome do serviço Versão Ano/Mês
ou v1.0.0.0
26
Validação
Assuma que todo input requer atenção nainterface 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!
28
Logging de serviços WCFUsando a Enterprise Library
Escolhendo o Trace Listener para as
mensagens de Logging
29
Logging de serviços WCFUsando a Enterprise Library
Usando o Enterprise Library Logging para o trace de eventos no
serviço WCF.
30
Bindings versus SegurançaT = 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
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.
33
Recursos (cont.)
ArqBR.Groupshttp://arqbr.groups.live.com/
ArqCasts no Channel9/Brasilhttp://channel9.msdn.com/brasil/
ebook Arquitetura de Soluçõeshttp://blogs.msdn.com/wcamb/archive/2009/10/01/ebook-sobre-arquitetura-de-solu-es.aspx
Centro de Arquitetura MSDNhttp://msdn.microsoft.com/pt-br/architecture/default.aspx
34
© 2008 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.
Recommended