0

私は、2 つの要件を持つグリーンフィールド プロジェクトを開発しています。

  • クラウド (Azure) で実行されます。
  • 自己ホスト型 Windows Server インストールで実行されます。

このプロジェクトは 3 つの主要部分に分かれています。

  1. クライアントのコレクション。
  2. RESTful サーバー。
  3. 永続ストレージ。

この質問では、クライアントは関係ありません。RESTful サーバーは ASP.NET WebApi で構築され (上記の要件を満たします)、永続ストレージはクラウドの場合は Azure テーブル、自己ホスト型の場合は RavenDb です。そして、質問に。

上記の両方の要件を満たす、このアーキテクチャでジョブをスケジュールするための最良のメカニズムは何ですか。

RESTfulサーバーにクエリを実行し、アクティブなジョブに対してスケジュールされた時間チェックを実行するように依頼することで実行されるジョブの概念があるため、サービスはプロセスを開始するために非常に単純な残りのクエリを作成するだけで済みます。

すべてのジョブとそれらを実行するためのロジック (テンプレート) はサーバー上にあるため、サービスにはロジックは必要ありません。

最終的に最良の応答は、サービスにチェックを実行するように要求する、ある種のティッカー サービスです。これを ASP.NET WebApi サーバーに直接組み込むことができれば、さらに満足できるでしょう。使用するのは新しい技術なので、この質問を解決するために見逃した可能性のある明らかな見落としがある場合はご容赦ください.

4

1 に答える 1

1

1 つのアプローチは、[お気に入りの .Net 言語をここに挿入] で記述された非常に単純な「スケジューラ サービス」(OP コメントで言及されているクォーツ スケジューラと原則的に同様) を記述することです。

このサービスは、必要に応じて単純にすることも複雑にすることもできます。下端では、設定された間隔でREST APIを呼び出してプロセスをトリガーするタイマーを操作するだけです

サービス自体は、Windows Server インストールに展開されたときに Windows サービス内でホストできるクラス ライブラリとして記述できます。または、クラウドにデプロイされたときに Azure ワーカー ロール内でホストされます。Azure ワーカー ロールにデプロイされた場合、スケジューラーは XS インスタンス (1 GHz CPU、768 MB RAM、20 GB ストレージ) 内で最小限のコスト (現在の価格で月額 14.40 ドル) で簡単に実行できます。

このアプローチにより、同じコード ベースを両方のソリューションで使用でき (クラス ライブラリ プロジェクトを参照するだけ)、個別に単体テストを実行できます。

このアプローチをさらに一歩進めると、実行時にクラス ライブラリ アセンブリを自動的に読み込むことができるため、将来の展開とアップグレードが非常に簡単になります。

于 2012-10-19T09:04:24.937 に答える