Devi ricostruire un'applicazione - come?

6

Per il nostro sistema principale, abbiamo una piccola applicazione di monitoraggio che si trova all'esterno della nostra rete e tenta periodicamente di accedere per verificare che il sistema funzioni ancora. Abbiamo un problema con il monitor, anche se il set di componenti di comunicazione (Asta 3 all'interno delle applicazioni Delphi) non si collega sempre. In generale, direi che è affidabile al 95%, ma l'altro 5% uccide il monitor dal momento che proverà ad accedere e ad appendere al tentativo di connessione (nessun timeout nel componente). Questo in realtà non è un problema sul lato client del sistema poiché i client non si disconnettono e riconnettono ripetutamente sulla stessa istanza dell'applicazione, ma ho bisogno di un modo per assicurarmi che il monitor rimanga attivo e continui a funzionare anche quando il componente fallisce di corsa. Ho alcune idee su come far funzionare il programma, l'idea principale è di mettere le comunicazioni all'interno di un modulo dati filettato in modo che se un thread si arresta in modo anomalo, un altro thread può testare più tardi e il programma continua a funzionare. Questo suona come un modo valido per andare? Altre idee su come garantire un'applicazione di monitoraggio affidabile con un componente affidabile inferiore al 100%?

    
posta Tom A 04.01.2011 - 18:22
fonte

1 risposta

4

C'è un motivo per cui non si passa a un componente di rete che supporta un timeout? Sembrerebbe essere la soluzione di buon senso qui.

Puoi usare Indy o Synapse o una semplice connessione TSocket?

Modifica

Dato che non puoi cambiare realisticamente, puoi:

  1. Crea un programma a riga di comando che esegue il controllo e usa CreateProcess da un'app padre per avviarlo e fermarlo se si blocca.

  2. Pester le persone che fanno in modo che ASTA inserisca un'impostazione di timeout. Sembra terribilmente strano che non ci sia già nessuno.

risposta data 04.01.2011 - 21:26
fonte