Урок 3. Настройка службы заказов с помощью Windows PowerShell
Время выполнения: 20 минут
Цель: демонстрация использования командлетов Windows Server AppFabric для настройки приложений.
Задача: Командлеты AppFabric для Windows PowerShell представляют собой полезный инструмент, который разработчики и администраторы могут использовать для автоматизации настройки приложений, включающих службы WCF и WF, и управления ими. В этом уроке будет изменена настройка наблюдения и сохраняемости для приложения «Служба заказов».
Предварительные условия
Перед началом занятия обратите внимание на следующие требования:
Необходимо настроить сеанс Windows PowerShell, как описано в разделе Урок 1. Начало работы с командлетами Windows Server AppFabric для Windows PowerShell.
Необходимо развернуть приложение Order Service, как описано в разделе Урок 2. Развертывание приложения службы заказов с помощью Windows PowerShell.
Процедура
Для изменения настройки приложения «Служба заказов» в Windows PowerShell будут выполнены следующие процедуры:
создание и инициализация хранилища данных наблюдения и хранилища сохраняемости для приложения;
создание строк подключения для хранилища;
настройка службы OrderWorkflow для приложения «Служба заказов» с использованием новых хранилищ данных наблюдения и сохраняемости;
включение протокола net.pipe для приложения.
Создание и инициализация баз данных наблюдения и сохраняемости
В этом разделе будет создано и инициализировано новое хранилище данных наблюдения и новое хранилище сохраняемости для приложения «Служба заказов».
Создание и инициализация хранилища данных наблюдения
Выполните следующую команду в 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. Результат операции проще оценить, используя формат списка, а не формат таблицы, используемый по умолчанию, так как в формате по умолчанию результат обрезается.
Убедитесь, что выходные данные после выполнения этой команды в 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 по умолчанию.
Создание и инициализация хранилища сохраняемости для приложения «Служба заказов»
Введите следующую команду в 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. Он позволяет подавить запросы на подтверждение изменений в хранилище.
Убедитесь, что результат аналогичен приведенному ниже и не содержит ошибок.
Server : SERVER1 Database : OrderService_PS ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS
Хранилище OrderService_PS теперь инициализировано для целей сохраняемости.
Создание строки подключения
Чтобы настроить в приложении использование только что созданных хранилищ данных наблюдения и сохраняемости, следует создать строку подключения для нового хранилища. В настоящее время ApplicationServer module for Windows PowerShell не включает соответствующий командлет. В связи с этим будет использован пример сценарной функции, основанный на коде примера Настройка AppFabric с помощью сценариев, позволяющий добиться нужного результата. Дополнительные сведения об этом примере см. в разделе Примеры.
Создание строки соединения для нового хранилища
В Windows PowerShell введите следующую команду, чтобы открыть файл Utility.ps1.
Notepad Utility.ps1
Скопируйте и вставьте следующий код в конец файла в Блокноте.
#=========================================================================================================# #=== ===# #=== 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) }
Закройте Блокнот и нажмите кнопку Сохранить, чтобы сохранить файл Utility.ps1.
В Windows PowerShell введите следующую команду, чтобы добавить сценарий Utility.ps1 в качестве модуля для текущего сеанса Windows PowerShell.
import-module .\Utility.ps1
В 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"
Проверьте новую строку подключения, запустив Диспетчер IIS и дважды щелкнув пункт Конфигурация базы данных наблюдения. При этом новая строка подключения OrderService_PS должна отобразиться вместе со строками подключения по умолчанию. Новая строка подключения должна иметь состояние Инициализирована.
Теперь можно настроить для приложения «Служба заказов» в AppFabric использование хранилища OrderService_PS для целей наблюдения и сохраняемости.
Настройка использования баз данных наблюдения и сохраняемости в приложении
Настройка использования нового хранилища для наблюдения на веб-сайте OrderService_PS
В Windows PowerShell введите следующую команду для настройки использования нового хранилища в целях наблюдения на веб-сайте OrderService_PS.
Set-ASAppMonitoring -SiteName OrderService_PS -MonitoringLevel HealthMonitoring -ConnectionStringName OrderService_PS
Убедитесь, что выходные данные команды похожи на приведенные ниже; в них показаны параметры наблюдения, примененные к веб-сайту.
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
В Windows PowerShell выполните следующую команду.
Set-ASAppSqlServicePersistence -SiteName OrderService_PS -ConnectionStringName OrderService_PS
Убедитесь, что выходные данные команды похожи на приведенные ниже; в них показаны параметры сохраняемости, примененные к веб-сайту.
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. Настройка приложения HRApplicationServices из Учебник по использованию интерфейса Windows Server AppFabric. Тем не менее здесь будет показано, как включить протокол с помощью Windows PowerShell. ApplicationServer module for 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.
См. также
Основные понятия
Урок 1. Начало работы с командлетами Windows Server AppFabric для Windows PowerShell
Урок 2. Развертывание приложения службы заказов с помощью Windows PowerShell
Урок 4. Наблюдение за службой заказов с помощью Windows PowerShell
Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell
2011-12-05