ASP.NET MVC Denominazione degli oggetti di livello intermedio

2

Come sviluppatore aziendale che lavora da solo mi trovo a creare e scrivere molti siti Web che consistono in schermate che sono fondamentalmente wrapper per una tabella DB. Quindi, ad esempio, su una schermata che aggiorna le aziende, avrei un controller come questo:

 public class CompaniesController
{
    private readonly ICompaniesManager manager;

    public CompaniesController(ICompaniesManager manager)
    {
        this.manager = manager;
    }

    [HttpPost]
    public JsonResult Update(Company company)
    {
            // validation goes here
            this.manager.Update(company);
            // handle update result
    }
}

questo controller sta parlando a una classe "Manager" di livello intermedio.

 public class CompaniesManager : ICompaniesManager
{
    private readonly ICompaniesRepository repository;

    public CompaniesManager(ICompaniesRepository repository) 
    {
        this.repository = repository;
    }

    public void Update(Company company)
    {   
        // business logic & caching code    
        this.repository.Update(company);
    }
}

Come puoi vedere, si tratta di una classe di repository che gestisce effettivamente l'aggiornamento del database.

Quindi mi sembra sempre di finire con il modello xxxController - > xxxManager - > xxxRepository (dove xxx è l'oggetto / tabella). Continuo a trovarmi chiedendomi se mi manca qualcosa di fondamentale su come dovrebbe funzionare un'app di 3 livelli o come dovrebbero essere denominate le classi di livello medio.

Questa dovrebbe essere considerata un'architettura a 3 livelli corretta o mi manca qualcosa?

    
posta Lobsterpants 27.01.2016 - 12:10
fonte

1 risposta

1

Quello che hai lì sembra una soluzione architettonica standard per le applicazioni MVC. Poiché MVC non fornisce una soluzione per il livello dati, hai un repository. Quindi i 3 livelli sono:

  • Livello aziendale: dove le classi aggiunte da "Manager" sono
  • Livello dati: repository
  • Livello di presentazione: vista e controller

EDIT:

Dovresti cambiare la parola "Manager" in "Servizio" poiché ciò che hai lì è chiamato livello di servizio. Solitamente aggiungiamo la parola "Manager" (o "Helper" o "Util") alle classi statiche - qualcosa che potrebbe essere un odore di codice .

    
risposta data 27.01.2016 - 12:52
fonte

Leggi altre domande sui tag