レッスン 2: Windows PowerShell で Order Service アプリケーションを展開する

所要時間: 25 分

目標: WCF サービスおよび WF サービスの一方または両方を含むアプリケーションを IIS に展開する方法を学習します。

目的: このレッスンでは、Windows PowerShell を使用して Web 配置ツールでの展開のスクリプトを作成する方法の例を示します。OrderService_PS という名前の Web サイトに Order Service アプリケーションを再展開します。

前提条件

次の前提条件を確認してください。

手順

Order Service アプリケーションの展開プロセスの一部として、以下の手順を実行します。

  1. 展開用の構成ファイルを準備します。

  2. Windows PowerShell で MSBuild を使用して展開パッケージをビルドします。

  3. OrderService_PS Web サイトおよびアプリケーション プールを作成します。

  4. Web 配置ツールと Windows PowerShell を使用して各 Web サービスを展開します。

  5. Windows PowerShell で各 Web サービスをテストします。

展開用の構成ファイルの準備

Windows PowerShell を使用し、ポート 95 を使用する新しい Web サイトに Order Service アプリケーションを再展開します。ここでは、展開の前に、構成ファイルのエンドポイント アドレスを新しいポート情報で更新します。

  1. Windows PowerShell で次のコマンドを実行し、Order Client の app.config ファイルを開きます。

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\app.config
    

    client セクションを次の client セクションに置き換えます。

            <client>
                <endpoint address="http://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 で次のコマンドを実行し、Order Processing Service の Web.config ファイルを開きます。

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\Web.config
    

    client セクションを次の client セクションに置き換えます。

        <client>
          <endpoint address="http://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 で次のコマンドを実行し、OrderWorkflowService の Web.config ファイルを開きます。

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\Web.config
    

    client セクションを次の client セクションに置き換えます。

        <client>
          <endpoint address="http://localhost:95/OrderProcessingService/OrderProcessing.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IOrderProcessing"
            contract="IOrderProcessing" name="BasicHttpBinding_IOrderProcessing" />
          <endpoint address="http://localhost:95/ShippingService/Shipping.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IShipping" contract="IShipping"
            name="BasicHttpBinding_IShipping" />
        </client>
    

    メモ帳を閉じ、変更の保存を促すメッセージが表示されたら [保存] をクリックします。

  4. Windows PowerShell で次のコマンドを実行し、Shipping Service の Web.config ファイルを開きます。

    notepad C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\Web.config
    

    client セクションを次の client セクションに置き換えます。

        <client>
          <endpoint address="http://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 で MSBuild を使用した展開パッケージのビルド

