Sono nuovo di .Net e sto cercando di imparare le cose. Sto cercando di sviluppare un'applicazione WPF Prism4 conPrism 4 WPF App - Architettura della soluzione con MVVM, repository e modelli di unità di lavoro implementati
- Visual Studio 2010 Express Edition CSharp,
- Prism v4,
- L'unità come CIO,
- SQL Server CE come archivio dati.
Ho studiato molto (?) E per contagiare anche da this e this tra gli altri, e ha deciso di implementare modelli di MVVM, Repository e UnitofWork. Questa applicazione sarà un'applicazione desktop con un singolo utente (me :-)
Così, ho creato una soluzione con i seguenti progetti:
- Shell (Application layout e la logica di avvio)
- comune (Application Infrastructure e del flusso di lavoro Logic)
- BusinessModuleA (Viste e ViewModels)
- BusinessModuleA.Model (entità di business - POCO)
- BusinessModuleA.Data (Repository, DAT un Access (EF?))
- BusinessModuleB (Viste e ViewModels)
- BusinessModuleB.Model (Enti di affari - POCO)
- BusinessModuleB.Data (Repository, Data Access (EF?))
Le mie domande sono:
- Quali progetti devono fare riferimento a quali progetti?
- Se si implementano i repository in "BusinessModuleX.Data", che è ovvio, dove dovrei definire gli IRepositories?
- Dove dovrei definire IUnitOfWork e dove dovrei implementare UnitOfWork?
- Va bene se consumo UnitOfWork e repository nel mio ViewModels? Instict dice che è un cattivo design.
- Se (4) sopra non è corretto, ViewModel dovrebbe ricevere dati tramite un servizio Layer (un altro progetto?). Quindi, come possiamo tenere traccia delle modifiche alle entità in modo da richiamare i metodi CRUD rilevanti su quegli oggetti nel livello di servizio?
- Qualcosa di tutto questo ha senso o mi manca l'immagine grande?
Ok, può essere che non stato chiaro su quello che volevo esattamente nel mio primo post. Non ci sono molte risposte in arrivo. Sto ancora cercando risposte perché mentre ciò che suggerito da @Rachel può essere efficace per le esigenze immediate, voglio stare attento a non dipingermi in un angolo. Ho un Access Db che ho sviluppato per uso personale in Office e che è diventato un successo e ora viene utilizzato da oltre 50 utenti e in crescita.Mantenere e modificare la base del codice di accesso è stato abbastanza semplice all'inizio, ma con l'evolversi della app, cominciò a crollare. Questo è il motivo per cui ho scelto di riscrivere tutto in .Net/Wpf/Prism e voglio essere certo di ottenere il giusto design di base.
Per favore discutete.
Nel frattempo, mi si avvicinò con this...
Ciao, grazie per la risposta. Non organizza M-V-VM in cartelle ma nello stesso progetto le coppia strettamente? Sì, i miei moduli hanno ciascuno il proprio db e sono totalmente estranei/inconsapevoli di altri moduli, tranne ovviamente, "Comune". – yoursvsr
La mia quarta domanda riguarda l'utilizzo di UnitOfWork 'e' Repository not 'o'. Penso che i repository siano stati iniettati con un UnitOfWork per fare il loro lavoro.Inoltre, consentendo a ciascun modulo di gestire il proprio DataAccessLogic, si accoppia nuovamente tutto ermetico, giusto? Mi chiedo se questo superi lo scopo di un accoppiamento libero e uno sviluppo modulare che Prism e gli schemi che ho elencato sopra cercano di ottenere. – yoursvsr
@yoursvsr Gli oggetti possono condividere un progetto ed essere ancora disaccoppiati. Ad esempio, in MVVM gli unici riferimenti che dovrebbero essere fatti sono i tuoi ViewModels che fanno riferimento ai tuoi modelli e le tue viste che fanno riferimento a Models/ViewModels. Dove esistono gli oggetti reali non ha molta importanza. – Rachel