Stiamo costruendo un'applicazione HR abbastanza grande in ASP.NET MVC, e finora i nostri controllori stanno diventando piuttosto grandi. Ad esempio, disponiamo di un controller Employee e tutte le visualizzazioni dei dipendenti sono incluse (Informazioni personali, detrazioni dipendenti, dipendenti, ecc.). Ciascuna di queste viste potrebbe avere più azioni o sottoview (ad esempio CRUD). Ogni azione è relativamente piccola, ma i controller potrebbero avere dozzine di funzioni.Meglio avere controller enormi o molti controller in MVC?
Esistono procedure consigliate per suddividere i controller? Invece di avere un controller Employee con dozzine di viste, sarebbe meglio avere un controller per ogni sottotipo (cioè EmployeePersonalInfoController, EmployeeDeductionController, EmployeeDependentController)?
E infine, importa?
Aggiornato Chiarimento
La mia preoccupazione era originale con azioni CRUD. Ad esempio, prendiamo in considerazione Creazione ed eliminazione ...
azioni attuali in EmployeeController:
CreateEmployee()
DeleteEmployee()
CreateEmployeeDeduction()
DeleteEmployeeDeduction()
CreateDependent()
DeleteDependent()
etc.
Se i controllori sono stati suddivisi:
EmployeeController
Create()
Delete()
EmployeeDeductionController
Create()
Delete()
EmployeeDependentController
Create()
Delete()
EmployeeBenefitController
Create()
Delete()
etc.
Nel 1 ° scenario, il nostro ~ 100 gli schermi vengono suddivisi in 8-10 controller di grandi dimensioni. Nel secondo, probabilmente avrei ~ 50 controller.
Non sono sicuro che "sottotipi" sia la migliore espressione da parte mia. Non implementerei le aree (raggruppandole in cartelle), semplicemente creando più di esse. Aggiornerò la domanda con qualche tipo di esempio per chiarire Grazie. –
La realtà, in pratica, è che i controller MVC fanno molto di più del semplice rendering delle viste. Per lo meno, è necessario un get e post gestore separato per ogni pagina. Ognuno richiede input diversi. Se sei fortunato, il modello di visualizzazione che esegui è lo stesso modello di visualizzazione che viene pubblicato di nuovo. In un post, il controller deve almeno decomprimere il modello di visualizzazione in un DTO per passare al livello della tua business logic, e probabilmente dovrai fare una sorta di trasformazione su di esso, perché la suddivisione logica dei dati proviene dall'utente non è necessariamente uguale a ciò che viene inviato al livello della business logic. – Triynko
Dopo aver passato i dati al livello aziendale per l'elaborazione, il controllore deve elaborare una condizione di esito positivo o negativo. In caso di errore, se hai un modello dati personalizzato (ad esempio, il rendering dei dati come una stringa JSON), lo stato del modello integrato è inutile e dovrai fare altri passi per assicurarti che ciò che l'utente ha postato sia consegnato sul display. In caso di successo, è necessario decidere dove inviare l'utente successivo. Tutto questo non è banale, e segue ancora la regola di base di non mettere la logica di business nel controller. I controller non sono così semplici come le persone li stanno facendo per essere. – Triynko