2012-02-24 49 views
1

我正在編寫基本上負責打開和關閉其他服務的服務,但它們需要按特定順序打開和關閉。順序處理算法或正則表達式

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

下面是規則: 要停止服務:

  1. 如果#1被停止,一切需要在它之前被停止。
  2. 如果需要停止#2中的任何內容,則需要先停止#3中的匹配服務。 (SvcChildPool1必須在SvcMasterPool1之前停止)
  3. #3中的服務可以在沒有任何前置條件的情況下停止。

啓動服務: 它與停止順序完全相反。 1.要啓動#3的服務,需要啓動#2和#1中的匹配svc 2.#2中的服務需要啓動#1 3.沒有#1的前提條件


Master和Child 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的想法。 – 2012-02-24 15:55:25