Stiamo sviluppando una grande applicazione con una vasta GUI e un livello aziendale complesso. Senza entrare troppo nel dettaglio, l'applicazione è attualmente implementata in un ricco client nativo, ma la funzionalità è approssimativamente separata in parti correlate alla logica di business e la GUI (anche complessa) basata su un paradigma MVC. (Qui devo dire che il "modello" di MVC è strettamente collegato alla GUI, dato che proviene dalla libreria della GUI di Windows)
I piani devono migrare questa app sul web, dove la separazione appropriata diventerà ancora più importante.
L'applicazione presenta Annulla / Ripristina, basata su un modello di comando classico che incapsula la logica aziendale. Tuttavia questo modello di comando attualmente "vive" nella parte della GUI, e i comandi stessi hanno grandi dipendenze sul sottosistema della GUI (notevole per le funzioni relative all'aggiornamento della UI). La nostra idea è di spostarla più in profondità ai livelli core aziendali, che diventeranno parte del backend di una potenziale soluzione basata sul Web.
Ma ciò solleva una domanda fondamentale. Funzionalità di annullamento / ripetizione si suppone che vivano nel livello aziendale? Dove lo inseriresti e come giustificheresti questa scelta di design?