現在、最終的に Windows Azure に移行したいアプリケーションを設計しています。ただし、短期的には、私が自分でホストするサーバーで実行されます。
このアプリケーションには、多数の個別の Web アプリケーションが含まれます。これらのアプリケーションの一部は本質的にデータを受信する WCF サービスであり、一部はユーザーがデータを管理するためのサイトです。さらに、さまざまな方法でデータを処理するワーカー サービスをバックグラウンドで実行する必要があります。
私は、このために分離アーキテクチャを使用することに非常に熱心です。理想的には、コンポーネント (つまり、Web アプリとワーカー サービス) がお互いをできるだけ認識しないようにしたいと考えています。ここでは、メッセージ キューを使用することが最善の解決策であるように思われます。Web アプリはワーク ユニットを含むメッセージをキューに入れることができ、ワーカー サービスはそれらを取り出して必要に応じて処理することができます。
ただし、最終的には Azure に移行することを念頭に置いて、これを行うための優れた一連のテクノロジを検討したいと考えており、クラウドに移行するときに必要な再作業の量を最小限に抑えたいと考えています。 . Azure には、私のニーズに最適な Queue コンポーネントが組み込まれています。私がやりたいのは、これを可能な限り模倣するものを自分で作成することです.
いくつかのオプションがあるようです (私は Windows で .NET を使用し、SQL Server 2005 バックエンドを使用しています) - これまでに見つかったものは次のとおりです。
- MSMQ
- SQL Server サービス ブローカー
- データベース テーブルといくつかのストアド プロシージャを使用して独自のロールを作成する
誰かがこれについて何か提案があるかどうか、または誰かが同様のことをして、やるべきこと/避けるべきことについてアドバイスを持っているかどうか疑問に思っていました. すべての状況が異なることは承知していますが、この場合、私のキューイング要件はかなり一般的だと思うので、これを行う最善の方法について他の人の考えを聞きたいです.
前もって感謝します、
ジョン