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?