2012-02-24 10 views
1

私は基本的に他のサービスのオン/オフを担当するサービスを作成していますが、特定の順序でオンとオフを切り替える必要があります。逐次処理アルゴリズムまたはRegex

  1. SvcMain
  2. 私。 SvcMasterPool1 ii。 SvcMasterPool2 iii。 SvcMasterPool3 ......
  3. i。 SvcChildPool1 ii。 SvcChildPool2 iii。 SvcChildPool3 .....ここ

ルールは以下のとおりです。 は、サービスを停止するには:#1が停止する場合は、他のすべてがその前に停止する必要

  1. #2内の何かを停止する必要がある場合は、#3で一致するサービスを先に停止する必要があります。 (SvcChildPool1はSvcMasterPool1の前で停止する必要があります)
  2. #3のサービスは、事前条件なしで停止できます。

サービスを開始するには、 停止シーケンスの正反対です。 1.#3のサービスを開始するには、#2と#1の一致するSVCを起動する必要があります。 2.#2のサービスは#1を起動する必要があります。 3.#1の事前条件なし


マスターとチャイルドSvcsの数は、時間の経過とともに増減できます。私は自分のコードでロジックをハードコードしたくないし、正規表現を使ってドライブすることを考えていた。私が困惑しているのは#3からの一致するSVCを取得することです。私は "SvcMasterPool2"を停止する必要があることを知っていれば、どうすれば "SvcChildPool2"を考え出すことができますか?私はすべてのSvcChildPoolXにマッチする正規表現を持つことができますが、同等の子と一致する解決策を思いつくことはできません。

ご協力いただければ幸いです。より適切なアプローチについてのご意見をお待ちしております。

データベースを使用する予定ですが、個々のサーバーのシーケンスを追加したくありません。したがって、RegExの使用の考え方。だから私はちょうどパターンを格納し、すべてのサーバーで使用します。

ありがとうございました。

答えて

0

私はこのようなクラス何か作成します。

public class ServiceDependencies 
{ 
    public string ServiceName {get;set;} 
    public List<ServiceDependencies> DependsOn {get;private set;} 
} 

をし、XMLへのこのクラスはシリアライズします。したがって、XMLファイルはメモ帳で簡単に編集でき、アプリケーションで簡単に読み込むことができます。

+0

このサービスはとても実用的であることを行っていない個々のXMLファイルを維持する数百台のサーバー上でホストされようとしています。私はデータベースの使用を計画していたが、個々のサーバーのシーケンスを追加したくない。したがって、RegExの使用の考え方。 –