Recomendações para a construção de serviços com...

34
1 Recomendações para a construção de serviços com WCF Waldemir Cambiucci Arquiteto de Soluções Microsoft Brasil twitter.com/wcamb blogs.msdn.com/wcamb

Transcript of Recomendações para a construção de serviços com...

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.

4

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

12

Hosting de Serviços

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

17

Binding para serviços assíncronos

Usando o msmqIntegrationBindingpara serviços assíncronos.

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

21

Segurança com WCFWeb Service Security Guidance

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

25

Versionamento de contrato

Versionamento padronizado para o contrato de dados.

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!

27

Validação WCF com EntLib 4.1

Definindo o tipo de validação de dados

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

31

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.