2009-07-13 3 views
0

我々はバックグラウンドで実行する必要があるいくつかの "サービス"を持つWindows/.Net 3.5上で動作するシステムを計画しています。一部の人は常時アクティブになっていますが、一部は時々呼び出され、必要に応じて立ち上がることができます。UIなしのプロセスのためのWindows上のベストホスト

私の知る限り見ることができるように、私のオプションは次のとおりです。 - (?)

  • Windowsサービス常に実行
  • IISが何かホストさ - 需要
  • COM + /ネットエンタープライズSevicesに呼びかけ - ほとんどを複雑なオプションが、最も強力な?

分散トランザクションは必須ではありませんが、これらは主にトランザクションプロセッサではなく計算エンジンです。

誰もこれらのすべての作業の経験がありますか、さらに各プロダクトにどのような賛否両論がありますか&

EDIT

は、IISのコードをホスティングする複数の方法、Webサービス、WCF(以下指摘したように)、他のものがあるとしますか?相対的な長所/短所

答えて

2

WCFは正しい道のりを感じています。まだ多くの選択肢があります。 WCFは、多数の通信メカニズムとホスティング環境を提供します。 WCFは、次のテクノロジを1つのAPIセット( ASMX)で組み合わせています。 WSE; リモート処理; COM +; MSMQ。 たとえば、時折接続されたクライアントやHTTPトランスポートレイヤを介した標準のXMLエンコードSOAPメッセージに対して、MSMQからの永続メッセージを使用できます。 HTTPでXMLまたはJSONエンコーディングのバイナリエンコーディングのような3.5の新機能を使用することもできます。

ホスティング環境が含まれます:あなたが使用することができます コンソールアプリケーション WindowsサービスIIS 7.0 内部 WCFサービスをし、Windows VistaまたはWindows Server 2008上では、WCFサービスをホストする(Windowsのライセンス認証サービス)でした。

異なるホスティング環境には長所と短所があります。詳細についてはMSDNをご覧ください(例:http://msdn.microsoft.com/en-us/library/bb332338.aspx)。

WCFには多くの機能が含まれているため、WCFはその機能を置き換える技術のどれよりも習得が困難です。私はまだそれが長期的には自分自身のために支払うと思う。

1

ソフトウェアによって何が行われるのか、ユーザーやシステムがどのように対話する必要があるかによって異なります。これらのことに応じて、もう1つ、しばしば見落とされるオプションがあります:スケジュールされたタスクとして設定します。これは、ソフトウェアが特定の時間間隔(データベース内の変更を確認し、変更されたデータを処理してどこかに送信するなど)で動作するような種類のソフトウェアであれば、Windowsサービスにとって非常に良い代替手段となることがよくあります。

あなたのソフトウェアと直接話し合う他のシステムがある場合は、IISでホストされているWCFアプリケーションがかなり厳しい方法だと思います。私は現在の割り当てで両方のアプローチを使用しています。データの検索と格納のためのWCFサービス、および定期的に実行されるデータ計算のためのスケジュールされたタスク。

スケジュールされたタスクは、1つの特定のフィールド内の他のタスクと比較して1つの面があります。実行時にのみシステムリソースを使用します。

+0

スケジュールされたタスクは実際には当てはまりませんが、毎日特定の時刻ではなくオンデマンドで処理が行われるため、ここでそれらを呼び出すことに感謝します。 –

1

「オンデマンド」のプロセスの開始について述べました。 WAS - Windows Activation Service、またはWindows Process Activation Servviceと呼ばれることもありますが、これは決して「WPAS」と略されませんが、オンデマンドプロセスのアクティブ化を提供するWindows内のものです。それが動作する方法 - メッセージが到着すると、WASはメッセージを処理するワーカープロセスを開始できます。 WASは、IIS7以前はIISにかなり緊密に統合されていました。主に、ASP.NETワーカープロセスのようなWeb作業を行ったプロセスをアクティブにするために使用されていました。 IIS7では、WASはHTTP以外のHTTPメッセージに基づいてワーカープロセスをアクティブにできるように一般化されています。 WCFを介してメッセージを受け取るようにアプリケーションを作成する場合は、基本的に「無料」でアクティベーションを受けることができます。これは、HTTP、TCP、MSMQの場合に適用されます。 SOAPなど。

このオンデマンド起動で重要なことは、通信に結びついていることです。実際、WASのプロセスライフサイクルモデルは通信にも関連しています。デフォルトでは、しばらくしても受信メッセージがない場合、プロセスはWASによってシャットダウンされます。それはあなたが望むものかもしれません。

プロセスホスティングについて - COM +はホスティング環境を提供しますが、主に通信するプロセスのホストとして使用することを意図しています。これはあなたにとって完璧なものではないかもしれません。

コンピューティングエンジンをお持ちの場合は、Windowsサービスを実行するだけで済みます。このようなサービスは、管理上またはプログラム上のいずれかで開始および停止できます。後者の場合、Windowsサービスをプログラムで起動するWAS起動ワーカープロセスがあると考えられます。

メッセージの場所(ファイルシステム、メッセージキューなど)を監視する簡単なWindowsサービスを作成し、そのファイルやメッセージが到着すると、Windowsサービスは計算エンジンプロセスを起動します。 Windowsサービスではなく、単なるプロセスです。

MSMQといえば - それは基本的にMSMQトリガーと同じモデルです。メッセージが特定のキューに到着したときにプロセスを開始するようにMSMQを構成できます。

多くのオプションがあります。

関連する問題