Incapsulamento della logica aziendale che va oltre le convalide in MVC

2

Sono abbastanza chiaro che la logica di business va nei modelli. Ma su questa domanda , si riferiscono alla logica aziendale come una convalida di basso livello (se l'utente si iscrive, richiedi la sua e-mail).

Che dire della logica aziendale che va oltre la convalida? Ad esempio, in questo momento sto lavorando a un progetto in cui l'utente è in grado di generare un preventivo dopo l'invio di un modulo. Una volta inviata, l'applicazione elaborerà diversi dati (che non sono correlati a detto modulo) e creerà alcune altre righe del database. Questo processo coinvolge 3 diverse entità di modello, che indicano chiaramente che inserire il codice per questo processo all'interno di una di quelle classi di entità modello sarebbe "sbagliato".

In questo momento sto usando il pattern Unità di lavoro per incapsulare le operazioni CRUD (database e simulazione per test), ma ho letto da qualche parte su alcuni modelli Servizio , che incapsula detto UnitOfWork ed eventualmente processi come descritto sopra.

Qual è lo schema utilizzato per questo tipo di logica?

    
posta Christopher Francisco 27.02.2015 - 14:29
fonte

1 risposta

2

Appare ancora in un modello, solo che non è un modello visualizza . Poiché MVC presuppone che stai lavorando nell'interfaccia utente, omettono una "V" ... Visualizza View View Controller, VMVC non ha lo stesso squillo ad esso.

Se la tua applicazione è banale, il tuo modello di visualizzazione e il modello di business possono essere la stessa cosa, e va bene. Ma sembra che la tua applicazione abbia superato quel punto.

public class Quote
{
   public string Prerequisite1 { get; set; }
   public string Prerequisite2 { get; set; }
   public string GenerateQuote()
   {
      //Logics
   }
}

//Controller:
Quote quote = new Quote();
quote.Prerequisite1 = viewModel.TextField1;
quote.Prerequisite2 = repository.GetFromDB();
string shownToUser = quote.GenerateQuote();
repository.SaveWhatYouNeedToSave(quote);
    
risposta data 23.04.2015 - 15:59
fonte

Leggi altre domande sui tag