Microsoft Build Engine (MSBuild) は、Microsoft および Visual Studio 用のビルド プラットフォームです。MSBuild はソフトウェアの処理およびビルドの方法に関して完全に透過的であり、Visual Studio がインストールされていないビルド ラボ環境で製品の調整とビルドを行うことができます。MSBuild は .NET Framework に組み込まれています。このセクションの手順に従い、MSBuild を使用して Order Service アプリケーション用の新しい展開パッケージをビルドします。以下のコマンドを Windows PowerShell スクリプトに追加し、ビルドを自動化できます。MSBuild の詳細については、「MSBuild の概要」 (http://go.microsoft.com/fwlink/?LinkId=123876) を参照してください。

  1. Windows PowerShell で次のコマンドを実行し、.NET Framework ディレクトリの MSBuild 実行可能ファイルの完全なパスに、MSBuildPath という名前の変数を割り当てます。このコマンドは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full レジストリ キーの InstallPath 文字列値の値に基づいてパスを決定します。

    $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. 次に示すように、3 つの 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 で次のコマンドを実行して OrderClient アプリケーションをビルドします。

    .$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\OrderClient.csproj'
    

OrderService_PS Web サイトとアプリケーション プールの作成

ここでは、IIS 用の Appcmd.exe 管理ツールを使用して、Web サイトとアプリケーション プールを作成します。Windows PowerShell 用の環境プロバイダーを使用し、SystemRoot 環境変数を使用して Appcmd.exe へのパスを参照します。この働きを確認するには、Windows PowerShell で次のコマンドを入力します。

$env:SYSTEMROOT

結果の出力ではシステム ルート ディレクトリが示されます。

以下の手順に従って、OrderService_PS Web サイトおよび OrderServiceAppPool_PS アプリケーション プールを作成します。以下のコマンドを Windows PowerShell 展開スクリプトに追加して自動化することもできます。

  1. Windows PowerShell で次のコマンドを入力して、Version 4 の .NET Framework を使用するように構成された OrderServiceAppPool_PS アプリケーション プールを作成します。

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

    コマンドの結果が次のような出力になり、エラーがないことを確認します。

    APPPOOL object "OrderServiceAppPool_PS" added
    
  2. Windows PowerShell で次のコマンドを入力して、OrderService_PS という名前の新しい Web サイトを作成します。この Web サイトは、ポート 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 で次のコマンドを入力し、OrderServiceAppPool_PS を既定のアプリケーション プールとして使用するように OrderService_PS Web サイトを構成します。

    .$env:SystemRoot\System32\inetsrv\appcmd.exe set site OrderService_PS /applicationDefaults.applicationPool:OrderServiceAppPool_PS
    

    コマンドの結果が次のような出力になり、エラーがないことを確認します。

    SITE object "OrderService_PS" changed
    

Web 配置ツールと Windows PowerShell による Web サービスの展開

ここでは、Web 配置ツールを使用して、Web サービスを OrderService_PS という名前の新しい Web サイトに展開します。このチュートリアルでは、"_PS" というサフィックスを使用して、Web サイトが Windows PowerShell で作成されたことを示します。ここで示すコマンドを Windows PowerShell の展開スクリプトに追加して、Order Service アプリケーションを展開できます。Web 配置ツールの詳細については、「Web 配置ツール」 (http://go.microsoft.com/fwlink/?LinkId=154601) を参照してください。

  1. Windows PowerShell で次のコマンドを実行し、MSDeployPath という名前の変数を、Web 配置ツールの完全なパスに割り当てます。

    $MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
    
  2. Windows PowerShell で次のコマンドを実行し、OrderProcessingService パッケージを OrderService_PS Web サイトに展開します。

    .$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 Web サイトに展開します。

    .$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 Web サイトに展開します。

    .$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 での Web サービスのテスト

ここでは、簡単なスクリプト関数を使用して、Web サービスを参照できるかどうかを確認します。

  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. Windows PowerShell で次の 3 つのコマンドを入力し、3 つの Order Service Web サービスをすべてテストします。

    BrowseWebService "http://localhost:95/OrderProcessingService/OrderProcessing.svc"
    
    BrowseWebService "http://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    
    BrowseWebService "http://localhost:95/ShippingService/Shipping.svc"
    

    次に示すように、各 BrowseWebService コマンドが True を報告することを確認します。

    PS C:\> BrowseWebService "http://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
    True
    PS C:\> BrowseWebService "http://localhost:95/OrderProcessingService/OrderProcessing.svc"
    True
    PS C:\> BrowseWebService "http://localhost:95/ShippingService/Shipping.svc"
    True
    

まとめ

このレッスンでは、新しいエンドポイント アドレスを使用するように、各プロジェクトの構成ファイルを更新しました。次に、Windows PowerShell で新しい Web サイトとアプリケーション プールを作成しました。最後に、Windows PowerShell を使用して、各サービス プロジェクトをビルドし、新しい Web サイトに展開しました。

次のステップ

レッスン 3: Windows PowerShell による Order Service の構成」では、Windows PowerShell 用の AppFabric コマンドレットを使用して、このレッスンで展開した Order Service アプリケーションの監視データベースと永続化データベースを構成します。

関連項目

概念

レッスン 1: Windows PowerShell 用の Windows Server AppFabric コマンドレットの概要
レッスン 3: Windows PowerShell による Order Service の構成
レッスン 4: Windows PowerShell による Order Service の監視
レッスン 5:Windows PowerShell によるワークフローの追跡

  2011-12-05