2013-07-03 17 views

risposta

7

Secondo Struts2 Interview Questions and Answers

Struts2 è un'architettura basata Pull-MVC, in cui tutti i dati vengono memorizzati in Valore Stack e recuperato da vista strato per il rendering.

In particolare:

In caso di push-MVC i dati (Model) è costruito e dato allo strato vista dai controllori mettendolo nelle variabili con ambito richiesta simile o una sessione . Esempio tipico è Spring MVC e Struts1. Pull-MVC, d'altro canto, inserisce i dati del modello tipicamente costruiti in in I controllori sono tenuti in un posto comune, ad esempio in azioni, che quindi viene visualizzato dal livello di vista.

+5

Dovresti davvero *** collegare la sorgente se la tua risposta è solo una copia e incolla: http://www.bullraider.com/java/struts2/interview-questions –

+1

Qui puoi trovare altro http: // www.guyrutenberg.com/2008/04/26/pull-vs-push-mvc-architecture/ –

3

Il concetto di push and pull fa riferimento a ciò che il server fa in relazione al client. In un'applicazione "push", un server sta spingendo o inviando dati ai client al proprio avvio. In un'applicazione "pull", il server attira o attende e riceve messaggi avviati dai client.

Una buona spiegazione è data qui mvc-pattern-its-importance-push-pull e qui pull-vs-push-mvc-architecture

Struts1 e Spring MVC sia l'uso di spinta. Questa domanda potrebbe essere utile spring-mvc-complex-model-population-from-multiple-sources Struts2 utilizza Tirare

+2

Siamo spiacenti ma l'intero world wide web sta dicendo il contrario. Spring MVC è PUSH, Struts1 è PUSH, ma ** Struts2 è PULL ** ... –

+0

Grazie! Stavo parlando di montanti1 .. - modificato – Tala

+0

Ma quale è meglio tra MVC Push e Pull –

-1

dispiace .. Non penso che puntoni 1, montanti 2 e Spring MVC può essere preso come PUSH MVC ..

sia come di tutti i framework utilizzano un front controller [ Classe Filer per Struts e Listener controller per Spring] definiti nel rispettivo descrittore di distribuzione. Ora entrambi questi frame salvano i dati del modulo nel loro rispettivo oggetto [Or modello] usando quel controller per riflessione.

Ora dal nostro controller di azione possiamo ricevere l'oggetto bean e otterremo i valori ma nel front controller in cui l'oggetto bean [o model] è effettivamente generato imposta il valore nel loro campo resperctive usando request.getParameter (param) o request.getParameterValues ​​(param) metodi internamente .. Quindi questo può essere considerato come PULL.

Quindi, secondo il mio pensiero, possiamo dire che questi framework possono utilizzare due livelli, ovvero i livelli di PULL utilizzati dai programmatori finali e dai livelli PUSH utilizzati dalle classi di base del framework.

2

Struts2, Play! e così via sono tutti i tipi di implementazioni modello pull del pattern MVC.

Termini "spinta" e "tirare" si riferiscono direttamente al tipo di implementazione del pattern Observer utilizzato tra Mostra e modello.Come indicato nel GoF Observer modello spiegazione, abbiamo:

A un estremo, che noi chiamiamo il modello spinta, il soggetto invia osservatori informazioni dettagliate circa il cambiamento, se vogliono o no. All'estremo opposto è il modello pull; il soggetto non manda altro che la minima notifica e gli osservatori chiedono esplicitamente i dettagli successivamente.

Ciò significa che l'attuazione del modello di spinta richiede che vista e modello sono implementati utilizzando lo stesso linguaggio e sono eseguite in uno stesso ambiente. Buoni esempi di questo tipo di implementazione sono applicazioni a pagina singola, in cui i componenti Visualizza e Modello vengono eseguiti all'interno del browser e un framework, ovvero Backbone, fornisce il meccanismo MVC (a.k.a. Observer). Spesso, il componente Model interagisce con un qualche tipo di API server, per mantenere e ottenere dati persistenti.

D'altra parte, pull model consente di implementare MVC utilizzando tecnologie diverse per componente View e componenti Controller/Modello. In questo tipo di MVC, non esiste un uso esplicito del pattern Observer e View interagisce esclusivamente con Controller. Visualizza componente, che di solito viene eseguito nel browser, invia alla richiesta del componente Controller gli aggiornamenti del modello o lo stato del modello. Di solito le richieste vengono implementate usando il protocollo HTTP. Questo tipo di implementazione richiede l'utilizzo di un tipo di "linguaggio di scripting HTML potenziato", come JSP, che consente di creare automaticamente il collegamento tra View e Controller.

+0

Spring MVC non è un modello pull. –

+0

@AleksandrM, sembra che tu abbia ragione. Ho trovato molte risorse che dicono che Spring è un'implementazione del modello push. Ho sempre creduto che Spring MVC implementasse il modello di tiro. Nel modello push, la vista osserva il modello, ma come diavolo è possibile usando JSP ?! Ad ogni modo, ho corretto la mia risposta. –

+0

@AleksandrM Ok, ce l'ho. La tua definizione segue ciò che viene detto in questa discussione [schemi J2EE: chiarimenti su MVC Pull e MVC Push] (http://www.theserverside.com/discussions/thread.tss?thread_id=22143). Aggiornerò al più presto la mia risposta di conseguenza ad esso :) –