Урок 2. Развертывание приложения службы заказов с помощью Windows PowerShell
Время для выполнения: 25 минут
Цель: научиться развертывать приложения, включающие службы WCF и/или WF, в IIS.
Назначение: В этом уроке показан один из возможных подходов к использованию Windows PowerShell для создания сценария развертывания с помощью инструмента веб-развертывания. Необходимо будет произвести повторное развертывание приложения Order Service на веб-сайте OrderService_PS.
Предварительные условия
Должны выполняться следующие условия.
Необходимо загрузить файлы учебного курса на странице https://go.microsoft.com/fwlink/?LinkId=160309.
Файлы учебного курса необходимо извлечь в каталог C:\, как описано в подразделе Урок 1. Приступая к работе в Учебник по использованию интерфейса Windows Server AppFabric.
Перед началом урока необходимо изучить Урок 1. Начало работы с командлетами Windows Server AppFabric для Windows PowerShell.
Процедура
Процесс повторного развертывания приложения Order Service включает следующие этапы.
Подготовка файлов конфигурации к развертыванию
Построение пакетов развертывания с использованием MSBuild с Windows PowerShell
Создание веб-сайта OrderService_PS и пула приложений
Развертывание каждой веб-службы с помощью инструмента веб-развертывания и Windows PowerShell
Тестирование каждой веб-службы с помощью Windows PowerShell
Подготовка файлов конфигурации к развертыванию
Для повторного развертывания приложения Order Service на новом веб-сайте через порт 95 будет использоваться Windows PowerShell. В этом разделе адреса конечных точек в файлах конфигурации перед развертыванием будут обновлены с помощью новых сведений о портах.
Выполните следующую команду в Windows PowerShell, чтобы открыть файл app.config для клиентского приложения службы заказов.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\app.config
Замените раздел client следующим разделом.
<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>
Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.
Выполните следующую команду в Windows PowerShell, чтобы открыть файл Web.config для службы Order Processing Service.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\Web.config
Замените раздел client следующим разделом.
<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>
Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.
Выполните следующую команду в Windows PowerShell, чтобы открыть файл Web.config для службы OrderWorkflowService.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\Web.config
Замените раздел client следующим разделом.
<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>
Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.
Выполните следующую команду в Windows PowerShell, чтобы открыть файл Web.config для службы отгрузки.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\Web.config
Замените раздел client следующим разделом.
<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>
Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.
Построение пакетов развертывания с использованием MSBuild с Windows PowerShell
Microsoft Build Engine (MSBuild) — это платформа построения для программного обеспечения Майкрософт и Visual Studio. MSBuild полностью прозрачна в отношении обработки и сборки программного обеспечения, что позволяет разработчикам планировать и создавать программные продукты в лабораторных средах сборки без установки Visual Studio. MSBuild входит в состав .NET Framework. В этом разделены описаны действия по использованию MSBuild для построения пакетов развертывания для приложения Order Service. Эти команды можно добавить в сценарий Windows PowerShell для автоматизации построения. Дополнительные сведения о платформе MSBuild см. в статье Общие сведения о MSBuild (https://go.microsoft.com/fwlink/?LinkId=123876).
В Windows PowerShell выполните следующую команду, чтобы присвоить переменной MSBuildPath полный путь к исполняемому файлу MSBuild в каталоге .NET Framework. Эта команда определяет путь на основании строкового значения InstallPath в разделе реестра 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"
Выполните следующую команду в Windows PowerShell, чтобы построить пакет развертывания для проекта OrderProcessingService:
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\OrderProcessingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip'
Выполните следующую команду в Windows PowerShell, чтобы построить пакет развертывания для проекта OrderWorkflowService:
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\OrderWorkflowService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip'
Выполните следующую команду в Windows PowerShell, чтобы построить пакет развертывания для проекта ShippingService:
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\ShippingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip'
Убедитесь в том, что все три ZIP-файла были созданы в каталоге C:\DublinTutorial\PS_DeploymentPackages, как показано ниже:
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
Если приложение OrderClient, используемое в качестве клиента служб, не было построено, выполните для его построения следующую команду в Windows PowerShell:
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\OrderClient.csproj'
Создание веб-сайта OrderService_PS и пула приложений
В этом разделе с помощью средства администрирования Appcmd.exe для IIS создается веб-сайт и пул приложений. Поставщик среды для Windows PowerShell будет использоваться для создания ссылки, включающей путь к файлу Appcmd.exe, с помощью переменной среды SystemRoot. Чтобы увидеть это в действии, в Windows PowerShell введите следующую команду:
$env:SYSTEMROOT
Результат выполнения команды должен содержать корневой каталог системы.
Выполните приведенные ниже действия, чтобы создать веб-сайт OrderService_PS и пул приложений OrderServiceAppPool_PS. Эти команды также можно добавить в сценарий развертывания Windows PowerShell для автоматизации процесса.
В Windows PowerShell введите следующую команду, чтобы создать пул приложений, настроенный для использования .NET Framework версии 4.
.$env:SystemRoot\System32\inetsrv\appcmd.exe add apppool /Name:OrderServiceAppPool_PS -managedRuntimeVersion:v4.0
Убедитесь в том, что результат выполнения команды не содержит ошибок.
APPPOOL object "OrderServiceAppPool_PS" added
Введите следующую команду в Windows PowerShell, чтобы создать веб-сайт с именем OrderService_PS, настроенный на использование порта 95 и хранение содержимого в каталоге C:\DublinTutorial\OrderService_PS.
.$env:SystemRoot\System32\inetsrv\appcmd.exe add site /name:OrderService_PS /bindings:http/*:95: /physicalPath:C:\DublinTutorial\OrderService_PS
Убедитесь в том, что результат выполнения команды не содержит ошибок.
SITE object "OrderService_PS" added APP object "OrderService_PS/" added VDIR object "OrderService_PS/" added
Введите следующую команду в Windows PowerShell, чтобы настроить веб-сайт OrderService_PS на использование OrderServiceAppPool_PS в качестве пула приложений по умолчанию.
.$env:SystemRoot\System32\inetsrv\appcmd.exe set site OrderService_PS /applicationDefaults.applicationPool:OrderServiceAppPool_PS
Убедитесь в том, что результат выполнения команды не содержит ошибок.
SITE object "OrderService_PS" changed
Развертывание веб-служб с помощью инструмента веб-развертывания и Windows PowerShell
В этом разделе будет произведено развертывание веб-служб на созданный веб-сайт OrderService_PS с помощью инструмента веб-развертывания. В этом учебном курсе суффикс «_PS» используется для указания на то, что веб-сайт был создан с помощью Windows PowerShell. Команды, приведенные в этом разделе, можно добавить в сценарий развертывания Windows PowerShell для развертывания приложения Order Service. Дополнительные сведения об инструменте веб-развертывания см. на странице Web Deployment Tool (https://go.microsoft.com/fwlink/?LinkId=154601 (на английском языке)).
В Windows PowerShell выполните следующую команду, чтобы присвоить переменной MSDeployPath полный путь к инструменту веб-развертывания.
$MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
Выполните следующую команду в Windows PowerShell, чтобы произвести развертывание пакета OrderProcessingService на веб-сайте 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
Убедитесь в том, что результат выполнения команды похож на следующий пример и не содержит ошибок.
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)
Выполните следующую команду в Windows PowerShell, чтобы произвести развертывание пакета OrderWorkflowService на веб-сайте 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
Убедитесь в том, что результат выполнения команды похож на следующий пример и не содержит ошибок.
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)
Выполните следующую команду в Windows PowerShell, чтобы произвести развертывание пакета ShippingService на веб-сайте 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
Убедитесь в том, что результат выполнения команды похож на следующий пример и не содержит ошибок.
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)
Тестирование веб-служб с помощью Windows PowerShell
В этом разделе используется простая функция сценария для проверки возможности доступа к веб-службам.
В Windows PowerShell введите следующую команду с помощью Блокнота, чтобы создать служебный сценарий с именем Utility.ps1.
NotePad Utility.ps1
Когда Блокнот запустится и появится запрос на создание файла, нажмите кнопку Да.
Скопируйте и вставьте следующую функцию сценария в Блокнот.
#=======================================================# #=== ===# #=== 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.") }
В этой функции используется класс System.Net.WebClient для разбора текстовой строки, полученной в ответ на запрос указанного адреса службы. Если ответ содержит строку «You have created a service» («Служба создана»), тестирующая функция вернет значение $true. В противном случае она вернет значение $false.
Закройте Блокнот и нажмите кнопку Сохранить, чтобы сохранить файл Utility.ps1.
Импортируйте служебный сценарий в качестве модуля для текущего сеанса Windows PowerShell, выполнив в Windows PowerShell следующую команду.
Import-Module .\Utility.ps1
Протестируйте все три веб-службы Order Service, выполнив в Windows PowerShell следующие команды.
BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc"
BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
Убедитесь в том, что каждая команда BrowseWebService возвращает значение True, как показано ниже.
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
Содержание занятия
В этом занятии были обновлены файлы конфигурации для каждого проекта с целью использования новых адресов конечных точек. Затем в Windows PowerShell был создан новый веб-сайт и пул приложений. Наконец, с помощью Windows PowerShell было выполнено построение и развертывание каждой службы на новом веб-сайте.
Дальнейшие действия
В Урок 3. Настройка службы заказов с помощью Windows PowerShell с помощью командлетов AppFabric для Windows PowerShell будет произведена настройка баз данных наблюдения и сохраняемости для приложения Order Service, которое было развернуто на текущем занятии.
См. также
Основные понятия
Урок 1. Начало работы с командлетами Windows Server AppFabric для Windows PowerShell
Урок 3. Настройка службы заказов с помощью Windows PowerShell
Урок 4. Наблюдение за службой заказов с помощью Windows PowerShell
Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell
2011-12-05