2009-07-19 52 views
2

我有一個使用各種外部資源(Web服務,文件系統,數據庫)的應用程序,因此可能很難配置。該計劃是爲應用程序添加一個自我診斷工具,以便它可以報告配置問題並允許用戶糾正它。在設計這樣一個功能時,我應該考慮哪些設計模式,庫,例子等?我將如何構建可在運行時自行診斷的應用程序?

該應用程序是用C#和ASP.NET編寫的。

回答

1

一種方法是在您的站點的管理區域中擁有一組報告這些外部資源狀態的頁面。例如,它可能會告訴你它被配置爲連接到的數據庫(以及它是否可以建立連接),它在哪個服務器上運行(如果負載平衡),等等)。

對於Web服務,我有一個運行的小服務,每隔幾分鐘「ping」Web服務以查看它是否仍然存在。如果不是,我會在手機上(通過其他第三方服務順便)收到短信和電子郵件中的詳細錯誤報告 - 您可能更願意選擇檢查網站上的網頁。

我不知道是否有任何特定的設計模式,我只是將此報告元素添加到應用程序中的常規圖層。

-2

您可能會考慮使用規則引擎 - 專家系統長期以來一直用於診斷和故障排除。這允許修改和擴展規則,而不是更改代碼庫,因爲您很可能會忽略許多情況,並且環境可能會發生變化,需要添加新規則。

1

如果他們能看到你,你可以看到他們

添加一個圖層到你的(外部)應用程序發送異步執行「Ping」出某種形式。可以是消息傳遞,類似主題的中間件工具。

如果您無法控制外部系統,可能需要添加一個sep-A-RAT-e「門面」應用程序來執行診斷(例如,以超時方式調用http連接),然後發送ping命令代表外部應用程序。

使用遠程應用程序(消息類型)的可配置列表向您的中央應用程序添加一個偵聽程序,這些應用程序預計可以ping通並在其中一個未能這樣做時發出警報。

只要確保在單獨的線程和異步運行所有這些。您不想阻止UI線程或太多等待超時的開放網絡連接。

這樣你的中央應用程序的開銷很小。它不需要進行輪詢本身,只是坐在那裏有一個隊列監聽器和一個應用程序的地圖,當他們最後一次調用時。如果其中一個達到最近沒有調用的閾值,那麼你有一個問題,你的應用程序有一些方法可以讓你知道。

+0

從我以前的英語老師的拼寫技巧:請記住,單獨有一個RAT(Squeek!Squeek):sep-A-RAT-e :) – 2009-07-20 01:36:38

0

假設你僅僅意味着靜態配置,

添加一個客戶acessible單元測試演習的所有系統的接口。 你已經有一個,對吧?

稱之爲「驗證配置」。或者其他的東西。

希望這會有所幫助。

相關問題