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


    Waldemir Cambiucci
    Arquiteto de Soluções        twitter....
Agenda
      Recomendações para a construção de
      serviços com WCF
      Conclusões
      Recursos




    Publicação:...
Objetivos da Sessão
     Apresentar uma abordagem para cenários de
     serviços implementados com WCF.

     Apresentar a...
4
O que é o WCF?
     Plataforma para aplicações distribuídas
       interoperável, escalável e orientado a mensagens

     ...
Anatomia de um serviço WCF
    Fundamentos

                                                        Metadata
         Clie...
Recomendações gerais
     Hosting de serviços
     Encadeamento de serviços
     Reconhecimento de cenários assíncronos
  ...
Hosting de serviços
     Self-Hosting                 Managed-Hosting
          Cenários                    Cenário
      ...
Hosting de serviços
     Windows Server 2003
       IIS 6 para serviços HTTP
       Windows Services para serviços não-HTT...
Modelo de Hosting
     Funcionalidade                     Windows Service   IIS 6, IIS 7 / WAS
     Domínio de processos e...
Arquitetura IIS 7 / WAS
                                              Worker Process
                                     ...
Hosting de Serviços




12
Hosting de Serviços
      Avalie os protocolos esperados para transporte e
      entrega de mensagens
        bindings sup...
Encadeamento de serviços    IIS                                         IIS
                                  ASP.NET Web ...
Limitando o “Service Hops”
      Cruzar processos e fronteiras de máquinas exige
      WCF:
        Essencial para a distr...
Reconheça os cenários assíncronos
      Bindings como NetMsmqBinding e o
      MsmqIntegrationBinding permitem a entrega a...
Binding para serviços assíncronos




                                      Usando o
                              msmqInt...
Pattern de Serviços Assíncronos

      namespace WcfServiceLibrary                 Pattern Begin/End
      {              ...
Segurança com WCF
      Segurança por transporte:
        SSL, TLS, IPSec
        Ponto-a-Ponto
        Aplicado para toda...
Segurança com WCF
      Modo de segurança
      Níveis de proteção
      Credenciais para cliente e servidor
      Imperso...
Segurança com WCF
       Web Service Security Guidance




21
Nomenclatura - Métodos
      Utilize sempre significados específicos para
      seus métodos e interfaces
        CreateCu...
Nomenclatura - Métodos
      Recomendação: Evite round-trips
        Compare com mundo real

      Exemplos
        Evitar...
Versionamento de contrato
       Recomendação:
         adote uma padronização para versionamento do
         contrato de ...
Versionamento de contrato




                            Versionamento
                          padronizado para o
     ...
Validação
      Assuma que todo input requer atenção na
      interface de serviços.
        Valide os dados conforme tipo...
Validação WCF com EntLib 4.1




                           Definindo o tipo de
                           validação de da...
Logging de serviços WCF
     Usando a Enterprise Library



                                    Escolhendo o Trace
       ...
Logging de serviços WCF
     Usando a Enterprise Library
                                    Usando o Enterprise
         ...
Bindings versus Segurança
                                  T = Transport Security | M = Message Security
     Binding    ...
31
Conclusões
      WCF realiza a separação entre serviço e protocolos,
      com grande poder de abstração, suportando múlti...
Recursos (cont.)
       ArqBR.Groups
         http://arqbr.groups.live.com/

       ArqCasts no Channel9/Brasil
         h...
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be...
Upcoming SlideShare
Loading in...5
×

AAB306 - Wcf Services Best Practices - wcamb

1,458

Published on

Recomendações gerais sobre serviços e questões sobre WCF.
Publicação: Outubro/2009.
Autor: Waldemir Cambiucci

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,458
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

AAB306 - Wcf Services Best Practices - wcamb

  1. 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. 2. Agenda Recomendações para a construção de serviços com WCF Conclusões Recursos Publicação: Outubro/2009 2
  3. 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
  4. 4. 4
  5. 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. 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. 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. 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. 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. 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. 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
  12. 12. Hosting de Serviços 12
  13. 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. 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. 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. 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. 17. Binding para serviços assíncronos Usando o msmqIntegrationBinding para serviços assíncronos. 17
  18. 18. Pattern de Serviços Assíncronos namespace WcfServiceLibrary Pattern Begin/End { para operações [ServiceContract] Assíncronas 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 Programming http://blogs.msdn.com/wenlong/archive/2009/02/09/scale-wcf-application-better-with- asynchronous-programming.aspx 18
  19. 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. 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
  21. 21. Segurança com WCF Web Service Security Guidance 21
  22. 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. 23. Nomenclatura - Métodos Recomendação: Evite round-trips Compare com mundo real Exemplos Evitar: GetCustomerFirstName, GetCustomerLastName Utilizar: GetCustomer 23
  24. 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
  25. 25. Versionamento de contrato Versionamento padronizado para o contrato de dados. 25
  26. 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. 27. Validação WCF com EntLib 4.1 Definindo o tipo de validação de dados 27
  28. 28. Logging de serviços WCF Usando a Enterprise Library Escolhendo o Trace Listener para as mensagens de Logging 28
  29. 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. 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
  31. 31. 31
  32. 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. 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
  34. 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. 34

×