Поделиться через


Урок 3. Настройка службы заказов с помощью Windows PowerShell

Время выполнения: 20 минут

Цель: демонстрация использования командлетов Microsoft AppFabric 1.1 для Windows Server для настройки приложений.

Задача: Командлеты AppFabric для Windows PowerShell представляют собой полезный инструмент, который разработчики и администраторы могут использовать для автоматизации настройки приложений, включающих службы WCF и WF, и управления ими. В этом уроке будет изменена настройка наблюдения и сохраняемости для приложения "Служба заказов".

Предварительные условия

Перед началом занятия обратите внимание на следующие требования:

Процедура

Для изменения настройки приложения "Служба заказов" в Windows PowerShell будут выполнены следующие процедуры:

  1. создание и инициализация хранилища данных наблюдения и хранилища сохраняемости для приложения;

  2. создание строк подключения для хранилища;

  3. настройка службы OrderWorkflow для приложения "Служба заказов" с использованием новых хранилищ данных наблюдения и сохраняемости;

  4. включение протокола net.pipe для приложения.

Создание и инициализация баз данных наблюдения и сохраняемости

В этом разделе будет создано и инициализировано новое хранилище данных наблюдения и новое хранилище сохраняемости для приложения "Служба заказов".

Создание и инициализация хранилища данных наблюдения

  1. Выполните следующую команду в Windows PowerShell.

    Initialize-ASMonitoringSqlDatabase -Database "OrderService_PS" -Admins "AS_Administrators","NT AUTHORITY\LOCAL SERVICE" -Readers "AS_Observers" -Writers "BUILTIN\IIS_IUSRS" | fl *
    

    Обратите внимание, что указанное имя хранилища имеет суффикс «_PS», указывающий на то, что оно создано с помощью Windows PowerShell. Это позволяет избежать конфликтов с учебным курсом, посвященным пользовательскому интерфейсу.

    Разрешения, установленные для хранилища, основаны на разрешениях и именах участников AppFabric по умолчанию.

    В предыдущей команде результирующий объект хранилища был конвейеризирован в псевдоним fl для командлета Format-List среды Windows PowerShell. Результат операции проще оценить, используя формат списка, а не формат таблицы, используемый по умолчанию, так как в формате по умолчанию результат обрезается.

  2. Убедитесь, что выходные данные после выполнения этой команды в Windows PowerShell выглядят примерно следующим образом и не содержат ошибок.

    Server           : SERVER1
    Database         : OrderService_PS
    ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS;Integrated Security=True
    

Новое хранилище данных наблюдения OrderService_PS теперь была создано и инициализировано для наблюдения.

Создание и инициализация хранилища сохраняемости

Чтобы инициализировать хранилище OrderService_PS, создав таблицы и артефакты сохраняемости, используйте командлет Initialize-ASPersistenceDatabase. Командлет принимает три параметра, связанных с безопасностью:

  • -Admins

  • -Readers

  • -Users

В этом учебном курсе снова используются имена участников AppFabric по умолчанию. При использовании этих параметров командлета необходимо задавать полные имена участников. Для этого следует использовать поставщик среды Windows PowerShell для разрешения имени локального компьютера. Чтобы увидеть, как это работает, введите следующую команду в Windows PowerShell.

$env:COMPUTERNAME

Результатом этой команды будет имя локального компьютера, соответствующее переменной среды COMPUTERNAME. Этот подход следует использовать для указания полных имен участников AppFabric по умолчанию.

Создание и инициализация хранилища сохраняемости для приложения "Служба заказов"

  1. Введите следующую команду в Windows PowerShell для инициализации хранилища OrderService_PS для целей сохраняемости с использованием имен участников AppFabric по умолчанию.

    Initialize-ASPersistenceSqlDatabase -Database "OrderService_PS" -Admins "$($env:COMPUTERNAME)\AS_Administrators" -Readers "$($env:COMPUTERNAME)\AS_Observers" -Users "BUILTIN\IIS_IUSRS" –Confirm:$false | fl *
    

    Обратите внимание на переданный параметр –Confirm:$false. Он позволяет подавить запросы на подтверждение изменений в хранилище.

  2. Убедитесь, что результат аналогичен приведенному ниже и не содержит ошибок.

    Server           : SERVER1
    Database         : OrderService_PS
    ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS
    

Хранилище OrderService_PS теперь инициализировано для целей сохраняемости.

Создание строки подключения

Чтобы настроить в приложении использование только что созданных хранилищ данных наблюдения и сохраняемости, следует создать строку подключения для нового хранилища. В настоящее время модуль ApplicationServer для Windows PowerShell не включает соответствующий командлет. В связи с этим будет использован пример сценарной функции, основанный на коде примера Настройка AppFabric с помощью сценариев, позволяющий добиться нужного результата. Дополнительные сведения об этом примере см. в разделе Примеры.

