3

グーグルはこれで本当に失敗しました。Azure は初めてで、.NET は中級者です

私は Azure ソリューションを進めており、うまく動作する Web ロールにいくつかのコードを書きました。ここでやりたいことは、このコードの一部を Azure Worker に移動することです。Azure Worker は、Web ロールのコントローラー関数によって初期化されます。

これをローカルで実行するには、一体何をする必要がありますか? SLN 内に Worker プロジェクトを作成しました。起動して実行する方法を知る必要があるだけです。

私の問題の一部は、これらのワーカーが Heroku ワーカーのように振る舞うと想定していることだと思います...これは事実ですか? 私が必要としているのは、キュー システムのようなもの (1 つの大きなキュー内の一連の「ワーカー タスク」) だからです。

私が見つけたチュートリアル用のリンクの多くは、Web ロールからプロセスを実際に初期化する方法についてタップダンスしているようです。

4

3 に答える 3

4

WindowsAzureのワーカーはタスクではありません。それらはVM全体です。作業を楽にするために、この小さな詳細を覚えておいてください。WebロールインスタンスはIISが実行されているWindows Server 2008であり、ワーカーロールは同じものですがIISが無効になっています。

そのワーカーロールをプロジェクトに追加すると、実際には新しい仮想マシンのセットが実行されます(設定したインスタンス数に応じて、少なくとも1つ)。これらのVMには、ブートストラップの目的でコードを挿入できる独自のOnStart()メソッドとRun()メソッドがあります。

Windows Azureトレーニングキットを入手すると、さまざまな役割インスタンス間で通信する方法を示すラボがいくつか表示されます(一般的なパターンはWindows Azureキューの使用です)。Guestbookハンズオンラボ(最初のラボ)でのバックグラウンドプロセスの良い例があります。

于 2012-04-24T13:56:06.393 に答える
1

私は今それを行っているので、これに関する詳細情報。

Herokuのバックグラウンドを使用している場合、Azureワーカーは、多かれ少なかれ、キューを使用して実際に実行するRailsの関数です。Herokuのキューに入れられた操作とは異なり、Azureワーカーは無限に実行され、新しい処理を実行するためにポーリングを続けます...したがって、Run()関数のテンプレート化されたsleep(10000)。

Webとワーカーが相互に通信するために私が見つけた最も一般的な方法は、現在エミュレートされていないAzure ServiceBusを介してメッセージをキューに入れることです。つまり、これを機能させるには、機能しているAzureアカウントが必要です。ローカルで実行されています。あなたはただインターネットアクセスが必要です。

ServiceBusメッセージはオブジェクト全体をワーカーに渡すことができるので(ワーカープロジェクトに適切な依存関係がある限り)、それはちょっといいことです。

于 2012-04-25T16:15:46.527 に答える
-1

ワーカー/Webの役割と一緒にAzureエミュレーターを起動するのに問題があると思いますか?起動プロジェクトとして紺碧の構成プロジェクトを設定し、それを実行するだけです。すべての役割とともにエミュレータが起動します。

于 2012-04-24T15:59:59.703 に答える