Come espansione dalla mia precedente domanda sull'utilizzo di progetti separati per livelli separati - Buona pratica su Visual Studio Solutions
Ora desidero sapere se sto inserendo la giusta funzionalità nei livelli corretti.
Sfondo
Sto costruendo un'applicazione WPF da zero, che contiene logica aziendale e oggetti business. Il database stesso si trova su un altro server sul Web con accesso ad esso, limitato alle chiamate API Web mediante l'autenticazione OAuth.
Penso che il seguente contenuto dovrebbe essere in questi livelli. L'idea è che tu passi dal livello 1 al livello 4, solo in base agli strati sottostanti. Per evitare dipendenze circolari.
1. Presentazione
Vista WPF (ciò che vedrà l'utente)
WPF ViewModel (come il programma risponde all'interazione dell'utente)
Nessun modello WPF, poiché sarà solo l'oggetto business
2. Application / Servizi
Repository (classe utilizzata da ViewModel per caricare / salvare oggetti business)
Classi di utilità per aiutare a salvare oggetti, selezionando le chiamate API corrette.
3. Livello aziendale
Oggetti aziendali / Entità / DTO (a prescindere dal nome preferito)
Fabbriche (utilizzate dai repository nella creazione di oggetti business)
Altra altra classe di business (ad esempio, l'archiviazione dell'utente attualmente connesso)
4. Infrastruttura / Accesso ai dati
Client OAuth (effettua chiamate autenticate contro il server Web, utilizzate dalle classi di repository)