Introduzione
Sto lavorando su MyProject
che è l'applicazione windows (desktop) in fase di sviluppo in C#.NET
e DotNet Framework 4 in WPF
. Il progetto è stratificato come DataAccessLayer (DAL)
- > BusinessLogicLayer (BLL)
- > ApplicationLayer (UI)
.
Questo progetto ha un modulo chiamato MyModule
che deve essere riutilizzato in altri progetti multipli con modifiche minime e possibilità di bug.
Tutti i progetti useranno lo stesso ambiente di sviluppo di MyProject
. Ma, DAL
sarà completamente diverso; NON sarà riutilizzato. Il modulo non avrà alcun controllo su di esso. Il modulo avrà BLL
che sarà riutilizzato da tutte le applicazioni di chiamata. Anche l'interfaccia utente del modulo verrà modificata chiamando l'applicazione. Il codice XAML
non farà parte della distribuzione; sarà nuovamente scritto chiamando l'applicazione.
distribuzione
Questo modulo verrà fornito ad altri progetti sotto forma di DLL compilate. L'applicazione di chiamata scriverà il proprio codice XAML
e vincolerà ViewModels
esposta dal modulo. Idealmente dovrebbe funzionare, ma potrebbe essere necessario un piccolo extra.
Inoltre, verrà distribuito BLL che verrà riutilizzato così com'è.
Ulteriori informazioni su MyModule
: -
Questo modulo è costituito da una finestra dell'interfaccia utente principale. Da questa finestra principale verranno lanciate più finestre secondarie. Il modulo aumenta gli eventi che devono essere gestiti chiamando l'applicazione. Il modulo richiede input che devono essere forniti chiamando l'applicazione.
Esempio
Microsoft decide (sono sicuro che lo facciano ora) per riutilizzare la finestra "Opzioni" (Opzioni-File) in tutti i progetti di MS Office. Ma ogni progetto può decidere la GUI della finestra, dove le impostazioni devono essere salvate, come (file XML / INI ecc.) Le impostazioni devono essere salvate, ecc.
Il mio piano
Sto pianificando di esporre un ViewModel
per finestra. Esporrò anche eventi / enum / structs se necessario. Per accettare i dati (dato che DAL
sarà completamente diverso), esporrò le classi DTO
che l'applicazione chiamante inserirà nel modulo.
problema
Ho creato moduli riutilizzabili in precedenza molte volte. Tutti quei moduli erano DLL senza GUI. Non c'era alcun ruolo nel collegare gli elementi dell'interfaccia utente e gli eventi con l'applicazione chiamante, consentendo al chiamante di progettare la propria interfaccia utente, ecc. Il mio problema chiave qui è come ottenere ciò? Quali linee guida dovrebbero essere seguite? Quale architettura dovrebbe essere usata? Come esporre un'interfaccia in DLL
che è associabile a un progetto WPF
?
Puoi suggerire correzioni nel mio piano o scartare completamente il mio piano e suggerire il tuo nuovo piano.