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
Agenda
      Recomendações para a construção de
      serviços com WCF
      Conclusões
      Recursos




    Publicação: Outubro/2009
2
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
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
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
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
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
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
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
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
Hosting de Serviços




12
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
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
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
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
Binding para serviços assíncronos




                                      Usando o
                              msmqIntegrationBinding
                              para serviços assíncronos.




17
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
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
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
Segurança com WCF
       Web Service Security Guidance




21
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
Nomenclatura - Métodos
      Recomendação: Evite round-trips
        Compare com mundo real

      Exemplos
        Evitar: GetCustomerFirstName,
        GetCustomerLastName
        Utilizar: GetCustomer


23
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
Versionamento de contrato




                            Versionamento
                          padronizado para o
                          contrato de dados.




25
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
Validação WCF com EntLib 4.1




                           Definindo o tipo de
                           validação de dados




27
Logging de serviços WCF
     Usando a Enterprise Library



                                    Escolhendo o Trace
                                      Listener para as
                                   mensagens de Logging




28
Logging de serviços WCF
     Usando a Enterprise Library
                                    Usando o Enterprise
                                   Library Logging para o
                                    trace de eventos no
                                        serviço WCF.




29
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
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
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
© 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

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
  • 4.
  • 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 umserviç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
  • 12.
  • 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 “ServiceHops” 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áriosassí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çosassíncronos Usando o msmqIntegrationBinding para serviços assíncronos. 17
  • 18.
    Pattern de ServiçosAssí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.
    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
  • 21.
    Segurança com WCF Web Service Security Guidance 21
  • 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
  • 25.
    Versionamento de contrato Versionamento padronizado para o contrato de dados. 25
  • 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 comEntLib 4.1 Definindo o tipo de validação de dados 27
  • 28.
    Logging de serviçosWCF Usando a Enterprise Library Escolhendo o Trace Listener para as mensagens de Logging 28
  • 29.
    Logging de serviçosWCF 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
  • 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. 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
  • 34.
    © 2008 MicrosoftCorporation. 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