Differenza tra Oracle ATG e Struts? [chiuso]


Chiuso . Questa domanda deve essere più focalizzata . Attualmente non accetta risposte.

Vuoi migliorare questa domanda? Aggiorna la domanda in modo che si concentra su un problema solo da la modifica di questo post .

Chiuso 7 anni fa.

Migliora questa domanda

Qual è la differenza tra Oracle ATG e Struts?

Author: Roman C, 2008-12-26

3 answers

Struts è un framework per l'utilizzo all'interno di un'applicazione Web J2EE che tenta di fornire alle applicazioni Web un approccio alla codifica basato su pattern MVC. Include alcune utilità aggiunte per la convalida dei dati del modulo, ecc. Si tratta di un progetto open source, ed è stato abbastanza bravo a risolvere quel particolare pezzo del puzzle di applicazioni web, ed è limitato a risolvere solo quel particolare pezzo.

ATG (ATG Dynamo), d'altra parte, è una piattaforma applicativa - una soluzione e un framework - per la creazione di applicazioni web basate su dati e contenuti, in gran parte per il commercio e l'editoria. A livello di framework, è una piattaforma applicativa basata su Java per l'hosting di applicazioni basate sul Web, nonché componenti aziendali accessibili RMI, con un livello ORM, un contenitore di componenti, un framework MVC e un set di librerie di tag per JSP. Il framework dei componenti (Il nucleo) è un contenitore leggero per la gestione del ciclo di vita e del binding delle dipendenze (dependency injection) del componente Java oggetti (fagioli). In questo senso è in qualche modo simile al contenitore Spring bean ed è il nucleo del framework ATG-tutti gli altri servizi e framework sono ospitati al suo interno. Il framework di livello ORM (Repository) mappa gli oggetti da e verso i database relazionali (come ci si aspetterebbe). Ma può anche gestire la mappatura con LDAP, XML e file system ources dati utilizzando la stessa API di accesso ai dati coerente. I tag JSP per associare gli elementi del modulo in una pagina ai valori sugli oggetti di business, ecc. sono più elegante e più pulito dei tag di associazione del modulo in qualsiasi altro framework che ho visto. Il meccanismo di scrittura dei propri equivalenti di libreria di tag (Goccioline) è molto più coerente con l'API Servlet rispetto ai tag J2EE standard.

Il framework MVC (il pattern di base del gestore di moduli) è in qualche modo simile alle classi Struts Form e Action, ma fornisce un framework molto più semplice di Struts. Fuori dalla scatola e al livello in cui la maggior parte degli sviluppatori lavora, il modello ATG non è basato sulla pagina guidato dal controllore. Internamente, è certamente guidato dal controller con un approccio alla pipeline per concatenare dispatcher e controller.

Inoltre, il framework a livello base offre un contenitore RMI, caching distribuito, blocco distribuito e singleton distribuiti, eventi distribuiti e messaggistica, un task scheduler, un motore di regole e un meccanismo per definire i flussi di lavoro aziendali con azioni e risultati personalizzati, un editor grafico per i flussi di lavoro aziendali, il supporto per dati con versioni, supporto per ruoli e diritti, registrazione e controllo - tutto pronto e il tutto utilizzando API molto coerenti e coerenti

Poi a livello di soluzione, si hanno i componenti e le API per trattare con profilazione degli utenti, gestione delle identità e personalizzazione, authoring di contenuti, versioning e pubblicazione, ricerca di contenuti, cataloghi di prodotti per beni materiali e immateriali, ricerca di prodotti e navigazione guidata, prezzi, calcolo delle imposte, promozioni, carrelli della spesa, regalo liste e liste dei desideri, tipi di pagamento, metodi di spedizione, tracciamento degli ordini, gestione delle relazioni con i clienti, ecc.

I punti di estensione e i punti di integrazione per ATG sono solitamente molto ben progettati e abbastanza ben documentati. Supportano l'integrazione con praticamente chiunque sia chiunque nell'e-commerce e nello spazio editoriale per cose come la creazione e la gestione dei contenuti, la gestione e la sicurezza delle identità, i cataloghi dei prodotti, la ricerca e la navigazione guidata ecc. Inoltre, quasi tutte le aree dell' framework sono estensibili e plug-gable in modo da poter scrivere i propri componenti per migliorare o sostituire quelli fuori dalla scatola.

Non ha molto senso confrontare i due. Tuttavia, data la tua domanda, immagino che ciò a cui sei veramente interessato sia la parte MVC di ATG

Per MVC, Struts ti dà più di ATG (ma poi Spring MVC ti dà anche più di Struts). Tuttavia, si tende a impantanarsi nella meccanica del framework molto più con i montanti che con ATG.

Personalmente, penso che il modello basato su form-handler di ATG sia più elegante, più pulito e più facile da lavorare rispetto alla maggior parte degli altri framework MVC Web che ho visto, e le API sono più coerenti con le API Servlet.

Tieni presente, inoltre, che la maggior parte dei framework "web-MVC" non sono come true MVC (cioè il modello utilizzato per la programmazione GUI in Smalltalk o anche Java Swing ecc.). Né Struts né ATG forniscono (come progettato) vero MVC - anche se ATG in realtà si avvicina. C' c'è molta confusione sulla terminologia.

