Attualmente sto studiando la progettazione di architetture multilivello per un'applicazione web based in MVC3. Ho già un'architettura, ma non sono sicuro che sia la migliore che posso fare in termini di estensibilità e prestazioni.
L'architettura corrente ha i seguenti componenti
- DataTier (contiene oggetti EF POCO)
- DomainModel (contiene oggetti relativi al dominio)
- Globale (Tra le altre cose comuni contiene oggetti Repository per CRUD to DB)
- Livello aziendale (logica aziendale e interazione tra dati e client e CRUD che utilizzano il repository)
- Web (Client) (che parla con DomainModel e Business ma ha anche i propri ViewModels per creare e modificare le viste per es.)
Nota: sto usando ValueInjector per convertire un tipo di entità in un'altra. (che sta dimostrando un sovraccarico in questo desing. Non mi piace davvero farlo.)
La mia domanda è che ho troppi livelli nella suddetta architettura? Ho davvero bisogno di un modello di dominio? (Penso di sì quando espongo la mia Business Logic tramite WCF a client esterni).
Quello che sta succedendo è che per un semplice database lo si inserisce
(1) crea ViewModel
(2) Converti ViewModel in DomainModel for Business per capire
(3) Business Convertirlo in DataModel per repository e quindi i dati tornano nello stesso ordine.
Poche cose da considerare,
Non sto cercando una soluzione architettonica perfetta in quanto non esce. Sto cercando qualcosa che sia scalabile. Dovrebbe essere recuperabile (ad esempio utilizzando schemi di progettazione, interfacce, ereditarietà, ecc.) Ogni livello dovrebbe essere facilmente testabile.
Qualsiasi suggerimento o commento è molto apprezzato.
Grazie,