レッスン 3: Windows PowerShell による Order Service の構成
所要時間: 20 分
目標: アプリケーションを構成するための Windows Server AppFabric コマンドレットの使い方を紹介します。
目的: Windows PowerShell 用の AppFabric コマンドレットは、開発者および管理者が WCF サービスや WF サービスなどのアプリケーションの構成と管理を自動化するための便利なツールです。このレッスンでは、Order Service アプリケーションの監視と永続化を再構成します。
前提条件
このレッスンを開始する前に、次の要件に注意してください。
Windows PowerShell セッションをセットアップしておく必要があります (「レッスン 1: Windows PowerShell 用の Windows Server AppFabric コマンドレットの概要」を参照)。
Order Service アプリケーションを展開しておく必要があります (「レッスン 2: Windows PowerShell で Order Service アプリケーションを展開する」を参照)。
手順
Windows PowerShell を使用して Order Service アプリケーションを再構成するには、以下の手順を実行します。
アプリケーション用の監視ストアと永続化ストアを作成して初期化します。
ストアの接続文字列を作成します。
新しい監視ストアと永続化ストアを使用するため、Order Service アプリケーション用の OrderWorkflowService を構成します。
アプリケーションに対して net.pipe プロトコルを有効にします。
監視データベースと永続化データベースの作成および初期化
ここでは、Order Service アプリケーションで使用する新しい監視ストアと永続化ストアを作成し、初期化します。
監視ストアの作成および初期化
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 エイリアスにパイプ処理しました。実行結果の表示は、既定のテーブル形式では結果が切り捨てられるので、リスト形式の方が見やすくなります。
このコマンドを実行した後の 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 アプリケーションの永続化ストアを作成および初期化するには
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 パラメーターに注目してください。このパラメーターにより、ストアに対する変更の確認が省略されます。
次に示すようなエラーのない結果になることを確認します。
Server : SERVER1 Database : OrderService_PS ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS
永続化で使用する OrderService_PS ストアが初期化されました。
接続文字列の作成
前の手順で作成した新しい監視および永続化ストアが使用されるようにアプリケーションを構成するには、新しいストアの接続文字列を作成する必要があります。現在のところ、Windows PowerShell 用 ApplicationServer モジュール には接続文字列を作成するためのコマンドレットが用意されていません。ここでは、その方法を示す「スクリプト化された 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 であるか 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"
新しい接続文字列を確認するには、インターネット インフォメーション サービス (IIS) マネージャーを実行し、[データベース構成の監視] アプレットをダブルクリックします。これによって、OrderService_PS という名前の新しい接続文字列が既定の接続文字列と共に表示されます。新しい接続文字列の状態は [初期化済み] です。
監視と永続化のための OrderService_PS ストアが使用されるように AppFabric で Order Service アプリケーションを構成する準備が整いました。
監視および永続化データベースを使用するためのアプリケーションの構成
監視用の新しいストアが使用されるように Order Service_PS Web サイトを構成するには
新しいストアが使用されるように、Windows PowerShell で次のコマンドを入力して、OrderService_PS Web サイトの監視を構成します。
Set-ASAppMonitoring -SiteName OrderService_PS -MonitoringLevel HealthMonitoring -ConnectionStringName OrderService_PS
コマンドの実行結果が次のようになっていることを確認します。この出力には 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 サイトを構成するには
Windows PowerShell で次のコマンドを実行します。
Set-ASAppSqlServicePersistence -SiteName OrderService_PS -ConnectionStringName OrderService_PS
コマンドの実行結果が次のようになっていることを確認します。この出力には 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