Ad esempio,

  1. L'odelM in true MVC non è il tuo modello di dati né gli oggetti del tuo modello di dominio. È il modello che rappresenta tutti i dati in una vista. Se questo è un oggetto modello di dominio, allora va bene e bene, ma il più delle volte, scoprirai che hai bisogno di un diverso set di oggetti di visualizzazione o modulo. Inoltre, il modello è responsabile del mantenimento di se stesso aggiornato-è il modello che interagisce con il business servizi più in basso. ATG tende a fondere il modello e il controller in un unico componente: il gestore di moduli. Struts tende a mantenere distinto il modello di dati di visualizzazione (l'oggetto form), ma non incoraggia il suo uso come modello nel vero senso MVC - non è l'oggetto form che interagisce con altri servizi aziendali per mantenersi aggiornato.

  2. IlC ontroller in MVC non è il tuo business controller. Un controller in MVC è un condotto tra la vista e il modello. Esso reagisce alle modifiche nella vista o alle azioni eseguite sulla vista e indica al modello di aggiornarsi di conseguenza. In Struts il controller di cui parlano non è affatto un controller MVC-è davvero un dispatcher. Un sacco di codice che appartiene a un controller finisce nella tua classe d'azione. Ma il modo in cui Struts è progettato, la classe d'azione è davvero destinata a fare ciò che fa un modello.

  3. IlV iew in MVC dovrebbe essere popolato dal modello-è una spinta meccanismo con il modello che aggiorna la vista, non un meccanismo di pull con la vista che interroga il modello. Nella maggior parte dei framework web-MVC, la vista (di solito un JSP) estrae lo stato dal modello per visualizzarsi. Ciò è particolarmente vero per l'approccio basato sulla pagina di ATG. Se trovi che i dati vengono recuperati mentre la tua pagina sta eseguendo il rendering, significa che qualcosa non va nel tuo design MVC.

In Struts, la funzione del controller MVC è distribuita attraverso il controller Struts e l'azione, mentre la funzione del modello MVC è distribuita attraverso l'oggetto Form e l'azione.

In ATG, la funzione del controller MVC e del modello MVC è tutta nel gestore di moduli

Detto questo, a causa della natura richiesta-risposta di HTTP, la funzione di un controller in un framework web-MVC è piuttosto limitata. Con le applicazioni Web, tendiamo a ottenere una visione completamente aggiornata sull'invio del modulo piuttosto che molte piccole modifiche (ad esempio ogni pressione del tasto o clic del mouse, o ogni campo di input modificato) come faremmo con un framework UI ricco. L'uso di AJAX sta cambiando questo-e dobbiamo pensare molto di più sull'implementazione corretta di MVC.

Ricorda, MVC è un modello di progettazione, cioè è un principio di progettazione da utilizzare quando si progetta l'aspetto GUI delle applicazioni. Struts e ATG sono framework, ovvero sono classi e oggetti da estendere, implementare o configurare durante la creazione dell'applicazione. Un framework non può imporre l'uso di un design modello - può semplicemente incoraggiarlo. La scelta di utilizzare un particolare framework non ti farà progettare meglio il tuo ciode - al massimo potrebbe incoraggiare una certa disciplina.

Se progetti bene il tuo MVC, non farà una grande differenza se usi le classi Struts o le classi ATG per implementarlo. Allo stesso modo, se progetti male il tuo MVC, sperando che la tua scelta di framework compensi le tue carenze, non farà un'enorme differenza se usi Struts o ATG. Se tu comprendere e lavorare con i principi di progettazione, troverete molto facile passare avanti e indietro tra i quadri.

Il codice migliore sarà quello che aderisce a un buon principio di progettazione (ad esempio, true MVC) in astratto, e lo implementa (lo realizza) usando gli strumenti giusti disponibili nel framework scelto nel modo in cui sono destinati ad essere utilizzati.

Tornando alla tua domanda;

Se stai lavorando su un progetto ATG, dovresti usare i framework che ATG fornire. È certamente possibile calzare puntoni in un'applicazione ATG-l'ho fatto io stesso molti anni fa - ma è molto più sforzo di quanto valga-e stai rinunciando a molto di ciò che ATG fornisce fuori dalla scatola in termini di gestione del ciclo di vita dell'oggetto, associazione dei dati del modulo ecc..

Se stai per iniziare a lavorare su un nuovo progetto e hai una scelta di framework da usare, consiglierei personalmente un server di applicazioni open source (come JBoss) e il framework Spring - ti dà il meglio di ciò che ATG e puntoni forniscono. Ha un contenitore di componenti simile al nucleo (il contesto dell'applicazione), si integra con tutte le buone soluzioni ORM (come Hibernate) e include un framework MVC che a mio parere ha Struts di gran lunga eclissati. Inoltre, consiglierei di guardare Spring Web-flow per la progettazione del flusso GUI di livello superiore.

 59
Author: Vihung, 2013-12-21 08:48:42

La differenza principale nel Regno Unito è che come appaltatore ATG puoi ottenere £500 al giorno, ma come ragazzo generale Struts sei fortunato a ottenere £350.

Non che io sia affatto amaro.

 9
Author: Gareth Davis, 2013-05-15 21:08:43

ATG è software proprietario... e le risorse sono meno ...

 -1
Author: Sameer, 2010-04-05 10:03:13