Lição 3: Configurando o Order Service com o Windows PowerShell
Tempo para conclusão: 20 minutos
Objetivo: Demonstrar usando os cmdlets Microsoft AppFabric 1.1 para Windows Server para Configurar Aplicativos.
Finalidade: Os cmdlets AppFabric no Windows PowerShell representam uma ferramenta útil que os desenvolvedores e administradores podem usar para automatizar a configuração e o gerenciamento de aplicativos que incluem serviços WCF e/ou WF. Nesta lição, você reconfigurará o monitoramento e a persistência para o aplicativo Serviço de Pedidos.
Pré-requisitos
Observe os seguintes pré-requisitos Antes de começar esta lição:
Você deve configurar a sessão do Windows PowerShell conforme documentado em Lição 1: introdução aos cmdlets do AppFabric para Windows PowerShell.
Você deve ter implantado o aplicativo Serviço de Pedidos conforme documentado em Lição 2: Implantando o aplicativo Order Service com o Windows PowerShell.
Procedimento
Você realizará os seguintes procedimentos para reconfigurar o aplicativo Serviço de Pedidos com o Windows PowerShell:
Crie e inicialize os repositórios de monitoramento e persistência para o aplicativo.
Crie as cadeias de conexão para o repositório.
Configure o serviço OrderWorkflow para o aplicativo Serviço de Pedidos para usar o novo repositório de monitoramento e de persistência.
Habilite o protocolo net.pipe para o aplicativo.
Criando e inicializando os bancos de dados de monitoramento e de persistência
Nesta seção, você irá criar e inicializar um novo repositório de monitoramento e de persistência para uso com o aplicativo Serviço de Pedidos.
Criando e inicializando o repositório de monitoramento
Execute o comando a seguir no Windows PowerShell.
Initialize-ASMonitoringSqlDatabase -Database "OrderService_PS" -Admins "AS_Administrators","NT AUTHORITY\LOCAL SERVICE" -Readers "AS_Observers" -Writers "BUILTIN\IIS_IUSRS" | fl *
Observe que o nome do repositório tem um sufixo “_PS” representando que você fez isso com o Windows PowerShell. Portanto, você não tem quaisquer conflitos de nomes com o tutorial de interface do usuário.
As permissões definidas para o repositório baseiam-se nas permissões padrão do AppFabric e nos nomes de entidade.
No comando anterior, você conectou o objeto de repositório resultante ao alias fl para o cmdlet Format-List do Windows PowerShell. É mais fácil ver o resultado da operação usando o formato de lista em vez do formato de tabela padrão, pois o formato padrão trunca o resultado.
Verifique se a saída no Windows PowerShell depois de executar este comando parece semelhante ao seguinte sem erros.
Server : SERVER1 Database : OrderService_PS ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS;Integrated Security=True
Um novo repositório de monitoramento chamado OrderService_PS foi criado e inicializado no monitoramento.
Criando e inicializando o repositório de persistência
Para inicializar o repositório OrderService_PS com tabelas e artefatos relacionados a persistência, use o cmdlet Initialize-ASPersistenceDatabase. Esse cmdlet aceita três parâmetros relacionados à segurança:
-Admins
-Readers
-Users
Nesse tutorial, você está novamente usando os nomes de entidade padrão do AppFabric. Ao usar esses parâmetros com esse cmdlet, você deve usar os nomes de entidade completos. Para fazer isso, você usará o provedor de ambiente para que o Windows PowerShell resolva o nome do computador local. Para ver como isso funciona, digite o comando a seguir no Windows PowerShell.
$env:COMPUTERNAME
O resultado do comando exibe o nome do computador local de acordo com a variável de ambiente COMPUTERNAME. Você usará essa abordagem para fornecer o nome principal completo das entidades padrão do AppFabric.
Para criar e inicializar o repositório de persistência para o aplicativo Serviço de Pedidos
Digite o comando a seguir no Windows PowerShell para inicializar o repositório OrderService_PS para persistência usando os nomes de entidade padrão do AppFabric.
Initialize-ASPersistenceSqlDatabase -Database "OrderService_PS" -Admins "$($env:COMPUTERNAME)\AS_Administrators" -Readers "$($env:COMPUTERNAME)\AS_Observers" -Users "BUILTIN\IIS_IUSRS" –Confirm:$false | fl *
Observe o parâmetro –Confirm:$false que você passou. Isso permite que você ignore os prompts para confirmar as alterações ao repositório.
Verifique se o resultado é semelhante ao exibido abaixo sem erros.
Server : SERVER1 Database : OrderService_PS ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS
O repositório OrderService_PS agora é inicializado para uso com persistência.
Criando a cadeia de conexão
Para configurar o aplicativo para usar o novo repositório de monitoramento e de persistência que acabou de criar, você deve criar uma cadeia de conexão para o novo repositório. Atualmente, o Módulo do ApplicationServer no Windows PowerShell não inclui um cmdlet para fazer isso. Usaremos então um exemplo de função de script baseado no código de amostra na amostra Configuração com script do AppFabric que mostra como você pode fazer isso. Para obter mais informações sobre essa amostra, consulte Exemplos.
Para criar a cadeia de conexão para o novo repositório
No Windows PowerShell, digite o comando a seguir para abrir Utility.ps1.
Notepad Utility.ps1
Copie e cole o código a seguir na parte inferior do arquivo no Bloco de Notas.
#=========================================================================================================# #=== ===# #=== Adds or updates the specified connection string setting in the specified .NET configuration file. ===# #=== ===# #=========================================================================================================# function UpdateConnectionString([string]$name, [string]$connectionString) { $providerName = "System.Data.SqlClient" $NETFramework4Path = gp -Path HKLM:\Software\Microsoft\'NET Framework Setup'\NDP\v4\Full $ConfigPath = "$($NETFramework4Path.InstallPath)Config\Web.config" Write-Output ("ConfigPath : " + $ConfigPath) $xml = [xml](Get-Content $ConfigPath) $root = $xml.get_DocumentElement() $connectionStrings = $root.SelectSingleNode("connectionStrings") if ($connectionStrings -eq $null) { $locations = $root.SelectNodes("location") foreach ($locationNode in $locations) { $locStrings = $locationNode.SelectSingleNode("connectionStrings") if ($locStrings -ne $null) { $connectionStrings = $locStrings } } if ($connectionStrings -eq $null) { $connectionStrings = $xml.CreateElement("connectionStrings") $root.AppendChild($connectionStrings) | Out-Null } } $xpath = "add[@name='" + $name + "']" $add = $connectionStrings.SelectSingleNode($xpath) if ($add -eq $null) { Write-Output "Adding new connection string setting..." $add = $xml.CreateElement("add") $connectionStrings.AppendChild($add) | Out-Null } else { Write-Output "Updating existing connection string setting..." } $add.SetAttribute("name", $name) $add.SetAttribute("connectionString", $connectionString) $add.SetAttribute("providerName", $providerName) Write-Output $add | Format-List $xml.Save($ConfigPath) }
Feche o Bloco de Notas e, em seguida, clique em Salvar para salvar Utility.ps1
No Windows PowerShell, digite o comando a seguir para adicionar o script Utility.ps1 como um módulo para a sessão atual do Windows PowerShell.
import-module .\Utility.ps1
No Windows PowerShell, você pode usar a função UpdateConnectionString para adicionar a nova cadeia de conexão. Você deve escolher a fonte de dados correta com base na instalação do Microsoft SQL Server ou SQL Server Express no computador usado para esse tutorial.
Se você tiver somente o SQL Server Express instalado, use o seguinte comando, que usa o SQL Server Express no computador local como a fonte de dados:
UpdateConnectionString "OrderService_PS" "Data Source=.\SQLEXPRESS;Initial Catalog=OrderService_PS;Integrated Security=True"
Se você instalou SQL Server, use o seguinte comando, que usa SQL Server como a fonte de dados:
UpdateConnectionString "OrderService_PS" "Data Source=localhost;Initial Catalog=OrderService_PS;Integrated Security=True"
Verifique a nova cadeia de conexão executando o Gerenciador do IIS e clique duas vezes no applet Monitorando configuração do banco de dados. Isso deve exibir a nova cadeia de conexão denominada OrderService_PS juntamente com as cadeias de conexão padrão. O status da nova cadeia de conexão deve ser Inicializado.
Agora, o aplicativo Serviço de Pedidos pode ser configurado por AppFabric para usar o repositório OrderService_PS para monitoramento e persistência.
Configurando o aplicativo para usar o banco de dados de monitoramento e de persistência
Para configurar site Order Service_PS para usar o novo repositório para monitoramento
No Windows PowerShell, digite o comando a seguir para configurar o monitoramento para que o site OrderService_PS use o novo repositório.
Set-ASAppMonitoring -SiteName OrderService_PS -MonitoringLevel HealthMonitoring -ConnectionStringName OrderService_PS
Verifique se sua saída da execução do comando parece semelhante ao seguinte, que exibe as configurações de monitoramento aplicadas ao site.
ConnectionStringName : OrderService_PS ConnectionString : Data Source=localhost;Initial Catalog=OrderService_PS;Integrated Security=True IsEnabled : True MonitoringLevel : HealthMonitoring ProviderId : c37234f8-4eae-41c8-9bd4-cd42706d4219 ProviderName : System.Data.SqlClient TrackingProfile : HealthMonitoring Tracking Profile SiteName : OrderService_PS VirtualPath : /
Para configurar site OrderService_PS use também o novo repositório de persistência
No Windows PowerShell, execute o comando a seguir.
Set-ASAppSqlServicePersistence -SiteName OrderService_PS -ConnectionStringName OrderService_PS
Verifique se sua saída da execução do comando parece semelhante à saída a seguir, que exibe as configurações de persistência aplicadas ao site.
ConnectionString : ConnectionStringName : OrderService_PS HostLockRenewalPeriod : 00:00:20 InstanceCompletionAction : DeleteNothing InstanceEncodingOption : GZip InstanceLockedExceptionAction : BasicRetry AuthorizedWindowsGroup : AS_Administrators IsLocal : True BehaviorName :
Habilitando o protocolo net.pipe
O protocolo net.pipe já deverá estar habilitado para o aplicativo da Web OrderWorkflowService se você tiver seguido a etapa na Lesson 3: Configuring the Order Service do Tutorial do Order Service. No entanto, esta seção mostra como habilitar o protocolo com o Windows PowerShell. O Módulo do ApplicationServer no Windows PowerShell não expõe um cmdlet para esta operação. Em vez disso, a operação é executada usando Appcmd.exe. Para obter mais informações sobre Appcmd.exe, consulte o seguinte link: Appcmd.exe (a página pode estar em inglês) (https://go.microsoft.com/fwlink/?LinkId=169337).
Para habilitar o protocolo net.pipe para o aplicativo da Web OrderWorkflowService, execute o comando a seguir no Windows PowerShell.
.$env:SystemRoot\System32\inetsrv\appcmd.exe set app "OrderService_PS/OrderWorkflowService" /enabledProtocols:"http,net.pipe"
Appcmd.exe reportará o êxito da operação no Windows PowerShell da maneira a seguir.
APP object "OrderService_PS/OrderWorkflowService" changed
O que acabei de fazer?
Nesta lição, você criou um novo repositório de monitoramento e de persistência usando cmdlets do AppFabric. Você também criou uma nova cadeia de conexão no arquivo Web.config e configurou o site OrderService_PS para usar o novo repositório para monitoramento e persistência. Você pode adicionar todos esses comandos a um script do Windows PowerShell para automatizar a configuração do aplicativo.
Próximas etapas
Em Lesson 4: Monitoring the Order Service with Windows PowerShell, você aprenderá como monitorar aplicativos usando cmdlets do AppFabric.
Consulte também
Conceitos
Lição 5: rastreando o fluxo de trabalho com o Windows PowerShell
Outros recursos
Lesson 1: Getting Started with AppFabric Cmdlets for Windows PowerShell
Lesson 2: Deploying the Order Service Application with Windows PowerShell
Lesson 3: Configuring the Order Service with Windows PowerShell
Lesson 4: Monitoring the Order Service with Windows PowerShell
2012-03-05