Ho una domanda su come meglio verificare se un servizio è ancora in esecuzione.Il modo migliore per verificare se un servizio è stato sospeso
Prima un po 'di chiarimenti. Il servizio che ho è un'applicazione C# che può essere eseguita dalla riga di comando o può essere eseguita come servizio di Windows. La funzione del servizio consiste nel controllare le modifiche a un'origine dati di terze parti remota ed elaborare tali modifiche prima di aggiungerle al nostro data store locale.
Desidero essere in grado di identificare quando il servizio ha smesso di funzionare per qualsiasi motivo e avvisare qualcuno quando ciò accade nel modo più automatico possibile. Ciò deve avvenire indipendentemente dal fatto che il servizio venga eseguito come servizio di Windows o dalla riga di comando.
Ho già preso in considerazione il monitoraggio dell'archivio dati locale per le modifiche e la notifica quando le modifiche non sono avvenute per un determinato periodo di tempo, tuttavia ciò si è dimostrato un po 'troppo incoerente, poiché la frequenza delle modifiche apportate alla terza parte l'origine dei dati è variabile, il che significa che una mancanza prolungata di cambiamenti non indica necessariamente che il servizio ha smesso di funzionare, potrebbe semplicemente essere che non ci sono cambiamenti!
Ci sono dei suggerimenti su come potrei procedere a monitorarlo? Qualcuno ha qualche esperienza con qualcosa di simile?
Grazie, M
Modifica 1 Solo per dare una vaga idea di come funziona il servizio: il servizio 3rd party genera eventi quando i dati nuovi/aggiornati è disponibile in modo mio servizio si siede e aspetta per questi eventi da sollevare ed elaborare i dati restituiti nell'evento in rilievo. Ecco perché è difficile identificare quando non ci sono "modifiche" piuttosto che "servizio in crash".
Edit 2 Penso che ho bisogno di essere un po 'più chiaro: La ragione principale di questo monitoraggio è quello di informare l'utente su un potenziale problema sia con il servizio o con la connessione al servizio 3rd party. Il servizio stesso è a thread singolo e ha la gestione e la registrazione delle eccezioni appropriate. È probabile che questo servizio verrà eseguito su un server da qualche parte, quindi se ci sono problemi con il servizio e si interrompe l'aggiornamento del nostro archivio dati locale per qualsiasi motivo il servizio deve notificare a qualcuno.
Il vostro servizio ha qualche tipo di ciclo di polling? –
Puoi mostrarci una breve descrizione di cosa fa effettivamente il tuo servizio? Potremmo aiutare a identificare un luogo dove posizionare una qualche forma di battito cardiaco. – KingCronus