2017-05-30 9 views
0

これは実際には問題ではありませんが、この要件を満たしているので、C#でWindowsアプリケーションを作成して、すべての社内外のシステムを監視する必要があります。これらのシステムのいくつかはウェブサイトであり、一部は石鹸API呼び出しを含むデータベースとの間で常時データをポーリングするWindowsアプリケーションです。私のアプリケーションが行う必要があるのは、これらのシステムを監視し、ダウンタイムが発生するたびに、およびオフラインになった時間を関連ユーザに通知することです。C# - Windows Formsアプリケーションモニタ

私はDBMSとしてSQL Serverを使用してデータベース設計を行ってきましたが、実装に関しては固執しています。これを達成するために私はどのようなアプローチをとることができますかTCP/IP? このアプリケーションはx秒ごとに実行する必要があります。

私は列挙型の中にいくつかのフラグを作成しました。このフラグは、誤った状態であるかどうか、またはユーザーに警告する必要があるかどうかをアプリケーションの状態を常にチェックします。これに加えて、DLLを介してサービスモニタのすべてのコンポーネントを初期化するコンストラクタも作成しました。そのような

何か:

[Flags] 
    public enum ClientApplicationState 
    { 
     ERROR = 0, 
     WARNING = 1, 
     OK = 2 
    } 

/// <summary> 
/// Constructor which sets up and initalizes all the components for the Service Monitoring DLL 
/// </summary> 
/// <param name="applicationName">The Name Of The Application</param> 
/// <param name="port">The port on which to listen to</param> 
/// <param name="timerPeriod"> Optional time in milisecinds to overide the default update freq (default is 1000)</param> 
public ServiceMonitor(string applicationName, short port, int timerPeriod = 1000) 
{ 
    _messages = new List<string>(); 
    _state = ClientApplicationState.OK; 
    //TODO: Throw port exception 
    try 
    { 
     _monClient = new MonitoringClient(applicationName, ClientApplicationState.OK, "Starting Up", 
      Process.GetCurrentProcess().ProcessName, port); 
    } 
    catch (Exception e) 
    { 

    } 
    InitTimer(timerPeriod); 
    _updateTimer.Enabled = true; 
} 

のウェブサイトがホストされ、生きているとWindowsアプリケーションは、当社のWindows 2012 R2サーバー上で実行されています。

これにはどのようにアプローチできますか?

答えて

0

あなたの質問は答えがあまりにも一般的です。しかし、私はあなたが実際に監視しようとしているものを見る必要があると思います。そして、あなたはサービスを理解する必要があります(もしそれがあなたが取るべきアプローチです - それは適切と思われます)。

サービスが開始され、連続的に(論理的に)実行されます。 「毎x秒ごとに」実行するというあなたの考えは、少し誤解を招きます。 x秒ごとにサービスをチェックしたいが、そのアイデアを実行中のアプリケーションと混同しないでください。もちろん、その頻度を設定できる必要があります。計画すべきもう1つの機能です。

正直言って、データベースの目的はまだわかりません。私が読んだ内容に基づいて、実装の考え方をやめ、このサービス全体について考え始めることをお勧めします。この時点でデータを保存する場所は無関係です。サービスが何を行うか(そして、「停止時間を監視する」は非常に時期尚早の要件です)、このサービスを実行する「もの」とその対応方法を決定する必要があります。サービスが停止するとどうなりますか?あなたはモニターをモニターしていますか?誰がそれをインストール/設定しますか?実行中に情報を提供しますか?等々。

さらに進む前に、かなり複雑なサービス/システムを書く必要があるようです。 MS Operations Manager https://technet.microsoft.com/library/hh230741.aspxのように、何らかのMS(および他の者)が既に行っています。ホイールを(少なくとも部分的に)再構築しようとするなら、ドキュメンテーションを見て、それがどのように構成され、どのように構成されているか、それの背後にある概念などを見るのに役立つかもしれません。

+0

「サービス」は文脈から少し誤って解釈されている。私が監視する必要のあるアプリケーションは、Windowsサービスではなく、Windowsサービスを作成するはずです。これをクリアするだけです。 –

関連する問題