Mi chiedo se la struttura del progetto e la convenzione di denominazione che utilizzo nei progetti ASP.NET MVC e Web API siano ok. Queste tecnologie sono abbastanza nuove per me, quindi non ho ancora i miei standard.
Non cambio le convenzioni di default nei controller e nelle viste. Cambio il nome della cartella Models in ViewModels. Ogni View ha il proprio ViewModel, se necessario. Non uso set di entità come modelli di vista. Nella cartella Infrastructure inserisco classi DI e helper HTML.
Breve esempio:
DAL
Abstract
IUnitOfWork.cs
IGenericRepository.cs
Concrete
UnitOfWork.cs
GenericRepository.cs
AppContext.cs
AppUserManager.cs
AppRoleManager.cs
Entities
AppUser.cs
Other.cs
ViewModels
Users
ListViewModel.cs
CreateViewModel.cs
EditViewModel.cs
ChangePasswordViewModel.cs
Account
LoginViewModel.cs
Quando utilizzo Identity, non creo repository per gli utenti, ma in ogni classe controller che ne ha bisogno ho proprietà privata UserManager e RoleManager.
Non so come separare i controller MVC e Web API quando utilizzo entrambe le tecnologie in un progetto. Ad esempio, quando MVC invia la vista al client e il resto viene caricato in modo dinamico utilizzando l'API Web. È una buona idea metterli in cartelle diverse?
Controllers
MVC
UsersController.cs
WebAPI
UsersController.cs