2012-05-02 19 views
2

私はフロントエンドとしてモバイルアプリケーションを持っているアプリケーションを計画しています(そして、別の目的を果たすウェブフロントエンドかもしれません)。あなたがそれらのアプリをよく知っているならRunkeeperやRuntasticのようなもの。モバイルデバイスは、ユーザー対話の主要な方法であり、Webサイトにはユーザーが後で見ることができる統計情報とダッシュボードがあります。私はどのAzureの役割を使うべきですか?

メインアプリケーションをWindows Azureに配置したいと思います。ビジネスロジックがWebロールまたはワーカーロールに存在する場合、アプリケーションを設計する方法がわかりません。メインユーザーインターフェイスがモバイルアプリの場合、データを永続化または取得するためにワーカーロールに接続するのか、またはWebロールに接続するのか、どちらにもなりませんか?私は、Webロールがデータをストレージに直接保持したり、キューやテーブルに渡してワーカー・ロールによってピックアップすることができるユーザー・インタフェースを提供する典型的なシナリオを理解していますが、

助けが必要ですか?ありがとう!

答えて

1

モバイルアプリケーション用のサーバーコンポーネントをホストするためには、最も簡単なことは、ASP.NET WebアプリケーションをホストするWebロールであると思います。 Webアプリケーションは、Webフロントエンド(HTML)Webサイトだけでなく、サービスにも使用できます。

ASP.NET MVCWeb APIは、JSONやXMLなどのHTML以外のデータ形式でも簡単にWebサービスを設定できます。モバイルアプリは、REST JSON APIを使用してWebアプリと通信できます。必要な場合や、必要な形式のXML/SOAPを使用できます。 JSONを転送フォーマットとして使用するREST APIは、おそらく現在最も人気があります。 Webアプリケーションについて考える1つの方法は、クライアントからデータを送信して受信する単なる方法だということです。クライアントがWebブラウザの場合は、HTMLページとしてコンテンツを提供することができます。クライアントがモバイルアプリの場合は、JSONとしてデータを提供し、クライアントに表示させることができます。基本的に、あなたのWebアプリケーションは、ウェブブラウザではないクライアントの場合は、Webサイト(HTML)と「API」の両方になります。

あなたは、Windowsサービスのような種類のワーカーロールを考えることができます。主にバックエンド処理などに使用されます。作業者の役割は、公開用のAPIをホストする機能を提供しますが、接続、メッセージパイプライン、リサイクルなどを自分で管理する必要があります。一方、Webの役割は、接続を管理するためのWebサーバー(IIS)を提供します。メッセージキューのようなものを導入しようとするなら、公開されているAPIをWebの役割にすることは理にかなっています。メッセージ処理コンポーネントはワーカーロールです。 Webアプリケーションは、REST JSON APIを介してクライアントからメッセージを受け取ってから、キューにメッセージを渡して、ワーカー・ロールがそれを受け取ることができます。クライアントに影響を与えずにバックグラウンドで処理できる大規模なサーバー側のビジネスロジックを持っている場合、キューとワーカーの役割を導入することは意味があります。

+0

これは素晴らしい答えです。Andy、ありがとう。 –

+1

丁寧な答えですが、その一部はあまり真実ではありません。ワーカーロールはWindows Server VMで、Webロールと同様、IISは有効になっていません。ワーカーの役割は、Windowsサービスとして考えるべきではありません。それはVMです。 Webロールで実行できるものであれば、Worker Roleで実行できます。そして...先読みしていないと、私は@smarxがすでにこれを指摘していることを知っています。だから私を無視してください。 –

+0

ええ、私が言ったことは、技術的には100%正確ではないことを知っていますが、私は、ワーカーロールとウェブロールを使用するときを理解するのに役立つアナロジーを作成しようとしていました。 Web == IIS、Worker == IISはありません。 –

3

アンディの答えは素晴らしいですが、私は別の味を追加させてください。 Webロールとワーカーロールの違いは、Webロールが自動的にIISを有効にして構成されていることだけです。大切なことは、IISが必要な場合は、Webの役割を使用することです。 IISが必要ない場合は、ワーカーロールを使用します。

+0

ありがとうSmarx、それは役に立つ。 Andyは、IISが接続、メッセージパイプライン、リサイクルなどの特定の処理を行うことを指摘しました。しかし、私の仕事の役割について理解していることは、実行スケジュールとオンスタート・メソッドにあるようなスケジュールで実行するようにも設計されているということです(つまり、そこでは真実と評価されているもの)。ワーカーの役割は受動的に行われ、クライアントからの要求を待つことができますか、それともIISの機能の一部ですか? –

+1

ワーカーロールは何でもできます。 Windows AzureはあなたのDLLをロードし、 'OnStart'を呼び出してから' Run'を呼び出します。 'Run'への呼び出しから戻らない限り、あなたが望むものを何でもできます。 (そうすれば、Windows Azureはあなたのプロセスがクラッシュしたと思って再起動します)。実行時にソケットを開くか、Webサーバー(Apacheなど)を起動することができます。実際、Java Webアプリケーションはほとんど常にWebロールではなくワーカーロールで実行されます。 (私たちはすべて、 "Web役割"ではなく "* IIS *役割"と呼ぶべきです) – smarx

+0

ありがとうsmarx。あなたが私がそこに行こうと思って、Apacheサーバーでjavaを叩き始めると思うなら、あなたは私を過大評価しますが、私はあなたの意見を得ます;-)。 –

関連する問題