2015-12-21 9 views
5

私はWebJobタイプのアプリケーションを初めて行ったのです。私はwebjobプロジェクトを作成しました。このソリューションにはProgram.csFunction.csが付属しています。Azure WebJobのベスト・アプローチ

私はすでにFunction.csを削除していますが、このプロジェクトではキューが存在しないため、データを取得することになります。

は今Program.csの主な方法は以下の通りすでにある:

class Program 
{ 
    // Please set the following connection strings in app.config for this WebJob to run: 
    // AzureWebJobsDashboard and AzureWebJobsStorage 
    static void Main() 
    { 
     var host = new JobHost(); 
     // The following code ensures that the WebJob will be running continuously 
     host.RunAndBlock(); 
    } 
} 

私は理解しているように、RunAndBlockが連続webjobを実行することですが、私は仕事を一度だけ実行したいということ。私は外部からスケジュールで実行を制御したい。コードを一度だけ実行する方法を知りたいですか? 以下に示すように、私はを持つSupportServiceクラスを持っています。私はこのメソッドを1回だけ呼びたいと思います。 これは正しいアプローチですか?

static void Main() 
{ 
    SupportService _supportService = new SupportService(); 
    _supportService.Initialize(); 
    _supportService.SetPoolProvisioningConfigurations(); 
    _supportService.RunOnePoolProvisioningCycle(); 
} 

またはこれ?

static void Main() 
{ 
    var host = new JobHost(); 
    SupportService _supportService = new SupportService(); 
    _supportService.Initialize(); 
    _supportService.SetPoolProvisioningConfigurations(); 
    host.Call(typeof(SupportService).GetMethod("SetPoolProvisioningConfigurations")); 
} 

またはこれ?

static void Main() 
{ 
    var host = new JobHost(); 
    SupportService _supportService = new SupportService(); 
    _supportService.Initialize(); 
    _supportService.SetPoolProvisioningConfigurations(); 
    host.CallAsync(typeof(SupportService).GetMethod("SetPoolProvisioningConfigurations")); 
} 

か、私が使用する必要があります。

host.Start() 

または

host.StartAsync()? 
+0

私の質問はアプローチに関するものなので、ここの答えはすべて正しいと思います。しかし、私は1つを選択する必要があります。 この記事を見ている人のためのこのメモ。 –

答えて

4

あなたが見る何がオプションであるSDKの一部です。 Webjobは、そのままZip、アップロード、実行できるコンソールアプリケーションと同じくらい簡単です。

ので、このコードは、あなたのケースでは最良の選択肢と思われる:テンプレートによって作成されたWebJobがWebJobs SDKを使用しています

static void Main() 
{ 
    SupportService _supportService = new SupportService(); 
    _supportService.Initialize(); 
    _supportService.SetPoolProvisioningConfigurations(); 
    _supportService.RunOnePoolProvisioningCycle(); 
} 
+0

それはsupportserviceを直接呼び出す最初のコードになります。 しかし、私はMSDNで提供されているSDKを読んで、本当にそれから何かを理解することができませんでした。 JobHostクラスとプロパティと関数のドキュメントをお勧めしますか?そして私がそれらの誰もを使うべきとき、そしてそれぞれのベストプラクティスは何ですか? –

+0

はい私はあなたが提案する最初のコードを使用します。SDKは、Azureストレージを一連のトリガーとストリームとして公開するのに優れています。その場合、ホストには「無限ループ」の役割があります。 – benjguin

1

を。 SDKの機能を使用する必要がない場合は、コンソールアプリケーションを作成してCRONスケジュールを実行するだけです(「スケジュールされたジョブ」hereを参照)。

上記のWebJobs SDKの詳細についてはリンクしました。キュー/ BLOB/etcの機能をトリガするシナリオを容易にすることに加えて、TimerTriggerSDK extensionsの一部)を介してスケジュールどおりにジョブを実行することもできます。あなたのニーズに合ったものを見つけるためにそれらの資料を読んでください。

関連する問題