Sto cercando di impostare la struttura della mia applicazione in VS e voglio "provare" e in futuro dimostrarlo a un livello ragionevole. Questa applicazione sarà una riscrittura WPF di una vecchia app Winform che non aveva seguito alcuna convenzione. No livelli, livelli, acronimi, ecc ...
È un'applicazione enterprise piuttosto ampia. Ho pianificato di utilizzare Linq To SQL come lo sono i miei DB e molto probabilmente sarà sempre MS SQL. Inoltre ho già un set di abilità.
Voglio seguire MVVM e DDD il meglio che posso ma mi confondo sulla struttura della mia applicazione quando li combino. Vorrei provare e illustrare con alcuni esempi.
Quando seguo MVVM la mia struttura di cartelle può apparire così:
Views
Models
ViewModels
Helpers
ma come si inserisce in un approccio stratificato DDD semplicistico in cui la mia struttura del progetto potrebbe assomigliare a questo:
MyApp.UI
MyApp.Domain
MyApp.Data
Ho messo il livello Models
nel dominio o ho 3 versioni di dire Person
? Questo porta ad un'altra domanda su dove dovrei mettere il mio repository e le mappature di DB Object su Domain Object? Suppongo che i dati ...
Views
Ottengo andrebbe nell'interfaccia utente ma sarebbe ViewModels
anche?
Infine, dove dovrei incorporare la mia logica di business?
Ho trovato quanto segue su CodePlex, Esempio DDD , ed è stato di aiuto, ma sembra essere per un'app Web anche se potrebbe non avere importanza e la mia ignoranza splende attraverso.
Non fraintendetemi, so che posso avere quante più cartelle e chiamarle come voglio. Sto cercando di capire dove posizionare le cose in modo che questo possa essere scalabile, non come si chiamano necessariamente quei luoghi.
Il cuore della mia domanda potrebbe essere mostrato in questo modo.
Ho un tblPerson
oggetto generato da *.dbml
. Questo è ovvio e appartiene al mio livello "Dati".
Ora avrei Model, DTO, Domain Model o qualunque cosa si chiamasse in un Layer separato (progetto?) Chiamato Person
. Avrei bisogno di un Mapper
per Person
a tblPerson
che non sono sicuro dove mettere.
Quindi, avrò un ViewModel per, diciamo, EditPerson
che avrebbe le sue proprietà da cui attinge Person
ma forse anche di più.
Finalmente avrei avuto una vista che era legata a quel ViewModel ....
Per essere chiari, il paragrafo è riempito con le mie ipotesi e ipotesi e spero che qualcuno mi aiuti a liberare l'aria per me o offrirà insight in modo che tra 6 mesi o un anno da adesso non mi stia prendendo a calci più del necessario.