Lição 2: implantando o aplicativo Order Service com o Windows PowerShell

Tempo para conclusão: 25 minutos

Objetivo: Aprender como implantar aplicativos que incluem WCF e/ou serviços WF para IIS.

Finalidade: Esta lição aborda um exemplo sobre como usar o Windows PowerShell para implantação de scripts com a ferramenta Web Deployment. Você irá reimplantar o aplicativo Order Service em um site chamado OrderService_PS.

Pré-requisitos

Observe os pré-requisitos a seguir:

Procedimento

Siga as etapas a seguir como parte do processo de reimplantação do aplicativo Order Service:

  1. Prepare os arquivos de configuração para a implantação

  2. Crie os pacotes de implantação usando o MSBuild com o Windows PowerShell.

  3. Crie o site OrderService_PS e o pool de aplicativos.

  4. Implante cada serviço da Web com a ferramenta Web Deployment e o Windows PowerShell.

  5. Teste cada serviço da Web com o Windows PowerShell.

Preparando os arquivos de configuração para a implantação

Você usará o Windows PowerShell para reimplantar o aplicativo Order Service em um novo site usando a porta 95. Nesta seção, você atualizará os endereços do ponto de extremidade nos arquivos de configuração com as novas informações da porta antes da implantação.

  1. Execute o seguinte comando no Windows PowerShell para abrir o arquivo app.config do Order Client.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\app.config
    

    Substitua a seção do cliente pela seguinte seção de cliente.

            <client>
                <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService"
                    contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService"
                    name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" />
            </client>
    

    Feche o bloco de notas e clique em Salvar quando o sistema solicitar que salve as alterações.

  2. Execute o seguinte comando do Windows PowerShell para abrir o arquivo Web.config do Order Processing Service.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\Web.config
    

    Substitua a seção do cliente pela seguinte seção de cliente.

        <client>
          <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService"
            contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService"
            name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" />
        </client>
    

    Feche o bloco de notas e clique em Salvar quando o sistema solicitar que salve as alterações.

  3. Execute o seguinte comando do Windows PowerShell para abrir o arquivo Web.config do OrderWorkflowService.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\Web.config
    

    Substitua a seção do cliente pela seguinte seção de cliente.

        <client>
          <endpoint address="https://localhost:95/OrderProcessingService/OrderProcessing.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IOrderProcessing"
            contract="IOrderProcessing" name="BasicHttpBinding_IOrderProcessing" />
          <endpoint address="https://localhost:95/ShippingService/Shipping.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IShipping" contract="IShipping"
            name="BasicHttpBinding_IShipping" />
        </client>
    

    Feche o bloco de notas e clique em Salvar quando o sistema solicitar que salve as alterações.

  4. Execute o seguinte comando do Windows PowerShell para abrir o arquivo Web.config do Shipping Service.

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\Web.config
    

    Substitua a seção do cliente pela seguinte seção de cliente.

        <client>
          <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService"
            contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService"
            name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" />
        </client>
    

    Feche o bloco de notas e clique em Salvar quando o sistema solicitar que salve as alterações.

Criando pacotes de implantação usando o MSBuild com o Windows PowerShell

