Dove è consentito aggiungere il codice di registrazione in un modello MVC?

5

Lavorando su un programma C # WinForms che è scritto in uno stile MVC (in realtà Model-View-Presenter) e voglio aggiungere alcune righe di codice che sono responsabili della registrazione di alcuni eventi. Dove dovrei scrivere due o tre righe di codice di cui ho bisogno? Dovrei scriverlo nella sezione Presenter?

Per avere un'idea, ecco alcune righe di codice di esempio già presenti nel Salva () metohd in Company.MyApplication.Presenter .MyPresenter.cs class:

ha scritto codici si trovano i seguenti in questa parte del presentatore:

private void Save(Helper.SaveStatusEnum status)
{
    if (notification.CheckLocks(orderIdCollection))
    {
        using (new HourglassController())
        {
            controller.FireActiveCellLeaving();
            ViewDocumentedValues();

            int result = saveController.Save(status);

            if (result == Helper.SAVE_SUCCESSFUL)
            {
                //  IS IT OK TO WRITE MY COUPLE LINES OF CODE IN HERE???????????
                model.Dirty = false;

                if ((model.CurrentStatus == Helper.OrderStatusEnum.Complete) || (model.CurrentStatus == Helper.OrderStatusEnum.Corrected))
                {
                    controller.EnableDisableSheet(false);
                }

                CheckApplicationState();
                SheetHelper.ClearUnsavedDataRowImage(view.ActiveSheet);
            }
            else
            {
                MessageBox.Show("An unexpected error occuring trying to save.");
            }
        }
    }
}
    
posta Blake 01.11.2012 - 18:40
fonte

4 risposte

9

La registrazione è una preoccupazione trasversale . Non c'è posto giusto per la registrazione; lo fai dove devi.

MVC è agnostico a tale riguardo; non ha nulla da dire su dove inserisci linee di codice che chiamano il tuo logger.

    
risposta data 01.11.2012 - 19:49
fonte
3

Dipende dall'obiettivo che hai con il logging. Se la cosa che vuoi registrare è riuscita correttamente con Save e solo nella posizione del tuo codice che hai segnato sopra, allora sarà ovviamente il posto giusto. Ma se si desidera registrare ogni chiamata riuscita a saveController.Save nel codice, è meglio posizionare la chiamata di registrazione all'interno di tale metodo.

E non pensare troppo all'architettura MVC con la registrazione: la registrazione è una preoccupazione trasversale, che può avere senso in qualsiasi livello, a seconda di ciò che si vuole ottenere. Ad esempio, se stai loggando per scopi di debug, potrebbe avere senso anche nel livello vista.

    
risposta data 01.11.2012 - 19:46
fonte
1

Probabilmente il modello sarebbe il posto migliore dal momento che è la parte più vicina al sistema, e la registrazione è fatta sul sistema (di solito).

Visualizza e presentatore sono più probabilmente responsabili nel mostrare i dati all'utente e nella gestione delle azioni degli utenti.

EDIT:

Se si desidera aggiungere la registrazione solo per il debug ad hock e quindi rimuoverlo immediatamente in modo che non entri in produzione, è possibile scriverlo ovunque si desideri. Tuttavia, se desidero aggiungere la registrazione a lungo termine, la aggiungeremo nel modello.

Ma non vedo queste cose come soluzioni assolutamente sbagliate o buone. Se non hai modo, per alcuni motivi ben compresi, per aggiungerlo ai modelli puoi aggiungerlo anche al presentatore. Probabilmente il posto peggiore che il registro potrebbe essere è la vista, quindi evitalo il più possibile.

    
risposta data 01.11.2012 - 19:30
fonte
1

Raccomando di guardare Mettere i controller su una dieta di Jimmy Bogard. È per MVC 2, ma è ancora molto rilevante in MVC 4. È come ora codifico le mie applicazioni MVC. È semplice e crea separazione delle preoccupazioni.

Copertine video:

  • Iniezione delle dipendenze
  • automapper
  • Associazione modello
  • Risultati azione

Puoi accedere al logging dove vuoi ... ma i pattern descritti nel video danno come risultato uno sviluppo efficiente di MVC ..

La bellezza dell'approccio è che elimina le nidificate dichiarazioni nidificate che si trovano comunemente nella convalida e nel codice di recupero dei dati in un punto di accesso all'applicazione (cioè i clic sui pulsanti)

Aggiorna

Mi sono appena reso conto che la domanda è per MVP in Windows Form, credo ancora che vengano applicate molte delle idee nel video di Jimmy.

    
risposta data 01.11.2012 - 19:33
fonte

Leggi altre domande sui tag