0

C# (.NET) で記述された Windows サービスを使用して、さまざまな Windows システム設定/情報を監視および収集するエージェントを作成しています。メイン サービスは、起動時に構成ファイルから読み取り、実行する必要があるすべてのテストをリストに格納します。次に、タイマーが適切な頻度で個々のメソッドを実行します。サービス、レジストリキー、システム情報の取得などをチェックするための個々のクラスを含むクラス ライブラリを作成しました。メイン サービスのメソッドは、データをファイルに書き込んでメイン サーバーにアップロードする前に、クラス ライブラリのメソッドを使用して情報を取得します。 . クラスのほとんどのメソッドは静的です (ただし、そうでないものもあります)。これらのメソッドが 1 日を通して設定された頻度で繰り返し呼び出されることを念頭に置いて、それらを静的にすることは良い考えでも悪い考えでもあります。メモリ使用量は安定していますが、25 ~ 30MB と予想よりも少し高くなっています。私がこれを行った方法に大きな欠陥があると誰かが見ることができますか? 例

私の WriteToFile メソッドと WriteToLog メソッドはどちらも static void であり、呼び出されたときに StreamWriter を作成および破棄します。それが理にかなっているのか、それとも別の方法で行うべきなのか (サービスの開始時に StreamWriter を 1 つ作成し、代わりにそれを WriteTo メソッドに渡すなど) を考えました。

他に理解できないのは、テキスト ファイルから実行するチェックのリストをロードすることです。テキスト ファイルのサイズはわずか 3 KB ですが、テキスト ファイルが空白だった場合と比べて 7 MB 余分にメモリが必要です。

4

1 に答える 1

0

これらのメソッドは1日を通して設定された頻度で繰り返し呼び出されることを念頭に置いておくと、静的な方法が良いまたは悪い考えになります。

メソッドを静的にしても、パフォーマンスが大幅に向上するわけではありません。

システムを設計するときは、「どうすればテストできますか?」と自問する必要があります。

静的クラスに基づくシステムをテストすることは困難であり、独立してテストするものを簡単に分離することはできません(この目的のためにMolesを使用する必要があります)。

また、スコープを制限できないため、静的クラスにコアロジックを含むシステムを維持することも困難です。

メモリ使用量は安定していますが、25〜30MBで予想していたよりも少し高くなっています。

プログラムがデスクトッププラットフォームで実行される場合でも、心配しないでください。30MBは、最新のデスクトップコンピューターには何の意味もありません。

于 2012-10-18T08:10:37.403 に答える