Dove inserire il codice di monitoraggio del database?

1

Ho una funzione che ottiene le statue dei miei database e le istanze di Redis per verificare che siano online:

    internal static bool IsOnline(ConnectionLocator connectionLocator)
    {
        try
        {
                connectionLocator.SessionDatabase.Ping(StackExchange.Redis.CommandFlags.None);
                using (var connect = connectionLocator.OpenSqlConnection())
                {
                    var command = connect.CreateCommand();
                    command.CommandText = "select 1";
                    command.ExecuteScalar();
                }
            }
        }
        catch
        {
            return false;
        }
        return true;
    }

Questo è usato per mostrare uno stato del sistema ai consumatori della mia applicazione.

Attualmente, l'ho nel controller MVC da cui viene chiamato, ma non penso che sia giusto.

Tuttavia, non sembra appropriato inserirlo in un repository; Sto chiedendo informazioni sull'accesso ai dati, NON cercando di astrarre i dettagli di accesso ai dati da un'entità.

Qualcuno è a conoscenza di schemi o best practice per questo tipo di codice di interrogazione di sistema?

    
posta TheCatWhisperer 28.02.2018 - 19:17
fonte

1 risposta

2

Il monitoraggio fa parte del tuo dominio problematico. La routine che hai mostrato è parte della tua logica aziendale. Se usiamo un'architettura MVC, questo non sarebbe parte della vista né parte del controller perché non reagisce all'input dell'utente. Sarebbe parte del tuo modello, nel suo senso più ampio.

Il modo in cui strutturi il modello / la logica aziendale dipende da te. Hai ragione che questo controllo si trova al limite del tuo sistema, ma non appartiene davvero nemmeno a un repository. Prenderò in considerazione un servizio indipendente che pianifica regolarmente un assegno. Altre parti del sistema possono quindi iscriversi a questo servizio per ricevere aggiornamenti quando lo stato cambia (ad esempio, visualizzare una notifica su un dashboard di monitoraggio).

    
risposta data 02.03.2018 - 22:10
fonte

Leggi altre domande sui tag