2012-10-18 123 views
0

我正在編寫一個代理來監控和收集使用C#(.NET)編寫的Windows服務的各種Windows系統設置/信息。 主服務在啓動時從配置文件中讀取,並將其存儲在列表中,它必須運行所有測試。計時器然後以適當的頻率運行各個方法。 我已經創建了一個類庫,包含用於檢查服務,重新設置密鑰,獲取系統信息等的單獨類。主要服務中的方法使用類庫中的方法獲取它們的信息,然後將數據寫入文件並上傳到main服務器。類中的大多數方法都是靜態的(儘管有些不是)。請記住,這些方法將在整個一天的頻率上重複調用,這使得它們是靜態的好主意或壞主意。 內存使用情況穩定但略高於我預期的25-30MB。 任何人都可以看到我做到這一點的任何大規模缺陷? Example新手系統監控Methodolygy

我的WriteToFile和WriteToLog方法都是靜態無效的,並且在調用StreamWriter時都會創建並處理它們。 我想知道這是否有意義,或者我應該以不同的方式做(如在服務啓動時創建一個StreamWriter並將其傳遞給WriteTo方法)。

其他我不明白的是,我加載了一個檢查列表,從文本文件運行,文本文件只有3KB的大小,但它需要額外的7MB的內存相比,文本文件是空白的。

回答

0

要記住,這些方法將在整個一天的頻率上重複調用,這使得它們是靜態的好主意或壞主意。

使靜態方法不會顯着提升性能。

當你設計一個系統時,你應該問自己:「我如何測試它?」。

很難測試一個基於靜態類的系統,你不能容易地將事情分離出來進行獨立測試(爲此需要使用Moles)。

由於無法限制其範圍,因此很難將包含核心邏輯的系統維護在靜態類中。

內存使用情況穩定但略高於我預期的25-30MB。

如果您的程序將運行在桌面平臺上,那麼不要擔心,30MB對於現代臺式計算機來說沒有任何意義。