App Service プランは、アプリのホストとなる Web サーバー ファームの場所、サイズ、機能を規定します。 1 つの App Service プランを共有するように Web アプリを構成することで、複数のアプリをホストするときのコストを抑えることができます。 App Service プランでは、リージョン、インスタンス サイズ、スケール数、および SKU (Free、Shared、Basic、Standard、または Premium) を定義します。 [新規] を選択して、新しい App Service プランを作成します。 Free レベルと Basic レベルでは、サイトを継続的に実行する [Always On] オプションはサポートされていません。
[作成] を選択して、これらの設定で Azure に Web ジョブと関連リソースを作成し、プロジェクト コードをデプロイします。
[完了] を選択して [発行] ページに戻ります。
.NET Framework コンソール アプリとしての WebJobs
Visual Studio を使用して、Web ジョブ対応の .NET Framework コンソール アプリ プロジェクトをデプロイする場合、Web アプリの適切なフォルダーにランタイム ファイルがコピーされます (継続的な Web ジョブの場合は App_Data/jobs/continuous、スケジュールされた Web ジョブやオンデマンド Web ジョブの場合は App_Data/jobs/triggered)。
Web ジョブ対応のプロジェクトには、Visual Studio によって以下の項目が追加されます。
これらの項目を既存のコンソール アプリ プロジェクトに追加することも、テンプレートを使用して新しい Web ジョブ対応のコンソール アプリ プロジェクトを作成することもできます。
プロジェクトは、それ自体を Web ジョブとしてデプロイするか、Web プロジェクトをデプロイするときには常に自動的にデプロイされるように Web プロジェクトにリンクします。 プロジェクトをリンクする場合、Visual Studio で、Web プロジェクト内の webjobs-list.json ファイルに Web ジョブ対応のプロジェクトの名前が含められます。
Web プロジェクトをデプロイしたときに自動的に Web ジョブとしてデプロイされるように、既存のコンソール アプリ プロジェクトを構成します。 Web ジョブを、関連する Web アプリケーションが実行する Web アプリケーションと同じアプリケーションで実行する場合に、このオプションを使用します。
既存のコンソール アプリ プロジェクトを、Web プロジェクトにリンクせず、それ自体が Web ジョブとしてデプロイされるように構成します。 Web アプリケーションで Web アプリケーションを実行せずに、Web ジョブ自身によって Web アプリケーション内で実行されようにする場合に、このオプションを使用します。 Web アプリケーションのリソースから独立して Web ジョブのリソースをスケーリングする場合は、そうすることをお勧めします。
Web プロジェクトを使用した Web ジョブの自動デプロイメントを有効にする
ソリューション エクスプローラーで Web プロジェクトを右クリックし、 [追加]>[既存のプロジェクトを Azure Web ジョブとして] を選択します。
プロジェクトを作成し、Web プロジェクトへはリンクせずに、それ自身で Web ジョブとしてデプロイされるように構成します。 Web アプリケーションで Web アプリケーションを実行せずに、Web ジョブ自身によって Web アプリケーション内で実行されようにする場合に、このオプションを使用します。 Web アプリケーションのリソースから独立して Web ジョブのリソースをスケーリングする場合は、そうすることをお勧めします。
同じソリューション内の Web プロジェクトをデプロイするときに Web ジョブとして自動的にデプロイするように構成して、プロジェクトを作成します。 Web ジョブを、関連する Web アプリケーションが実行する Web アプリケーションと同じアプリケーションで実行する場合に、このオプションを使用します。
このファイルは直接編集でき、Visual Studio で IntelliSense を使用できます。 ファイル スキーマは https://schemastore.org に格納され、そこで表示できます。
webjobs-list.json ファイル
Web ジョブ対応のプロジェクトを Web プロジェクトにリンクすると、Visual Studio は Web ジョブ プロジェクトの名前を Web プロジェクトの Properties フォルダー内の webjobs-list.json ファイルに格納します。 次の例に示すように、一覧には複数の WebJobs プロジェクトが含まれる場合があります。
Web ジョブをデプロイし、その後、Web ジョブの種類を変更して再デプロイすることに決めた場合は、webjobs-publish-settings.json ファイルを削除します。 そうすることで、Visual Studio に発行オプションが再表示されるので、Web ジョブの種類を変更できます。
Web ジョブをデプロイし、後から実行モードを継続的から継続的以外、またはその逆に変更した場合、Visual Studio は再デプロイ時に Azure 内に新しい Web ジョブを作成します。 その他のスケジュール設定を変更し、実行モードを同じままにするか、[スケジュール済み] と [オンデマンド] の間で切り替えた場合、Visual Studio では、新しいジョブは作成されずに既存のジョブが更新されます。
Web ジョブの種類
Web ジョブの種類は、トリガーまたは継続的です。
トリガー (既定値):トリガー Web ジョブは、バインディング イベントまたはスケジュールに基づいて開始されるか、手動でトリガーされたときに開始されます (オンデマンド)。 Web アプリが実行されている 1 つのインスタンスで実行されます。
継続的:継続的 Web ジョブは、作成されるとすぐに開始されます。 既定では、すべての Web アプリのスケーリングされたインスタンスで実行されますが、settings.job を使用して 1 つのインスタンスとして実行するように構成できます。
注意
Web アプリは非アクティブな状態が 20 分続くとタイムアウトになり、実際の Web アプリに対する要求だけがタイマーをリセットできます。 Azure portal でアプリの構成を表示したり、高度なツールのサイト (https://<app_name>.scm.azurewebsites.net) に対して要求を行ったりしても、タイマーはリセットされません。 ジョブをホストしている Web アプリを継続的に実行させるか、またはスケジュールに従って実行させるか、あるいはイベント ドリブン トリガーを使用するように設定する場合は、Web アプリの Azure 構成ページで [常にオン] 設定を有効にします。 [常にオン] の設定は、これらの種類の WebJobs が確実に実行されるようにするのに役立ちます。 この機能は、Basic、Standard、および Premium の価格レベルでのみ利用できます。
トリガーされた Web ジョブのスケジュール設定
コンソール アプリを Azure に発行すると、Visual Studio によって Web ジョブの種類が既定で [トリガー] に設定され、プロジェクトに新しい settings.job ファイルが追加されます。 Web ジョブの種類がトリガーの場合は、このファイルを使用して Web ジョブの実行スケジュールを設定できます。
このファイルは、Web ジョブのスクリプトと一緒に、wwwroot\app_data\jobs\triggered\{job name} や wwwroot\app_data\jobs\continuous\{job name} などの Web ジョブ フォルダーのルートに置かれます。 Web ジョブを Visual Studio からデプロイする場合は、Visual Studio で、settings.job ファイルのプロパティを [新しい場合はコピーする] に設定します。