progetto con 2 tipi di interfacce che svolgono lavori diversi, dovrebbero usare lo stesso BLL e DAL?

0

Sto lavorando a un progetto che ha due interfacce (web e desktop), non eseguono le stesse attività ma usano lo stesso BLL e DAL, la web part che usa il 100% di BLL e DAL, mentre il desktop solo bisogno di sapere circa il 20% del BLL e DAL.

Pensa che sia una buona idea lasciare che il desktop usi lo stesso BLL e DAL del web, che di conseguenza porterà alla distribuzione di questi BLL e DAL con l'applicazione desktop? O pensi che sia meglio creare nuovi progetti BLL e DAL solo per servire l'app desktop? Ma in questo caso cadrò nella trappola di mantenere due copie dello stesso codice!

    
posta Sisyphus 12.09.2013 - 00:02
fonte

3 risposte

1

Non sono sicuro che questa sarebbe una risposta a tutti, ma ha risolto il problema per me.

Ho utilizzato gli stessi layer DLL e BAL per le due GUI, quindi ho utilizzato un'applicazione di assemblaggio del potatore per eliminare le classi che non erano state utilizzate dall'applicazione desktop dagli assembly DAL e BLL.

Esempio di queste applicazioni di sfoltimento è RegGate SmartAssembly che offre la funzione di sfoltimento tra molte altre funzionalità.

    
risposta data 10.05.2014 - 15:54
fonte
1

Non hai fornito dettagli sul motivo per cui sei preoccupato di distribuire il codice aggiuntivo con l'app desktop, ma in generale, mantenere la duplicazione del codice al minimo dovrebbe essere una priorità elevata.

La mia ipotesi migliore è che tu sia preoccupato delle dimensioni della tua app desktop quando include il codice che non usa, ma a meno che non spinga la dimensione oltre 20 MB o così per essere scaricata su Internet, non lo farei essere troppo preoccupato per questo.

Se hai buone ragioni per credere che le dimensioni con codice inutilizzato saranno proibitive, la prima cosa che farei è esaminare i modi in cui posso includere nel pacchetto desktop solo i moduli di BLL e DAL di cui ha bisogno . In Java proverei a suddividere i pacchetti monolitici in quelli più piccoli e modificare lo script di compilazione per scomporre solo quei pacchetti che usa.

Un'altra opzione potrebbe essere quella di effettuare chiamate di servizi Web alla tua webapp dall'app desktop, il che può avere senso in situazioni in cui prevedi di supportare diverse app diverse, ad es. desktop, iOS, Android, ecc., ma non è un'impresa banale.

    
risposta data 12.09.2013 - 03:56
fonte
0

Forse il tuo problema è che hai un solo modello, grandi applicazioni sono normalmente composte o vari modelli disaccoppiati, in Domain Driven Design questo concetto è chiamato Contesto Limitato.

In un sistema progettato in questo modo l'applicazione desktop probabilmente usa molte di queste BC e l'applicazione Web usa tutto, in questo modo è possibile distribuire l'app desktop con solo le BC necessarie.

La duplicazione fuori rotta è peggio che puoi fare, meglio pensare in modi di modularizzare il tuo modello e distribuire solo i moduli (BC) di cui hai veramente bisogno in ogni caso, ma è molto meglio la tua situazione attuale rispetto alla situazione di avere il 20% del tuo codice duplicato.

    
risposta data 10.05.2014 - 12:31
fonte

Leggi altre domande sui tag