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


Урок 2. Развертывание приложения службы заказов с помощью Windows PowerShell

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

Цель: научиться развертывать приложения, включающие службы WCF и/или WF, в IIS.

Назначение: В этом уроке показан один из возможных подходов к использованию Windows PowerShell для создания сценария развертывания с помощью инструмента веб-развертывания. Необходимо будет произвести повторное развертывание приложения Order Service на веб-сайте OrderService_PS.

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

Должны выполняться следующие условия.

Процедура

Процесс повторного развертывания приложения Order Service включает следующие этапы.

  1. Подготовка файлов конфигурации к развертыванию

  2. Построение пакетов развертывания с использованием MSBuild с Windows PowerShell

  3. Создание веб-сайта OrderService_PS и пула приложений

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

  5. Тестирование каждой веб-службы с помощью Windows PowerShell

Подготовка файлов конфигурации к развертыванию

Для повторного развертывания приложения Order Service на новом веб-сайте через порт 95 будет использоваться Windows PowerShell. В этом разделе адреса конечных точек в файлах конфигурации перед развертыванием будут обновлены с помощью новых сведений о портах.

  1. Выполните следующую команду в 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>
    

    Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.

  2. Выполните следующую команду в 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>
    

    Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.

  3. Выполните следующую команду в 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>
    

    Закройте Блокнот и нажмите кнопку Сохранить, когда будет предложено сохранить изменения.

  4. Выполните следующую команду в 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).

  1. В 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"
    
  2. Выполните следующую команду в Windows PowerShell, чтобы построить пакет развертывания для проекта OrderProcessingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\OrderProcessingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip'
    
  3. Выполните следующую команду в Windows PowerShell, чтобы построить пакет развертывания для проекта OrderWorkflowService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\OrderWorkflowService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip'
    
  4. Выполните следующую команду в Windows PowerShell, чтобы построить пакет развертывания для проекта ShippingService:

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\ShippingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip'
    
  5. Убедитесь в том, что все три 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
    
  6. Если приложение 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 для автоматизации процесса.

  1. В Windows PowerShell введите следующую команду, чтобы создать пул приложений, настроенный для использования .NET Framework версии 4.

    .$env:SystemRoot\System32\inetsrv\appcmd.exe add apppool /Name:OrderServiceAppPool_PS -managedRuntimeVersion:v4.0
    

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

    APPPOOL object "OrderServiceAppPool_PS" added
    
  2. Введите следующую команду в 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
    
  3. Введите следующую команду в 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 (на английском языке)).

  1. В Windows PowerShell выполните следующую команду, чтобы присвоить переменной MSDeployPath полный путь к инструменту веб-развертывания.

    $MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
    
  2. Выполните следующую команду в 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)
    
  3. Выполните следующую команду в 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)
    
  4. Выполните следующую команду в 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

В этом разделе используется простая функция сценария для проверки возможности доступа к веб-службам.

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

    NotePad Utility.ps1
    

    Когда Блокнот запустится и появится запрос на создание файла, нажмите кнопку Да.

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

    #=======================================================#
    #===                                                 ===#
    #=== 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.

  3. Закройте Блокнот и нажмите кнопку Сохранить, чтобы сохранить файл Utility.ps1.

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

    Import-Module .\Utility.ps1
    
  5. Протестируйте все три веб-службы 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