Создание строки соединения для нового хранилища

  1. В Windows PowerShell введите следующую команду, чтобы открыть файл Utility.ps1.

    Notepad Utility.ps1
    
  2. Скопируйте и вставьте следующий код в конец файла в Блокноте.

    #=========================================================================================================#
    #===                                                                                                   ===#
    #=== 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)
    }
    
  3. Закройте Блокнот и нажмите кнопку Сохранить, чтобы сохранить файл Utility.ps1.

  4. В Windows PowerShell введите следующую команду, чтобы добавить сценарий Utility.ps1 в качестве модуля для текущего сеанса Windows PowerShell.

    import-module .\Utility.ps1
    
  5. В Windows PowerShell для добавления новой строки подключения используется функция UpdateConnectionString. Следует выбрать правильный источник данных исходя из того, какая версия Microsoft SQL Server установлена на компьютере, где проходит учебный курс, — Microsoft SQL Server или экспресс-выпуск SQL Server.

    • Если установлен только экспресс-выпуск SQL Server, используйте следующую команду, в которой в качестве источника данных на локальном компьютере используется именно экспресс-выпуск SQL Server:

      UpdateConnectionString "OrderService_PS" "Data Source=.\SQLEXPRESS;Initial Catalog=OrderService_PS;Integrated Security=True"
      
    • При наличии SQL Server используйте следующую команду, в которой в качестве источника данных используется SQL Server:

      UpdateConnectionString "OrderService_PS" "Data Source=localhost;Initial Catalog=OrderService_PS;Integrated Security=True"
      
  6. Проверьте новую строку подключения, запустив Диспетчер IIS и дважды щелкнув пункт Конфигурация базы данных наблюдения. При этом новая строка подключения OrderService_PS должна отобразиться вместе со строками подключения по умолчанию. Новая строка подключения должна иметь состояние Инициализирована.

Теперь можно настроить для приложения "Служба заказов" в AppFabric использование хранилища OrderService_PS для целей наблюдения и сохраняемости.

Настройка использования баз данных наблюдения и сохраняемости в приложении

Настройка использования нового хранилища для наблюдения на веб-сайте OrderService_PS

  1. В Windows PowerShell введите следующую команду для настройки использования нового хранилища в целях наблюдения на веб-сайте OrderService_PS.

    Set-ASAppMonitoring -SiteName OrderService_PS -MonitoringLevel HealthMonitoring -ConnectionStringName OrderService_PS
    
  2. Убедитесь, что выходные данные команды похожи на приведенные ниже; в них показаны параметры наблюдения, примененные к веб-сайту.

    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          : /
    

Настройка использования нового хранилища для сохраняемости на веб-сайте OrderService_PS

  1. В Windows PowerShell выполните следующую команду.

    Set-ASAppSqlServicePersistence -SiteName OrderService_PS -ConnectionStringName OrderService_PS
    
  2. Убедитесь, что выходные данные команды похожи на приведенные ниже; в них показаны параметры сохраняемости, примененные к веб-сайту.

    ConnectionString              :
    ConnectionStringName          : OrderService_PS
    HostLockRenewalPeriod         : 00:00:20
    InstanceCompletionAction      : DeleteNothing
    InstanceEncodingOption        : GZip
    InstanceLockedExceptionAction : BasicRetry
    AuthorizedWindowsGroup        : AS_Administrators
    IsLocal                       : True
    BehaviorName                  :
    

Включение протокола net.pipe

Протокол net.pipe должен быть уже включен для веб-приложения OrderWorkflowService, если были выполнены соответствующие шаги раздела Урок 3: Настройка службы заказов в учебном курсе "Order Service". Тем не менее здесь будет показано, как включить протокол с помощью Windows PowerShell. модуль ApplicationServer для Windows PowerShell не предоставляет командлет для этой операции. Вместо этого операция выполняется с помощью программы Appcmd.exe. Дополнительные сведения о Appcmd.exe содержатся в следующей статье: Appcmd.exe (https://go.microsoft.com/fwlink/?LinkId=169337).

Чтобы включить протокол net.pipe для веб-приложения OrderWorkflowService, выполните следующую команду в среде Windows PowerShell.

.$env:SystemRoot\System32\inetsrv\appcmd.exe set app "OrderService_PS/OrderWorkflowService" /enabledProtocols:"http,net.pipe"

Appcmd.exe сообщит об успешном выполнении операции в Windows PowerShell следующим образом.

APP object "OrderService_PS/OrderWorkflowService" changed

Содержание занятия

В этом занятии с помощью командлетов AppFabric было создано новое хранилище данных наблюдения и сохраняемости. Также в файле Web.config была создана новая строка подключения, а на веб-сайте OrderService_PS было настроено использование нового хранилища для наблюдения и сохраняемости. Эти команды можно добавить в сценарий Windows PowerShell для автоматизации настройки приложений.

Дальнейшие действия

В разделе Урок 4: Наблюдение за службой заказов с помощью Windows PowerShell рассказывается о наблюдении за приложениями с помощью командлетов AppFabric.

См. также

Основные понятия

Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell

Другие ресурсы

Урок 1: Начало работы с командлетами AppFabric для Windows PowerShell
Урок 2: Развертывание приложения службы заказов с помощью Windows PowerShell
Урок 3: Настройка службы заказов с помощью Windows PowerShell
Урок 4: Monitoring the Order Service with Windows PowerShell

  2012-03-05