レッスン 3: Windows PowerShell による Order Service の構成

所要時間: 20 分

目標: アプリケーションを構成するための Windows Server AppFabric コマンドレットの使い方を紹介します。

目的: Windows PowerShell 用の AppFabric コマンドレットは、開発者および管理者が WCF サービスや WF サービスなどのアプリケーションの構成と管理を自動化するための便利なツールです。このレッスンでは、Order Service アプリケーションの監視と永続化を再構成します。

前提条件

このレッスンを開始する前に、次の要件に注意してください。

手順

Windows PowerShell を使用して Order Service アプリケーションを再構成するには、以下の手順を実行します。

  1. アプリケーション用の監視ストアと永続化ストアを作成して初期化します。

  2. ストアの接続文字列を作成します。

  3. 新しい監視ストアと永続化ストアを使用するため、Order Service アプリケーション用の OrderWorkflowService を構成します。

  4. アプリケーションに対して net.pipe プロトコルを有効にします。

監視データベースと永続化データベースの作成および初期化

ここでは、Order Service アプリケーションで使用する新しい監視ストアと永続化ストアを作成し、初期化します。

監視ストアの作成および初期化

  1. Windows PowerShell で次のコマンドを実行します。

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

    Windows PowerShell を使用してコマンドを実行したことを意味する "_PS" サフィックスがストア名に付いています。これは、ユーザー インターフェイスのチュートリアルとの間で名前の競合が発生しないようにするためです。

    ストアに対して設定するアクセス許可は、AppFabric の既定のアクセス許可とプリンシパル名に基づきます。

    前のコマンドでは、結果のストア オブジェクトを Windows PowerShell Format-List コマンドレットの fl エイリアスにパイプ処理しました。実行結果の表示は、既定のテーブル形式では結果が切り捨てられるので、リスト形式の方が見やすくなります。

  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 コマンドレットを使用します。このコマンドレットはセキュリティ関連の 3 つのパラメーターを受け入れます。

  • -Admins

  • -Readers

  • -Users

このチュートリアルではまた、AppFabric の既定プリンシパル名を使用します。このコマンドレットでこれらのパラメーターを使用するときは、完全プリンシパル名を使用する必要があります。それには、Windows PowerShell 用の環境プロバイダーを使用して、ローカル コンピューターの名前を解決します。このしくみを理解するため、Windows PowerShell で次のコマンドを入力してください。

$env:COMPUTERNAME

コマンドを実行すると、COMPUTERNAME 環境変数に基づくローカル コンピューターの名前が表示されます。この方法を使用して、AppFabric の既定プリンシパルの完全プリンシパル名を入力します。

Order Service アプリケーションの永続化ストアを作成および初期化するには

  1. Windows PowerShell で次のコマンドを入力して、AppFabric の既定プリンシパル名を使用して永続化用の OrderService_PS ストアを初期化します。

    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 ストアが初期化されました。

接続文字列の作成

前の手順で作成した新しい監視および永続化ストアが使用されるようにアプリケーションを構成するには、新しいストアの接続文字列を作成する必要があります。現在のところ、Windows PowerShell 用 ApplicationServer モジュール には接続文字列を作成するためのコマンドレットが用意されていません。ここでは、その方法を示す「スクリプト化された 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 であるか SQL Server Express であるかに基づいて、正しいデータ ソースを選択する必要があります。

    • SQL Server Express だけをインストールしている場合は、次のコマンドを使用します。このコマンドはローカル コンピューター上の SQL Server Express をデータ ソースとして使用します。

      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 という名前の新しい接続文字列が既定の接続文字列と共に表示されます。新しい接続文字列の状態は [初期化済み] です。

監視と永続化のための OrderService_PS ストアが使用されるように AppFabric で Order Service アプリケーションを構成する準備が整いました。

監視および永続化データベースを使用するためのアプリケーションの構成

監視用の新しいストアが使用されるように Order Service_PS Web サイトを構成するには

  1. 新しいストアが使用されるように、Windows PowerShell で次のコマンドを入力して、OrderService_PS Web サイトの監視を構成します。

    Set-ASAppMonitoring -SiteName OrderService_PS -MonitoringLevel HealthMonitoring -ConnectionStringName OrderService_PS
    
  2. コマンドの実行結果が次のようになっていることを確認します。この出力には Web サイトに適用された監視設定が示されています。

    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 Web サイトを構成するには

  1. Windows PowerShell で次のコマンドを実行します。

    Set-ASAppSqlServicePersistence -SiteName OrderService_PS -ConnectionStringName OrderService_PS
    
  2. コマンドの実行結果が次のようになっていることを確認します。この出力には Web サイトに適用された永続化設定が示されています。

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

net.pipe プロトコルの有効化

Windows Server AppFabric のインターフェイスの使用に関するチュートリアル」の「レッスン 3: HRApplicationServices アプリケーションの構成」の手順を実行した場合、net.pipe プロトコルは OrderWorkflowService Web アプリケーションに対して既に有効になっています。ただし、ここでは、Windows PowerShell を使用してこのプロトコルを有効にする方法を示します。Windows PowerShell 用 ApplicationServer モジュール ではこの操作用のコマンドレットを公開していません。代わりに、Appcmd.exe を使用してこの操作を実行します。Appcmd.exe の詳細については、「Appcmd.exe」 (https://go.microsoft.com/fwlink/?LinkId=169337) を参照してください。

OrderWorkflowService Web アプリケーションに対して net.pipe プロトコルを有効にするには、Windows PowerShell で次のコマンドを実行します。

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

操作が正常に実行されたことが次のように報告されます。

APP object "OrderService_PS/OrderWorkflowService" changed

まとめ

このレッスンでは、AppFabric コマンドレットを使用して、新しい監視および永続化ストアを作成しました。また、Web.config ファイル内に新しい接続文字列を作成し、監視および永続化用の新しいストアが使用されるように OrderService_PS Web サイトを構成しました。これらのコマンドすべてを Windows PowerShell スクリプトに追加すれば、アプリケーションの構成を自動化できます。

次のステップ

レッスン 4: Windows PowerShell による Order Service の監視」では、AppFabric コマンドレットを使用してアプリケーションを監視する方法を学習します。

関連項目

概念

レッスン 1: Windows PowerShell 用の Windows Server AppFabric コマンドレットの概要
レッスン 2: Windows PowerShell で Order Service アプリケーションを展開する
レッスン 4: Windows PowerShell による Order Service の監視
レッスン 5:Windows PowerShell によるワークフローの追跡

  2011-12-05