Sto provando a configurare la struttura della mia applicazione in VS e voglio "provare" e provarlo a un livello ragionevole. Questa applicazione sarà una riscrittura WPF di una vecchia app Winform che non ha seguito alcuna convenzione. Nessun livello, livello, acronimi, ecc.
È un'applicazione Enterprise piuttosto ampia. Ho pianificato di usare Linq To SQL come sono i miei DB e molto probabilmente sarà sempre MS SQL. Inoltre ho già un set di abilità esistente.
Voglio seguire MVVM e DDD il meglio che posso, ma mi confondo sulla struttura della mia applicazione quando li combino. Lasciatemi provare e illustrare con alcuni esempi.
Quando seguo MVVM, la struttura della mia cartella potrebbe essere simile a questa:
Views
Models
ViewModels
Helpers
ma come si inserisce in un semplicistico approccio a strati DDD in cui la mia struttura del progetto potrebbe assomigliare a questa:
MyApp.UI
MyApp.Domain
MyApp.Data
Metto il Models
nel livello Dominio o ho 3 versioni di say Person
? Questo porta a un'altra domanda su dove metterei il mio repository e le mappature di oggetto DB su oggetto dominio? Supporrei Dati ...
Views
I get entrerebbe nell'interfaccia utente ma anche ViewModels
?
Infine, dove inserirò la mia Business Logic?
Ho trovato quanto segue su CodePlex, Esempio DDD , ed è stato di aiuto, ma sembra essere per un'applicazione Web anche se potrebbe non avere importanza ed è la mia ignoranza a splendere.
Non fraintendermi, so che posso avere tante cartelle e chiamarle come voglio. Sto cercando di capire dove posizionare le cose in modo che questo possa essere scalabile, non è quello che vengono chiamati necessariamente quei luoghi.
Il cuore della mia domanda potrebbe essere mostrato in questo modo.
Ho tblPerson
oggetto generato da *.dbml
. Questo è ovvio e dovrebbe appartenere al mio livello "Dati".
Ora dovrei avere Model, DTO, Domain Model, o qualunque cosa si chiami in un layer separato (progetto?) Chiamato Person
. Avrei bisogno di un Mapper
per Person
in tblPerson
che non sono sicuro di dove mettere.
Quindi, avrò un ViewModel per, diciamo, EditPerson
che avrebbe le sue proprietà che estrae da Person
ma forse anche di più.
Finalmente avrei avuto una vista che era legata a quel ViewModel ....
Per essere chiari che il paragrafo è RIEMPITO con le mie supposizioni e congetture e spero che qualcuno mi aiuti a chiarire l'aria per me o offrirti intuizioni così da 6 mesi a un anno da ora non mi sto prendendo a calci più del necessario .