Model-view-controller: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
EnzoBot (discussione | contributi)
m Altri progetti: Design Patterns Patterns
 
(15 versioni intermedie di 9 utenti non mostrate)
Riga 5:
== Descrizione ==
=== Componenti ===
Il componente centrale del MVC, il modello, cattura il comportamento dell'applicazione in termini di dominio del problema, indipendentemente dall'interfaccia utente (view).
Il modello gestisce direttamente i dati, la logica e le regole dell'applicazione. Una vista può essere una qualsiasi rappresentazione in output di informazioni, come un grafico o un diagramma. Sono possibili viste multiple delle stesse informazioni, come ad esempio un grafico a barre per la gestione e la vista tabellare per l'amministrazione. La terza parte, il controller, accetta l'input e lo converte in comandi per il modello e/o la vista.
 
Riga 13:
 
* il ''model'' fornisce i [[metodo (informatica)|metodi]] per accedere ai dati utili all'applicazione;
* illa ''view'' visualizza i dati contenuti nel model e si occupa dell'interazione con utenti e agenti;
* il ''controller'' riceve i comandi dell'utente (in genere attraverso illa view) e li attua modificando lo stato degli altri due componenti.
 
Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "[[Business logic|logica di business]]"), a carico del ''controller'' e del ''model'', e l'interfaccia utente a carico deldella ''view''.<ref>Vedi l'[http://martinfowler.com/eaaCatalog/modelViewController.html articolo] di Martin Fowler.</ref>
 
I dettagli delle interazioni fra questi tre oggetti software dipendono molto dalle tecnologie usate ([[linguaggio di programmazione]], eventuali [[libreria software|librerie]], [[middleware]] e via dicendo) e dal tipo di applicazione (per esempio se si tratta di un'[[applicazione web]], o di un'[[Programma (informatica)|applicazione desktop]]). Quasi sempre la relazione fra ''view'' e ''model'' è descrivibile anche come istanza del pattern [[Observer pattern|Observer]]. A volte, quando è necessario cambiare il comportamento standard dell'applicazione a seconda delle circostanze, il ''controller'' implementa anche il pattern [[Strategy pattern|Strategy]].
 
== Utilizzo ==
Storicamente il pattern MVC è stato implementato [[lato server]]. Recentemente, con lo sviluppo e la parziale standardizzazione di [[JavaScript]] sono nate le prime implementazioni [[lato client]].<ref>Leggere [http://www.html.it/articoli/javascript-mvc-1/ questa ottima introduzione] {{Webarchive|url=https://web.archive.org/web/20131231001220/http://www.html.it/articoli/javascript-mvc-1/ |date=31 dicembre 2013 }}</ref>
 
=== Lato server ===
Riga 31:
=== Lato client ===
[[File:JSP_Model_2.svg|thumb|right|Esempio di schema MVC in [[J2EE]]]]
Negli ultimi anni è aumentata la richiesta di [[Rich Internet application]] che facciano chiamate asincrone al server ([[AJAX]]), senza fare redirect per visualizzare i risultati delle elaborazioni. Col crescere della quantità di codice JavaScript eseguito sul client, si è sentita l'esigenza di creare i primi framework che implementassero MVC in puro JavaScript. Uno dei primi è stato Backbone.js, seguito da una serie interminabile di altri framework, tra cui JavaScriptMVC, Ember ed [[AngularJS]].
 
== Esempio ==
Riga 38:
== Note ==
<references/>
 
== Bibliografia ==
 
* {{cita libro
|autore = [[Ian Sommerville]]
|titolo = Ingegneria del software
|url = https://software-engineering-book.com/
|editore = Pearson
|città = Torino
|anno = 2017
|edizione = 10
|ISBN = 9788891902245
|cid = Sommerville 2017
}}
 
== Voci correlate ==
Line 43 ⟶ 57:
* [[Core Data]]
* [[Design pattern]]
* [[Front Controller patterncontroller]]
* [[Programmazione orientata agli oggetti]]
* [[Servlet]]
* [[Model-view-viewmodel]]
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{FOLDOC|Model-View-Controller|Model-View-Controller}}
 
{{Design pattern}}
{{portale|informatica}}
{{Design Patterns patterns}}
 
[[Categoria:Architettura del software]]
[[Categoria:PatternDesign pattern]]
[[Categoria:Programmazione]]