2013-01-16 6 views
12

"on premise"の世界では、Windowsサービスのようなアプリケーションを作成するときに、App.configファイルを使用して、データベース接続文字列からWCFエンドポイント情報まで、アプリケーションに関するさまざまな構成情報を保存します。Azure WorkerロールのcscfgファイルとApp.configファイルは互いにどのように関連していますか?

Azure Worker Roleの世界では、 "役割のための"情報を含むと言われる.cscfgファイルが表示されています。

これらのファイルがアプリケーションの構成を補完するか、App.configファイル全体を置き換えるかどうかはわかりません。これらの2つのファイルはAzure Workerの役割をどのように設定するのですか?

答えて

15

非常に基本的な説明

概念的にはそれらは同じです。従来のアプリケーションでは、app.configファイルを使用して、アプリケーションに関連するさまざまな設定を定義します(appSettingsセクションを参照)。同様に、cscfgファイルを使用して、(ConfigurationSettingsセクションの)クラウドアプリケーションに関連するさまざまな設定を定義します。 app.configファイルと同様に、cscfgファイルに他のもの(クラウドアプリケーションのインスタンス数など)を定義することができます。

app.configファイルには設定の一部を定義することもできますが、app.configファイルはパッケージ化されてデプロイされ、設定を変更するにはアプリケーションを再パッケージして展開する必要があります。ただし、アプリケーションを再パッケージ化して再デプロイする必要なく、ポータルまたはService Management APIを使用してオンザフライでcscfgファイルの設定を変更することができます。たとえば、設定ファイルでデータベース接続文字列を定義するシナリオを考えてみましょう。 app.configファイルでそれを指定する場合は、app.configファイルを変更する必要があります。 - >アプリケーションをビルドする - >アプリケーションを公開します。 cscfgファイルの場合のように、ポータルでこの値を変更するだけです。

+0

Webジョブ用の.cscfgファイルはどこにありますか?私は通常のWebアプリケーション(晴れのクラウドサービスではない)として作成しました。どのように.cscfgファイルを生成できますか? – Sridharan

11

Web/Workerロールの場合、従来の構成ファイル(app/web.config)は、オンプレミスの展開と同様に機能します。しかし、このファイルがサービスパッケージに含まれていることは重要です。つまり、このファイルはデプロイメントの一部です。

これは、アプリケーションを再デプロイせずにapp/web.configに設定した内容を変更できないことを意味します。一方、ServiceConfiguration.cscfgは、クラウドサービス展開スロットレベルで実際のサービスパッケージの横に定義されているものです。つまり、アプリケーションを再デプロイしなくてもこの設定ファイルを変更できます。これらの設定は、RoleEnvironment.GetConfigurationSettingValueConfigurationManager.AppSettingsに似ています)を呼び出すことによってアプリケーションからアクセスすることもできます。

オンプレミスとWindows Azureの両方で動作するアプリケーションを構築する場合は、Microsoft.WindowsAzure.ConfigurationManager packageの使用を検討してください。アプリケーションが実行されている場所に基づいてcscfgまたはapp/web.configが自動的に選択されます。

ヒント:RoleEnvironment.Changing/Changedイベントに登録すると、この構成ファイルの変更を代行できます。これを処理して、コード内のweb.config(たとえば、explained here)を更新できます。

+0

サンプルコード:Microsoft.Azure.CloudConfigurationManager.GetSetting( "xxx") –

+0

Webアプリケーション用に.cscfgファイルを使用できますか? – Sridharan

関連する問題