O Mecanismo de Compilação da Microsoft (MSBuild) é a plataforma de compilação para Microsoft e Visual Studio. O MSBuild é totalmente transparente em relação a como ele processa e compila o software, permitindo que os desenvolvedores planejem e criem produtos nos ambientes de laboratório de compilação em que o Visual Studio não está instalado. O MSBuild está incluído como parte do .NET Framework. Siga as seguintes etapas nesta seção a fim de usar o MSBuild para compilar novos pacotes de implantação no aplicativo Order Service. Esses comandos podem ser adicionados a um script do Windows PowerShell a fim de automatizar a compilação. Para obter mais informações sobre MSBuild, consulte a Visão geral do MSBuild (https://go.microsoft.com/fwlink/?LinkId=123876).

  1. No Windows PowerShell, execute o seguinte comando a fim de atribuir uma variável chamada MSBuildPath para o caminho completo do MSBuild executável no diretório .NET Framework. Esse comando determina o caminho com base no valor da cadeia de caracteres InstallPath, na chave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.

    $MSBuildPath = "$($(gp -Path HKLM:\Software\Microsoft\'NET Framework Setup'\NDP\v4\Full).InstallPath)MSBuild.exe"
    
  2. Execute o seguinte comando no Windows PowerShell para compilar o pacote de implantação do projeto OrderProcessingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\OrderProcessingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip'
    
  3. Execute o seguinte comando no Windows PowerShell para compilar o pacote de implantação do projeto OrderWorkflowService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\OrderWorkflowService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip'
    
  4. Execute o seguinte comando no Windows PowerShell para compilar o pacote de implantação do projeto ShippingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\ShippingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip'
    
  5. Verifique se todos os três arquivos zip foram criados no diretório C:\DublinTutorial\PS_DeploymentPackages, conforme mostrado a seguir:

    PS C:\> dir C:\DublinTutorial\PS_DeploymentPackages\*.zip
    
    
        Directory: C:\DublinTutorial\PS_DeploymentPackages
    
    
    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---        11/11/2009   5:40 PM      13836 OrderProcessingService.zip
    -a---        11/11/2009   5:41 PM      22717 OrderWorkflowService.zip
    -a---        11/11/2009   5:41 PM      25177 ShippingService.zip
    
  6. Se você não compilou o aplicativo OrderClient, que é usado como um cliente para os serviços, execute o seguinte comando no Windows PowerShell para compilar o aplicativo OrderClient:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\OrderClient.csproj'
    

Crie o site OrderService_PS e o pool de aplicativos.

Nesta seção você usará a ferramenta de administração Appcmd.exe do IIS para criar o site e o pool de aplicativos. Você usará o provedor de ambiente do Windows PowerShell a fim de fazer referência ao caminho para Appcmd.exe, usando a variável de ambiente SystemRoot. Para saber como isso funciona, digite o seguinte comando no Windows PowerShell:

$env:SYSTEMROOT

A saída resultante deverá mostrar o diretório raiz do sistema.

Siga as etapas a seguir para criar o site OrderService_PS e o pool de aplicativos OrderServiceAppPool_PS. Esses comandos também podem ser adicionados em um script de implantação do Windows PowerShell para automação.

  1. No Windows PowerShell, digite o seguinte comando para criar o pool de aplicativos OrderServiceAppPool_PS, configurado para usar a versão 4 do .NET Framework.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add apppool /Name:OrderServiceAppPool_PS -managedRuntimeVersion:v4.0
    

    Verifique se o comando resulta na seguinte saída sem erros.

    APPPOOL object "OrderServiceAppPool_PS" added
    
  2. Digite o seguinte comando no Windows PowerShell para criar um novo site chamado OrderService_PS, que será configurado para usar a porta 95 e armazenar seu conteúdo no diretório C:\DublinTutorial\OrderService_PS.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add site /name:OrderService_PS /bindings:http/*:95: /physicalPath:C:\DublinTutorial\OrderService_PS
    

    Verifique se o comando resulta na seguinte saída sem erros.

    SITE object "OrderService_PS" added
    APP object "OrderService_PS/" added
    VDIR object "OrderService_PS/" added
    
  3. Digite o seguinte comando no Windows PowerShell a fim de configurar o site OrderService_PS para usar o OrderServiceAppPool_PS como o pool de aplicativos padrão.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe set site OrderService_PS /applicationDefaults.applicationPool:OrderServiceAppPool_PS
    

    Verifique se o comando resulta na seguinte saída sem erros.

    SITE object "OrderService_PS" changed
    

Implantando os Serviços da Web com a ferramenta Web Deployment e o Windows PowerShell

Nesta seção, você usará a ferramenta Web Deployment para implantar os serviços da Web em um novo site chamado OrderService_PS. Este tutorial usa o sufixo “_PS” para indicar que o site foi criado com o Windows PowerShell. Os comandos mostrados nessa seção podem ser adicionados a um script de implantação do Windows PowerShell para implantar o aplicativo Order Service. Para obter mais informações sobre a ferramenta Web Deployment, consulte Ferramenta Web Deployment (https://go.microsoft.com/fwlink/?LinkId=154601).

  1. No Windows PowerShell, execute o seguinte comando para atribuir uma variável chamada MSDeployPath ao caminho completo da ferramenta Web Deployment.

    $MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
    
  2. Execute o seguinte comando no Windows PowerShell para implantar o pacote OrderProcessingService no site OrderService_PS:

    .$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/OrderProcessingService
    

    Verifique se a saída resultante é semelhante à seguinte saída sem erros.

    Info: Updating createApp (OrderService_PS/OrderProcessingService).
    Info: Adding contentPath (OrderService_PS/OrderProcessingService).
    Info: Adding dirPath (OrderService_PS/OrderProcessingService).
    Info: Adding child dirPath (OrderService_PS/OrderProcessingService\bin).
    Info: Adding child filePath (OrderService_PS/OrderProcessingService\bin\OrderProcessingService.dll).
    Info: Adding child filePath (OrderService_PS/OrderProcessingService\OrderProcessing.svc).
    Info: Adding child filePath (OrderService_PS/OrderProcessingService\Web.config).
    
    Total changes: 7 (6 added, 0 deleted, 1 updated, 0 parameters changed, 22099 bytes copied)
    
  3. Execute o seguinte comando no Windows PowerShell para implantar o pacote OrderWorkflowService no site OrderService_PS:

    .$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/OrderWorkflowService
    

    Verifique se a saída resultante é semelhante à seguinte saída sem erros.

    Info: Updating createApp (OrderService_PS/OrderWorkflowService).
    Info: Adding contentPath (OrderService_PS/OrderWorkflowService).
    Info: Adding dirPath (OrderService_PS/OrderWorkflowService).
    Info: Adding child dirPath (OrderService_PS/OrderWorkflowService\bin).
    Info: Adding child filePath (OrderService_PS/OrderWorkflowService\bin\OrderWorkflowService.dll).
    Info: Adding child filePath (OrderService_PS/OrderWorkflowService\OrderWorkflow.xamlx).
    Info: Adding child filePath (OrderService_PS/OrderWorkflowService\Web.config).
    
    Total changes: 7 (6 added, 0 deleted, 1 updated, 0 parameters changed, 84412 bytes copied)
    
  4. Execute o seguinte comando no Windows PowerShell para implantar o pacote ShippingService no site OrderService_PS:

    .$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/ShippingService
    

    Verifique se a saída resultante é semelhante à seguinte saída sem erros.

    Info: Updating createApp (OrderService_PS/ShippingService).
    Info: Adding contentPath (OrderService_PS/ShippingService).
    Info: Adding dirPath (OrderService_PS/ShippingService).
    Info: Adding child dirPath (OrderService_PS/ShippingService\bin).
    Info: Adding child filePath (OrderService_PS/ShippingService\bin\ShippingService.dll).
    Info: Adding child filePath (OrderService_PS/ShippingService\bin\ShippingService.pdb).
    Info: Adding child filePath (OrderService_PS/ShippingService\Shipping.svc).
    Info: Adding child filePath (OrderService_PS/ShippingService\Web.config).
    
    Total changes: 8 (7 added, 0 deleted, 1 updated, 0 parameters changed, 68029 bytes copied)
    

Testando os serviços da Web com o Windows PowerShell

Nesta seção, você usará uma função de script simples para verificar se é possível procurar os serviços da Web.

  1. No Windows PowerShell, digite o seguinte comando para usar o bloco de notas, a fim de criar um novo script utilitário chamado Utility.ps1.

    NotePad Utility.ps1
    

    Quando o bloco de notas iniciar e perguntar se deseja criar o arquivo, clique em Sim.

  2. Copie e cole a seguinte função de script no bloco de notas.

    #=======================================================#
    #===                                                 ===#
    #=== Performs a simple browse test to a web service. ===#
    #===                                                 ===#
    #=======================================================#
    
    function BrowseWebService($address)
    {
      trap {return $false;}
    
      $WebClient = New-Object System.Net.WebClient
    
      $content = $WebClient.DownloadString($address)
    
      $content.Contains("You have created a service.")
    }
    

    Essa função usa a classe System.Net.WebClient para analisar a resposta de texto da solicitação do endereço de serviço especificado. Se a resposta contiver a cadeia de caracteres “You have created a service.”, o teste de busca retornará $true. Caso contrário, ele retornará $false.

  3. Feche o bloco de notas e clique em Salvar quando o sistema solicitar que salve Utility.ps1.

  4. Importe o script utilitário como um módulo para a seção atual do Windows PowerShell executando o seguinte comando no Windows PowerShell.

    Import-Module .\Utility.ps1
    
  5. Teste os três serviços da Web do Order Service digitando os três comandos a seguir no Windows PowerShell.

        BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc"
    
        BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    
        BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
    

    Verifique se cada comando do BrowseWebService informou True, conforme mostrado a seguir.

    PS C:\> BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    True
    PS C:\> BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc"
    True
    PS C:\> BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
    True
    

O que acabei de fazer?

Nesta lição, você atualizou os arquivos de configuração de cada projeto para usar os novos endereços de ponto de extremidade. Depois, você criou um novo site e um novo pool de aplicativos no Windows PowerShell. Por fim, você usou o Windows PowerShell para criar e implantar cada projeto de serviço no novo site.

Próximas etapas

Na Lição 3: configurando o Order Service com o Windows PowerShell, você usará os cmdlets do AppFabric para que o Windows PowerShell configure os bancos de dados de monitoramento e persistência para o aplicativo Order Service implantado nessa lição.

Consulte também

Conceitos

Lição 1: introdução aos cmdlets do Windows Server AppFabric para Windows PowerShell
Lição 3: configurando o Order Service com o Windows PowerShell
Lição 4: monitorando o Order Service com o Windows PowerShell
Lição 5: rastreando o fluxo de trabalho com o Windows PowerShell

  2011-12-05