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:
É necessário fazer download dos arquivos de tutorial em https://go.microsoft.com/fwlink/?LinkId=160309.
Também é necessário extrair os arquivos de tutorial para o diretório C:\, conforme documentado na Lição 1: introdução para o Tutorial usando a interface do Windows Server AppFabric.
Você deve concluir a Lição 1: introdução aos cmdlets do Windows Server AppFabric para Windows PowerShell.
Procedimento
Siga as etapas a seguir como parte do processo de reimplantação do aplicativo Order Service:
Prepare os arquivos de configuração para a implantação
Crie os pacotes de implantação usando o MSBuild com o Windows PowerShell.
Crie o site OrderService_PS e o pool de aplicativos.
Implante cada serviço da Web com a ferramenta Web Deployment e o Windows PowerShell.
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.
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.
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.
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.
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).
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"
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'
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'
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'
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
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.
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
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
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).
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"
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)
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)
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.
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.
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.
Feche o bloco de notas e clique em Salvar quando o sistema solicitar que salve Utility.ps1.
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
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