Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Model-view-controller - Teknopedia
Model-view-controller - Teknopedia
Niente fonti!
Questa voce o sezione sull'argomento programmazione non cita le fonti necessarie o quelle presenti sono insufficienti.

Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti.
Struttura del pattern MVC

Model-view-controller (MVC, talvolta tradotto in italiano con la dicitura modello-vista-controllo), in informatica, è un pattern architetturale molto diffuso nello sviluppo di sistemi software, in particolare nell'ambito della programmazione orientata agli oggetti e in applicazioni web, in grado di separare la logica di presentazione dei dati dalla logica di business.[1] Questo pattern si posiziona nel livello logico o di business e di presentazione in una architettura multi-tier.

Descrizione

[modifica | modifica wikitesto]

Componenti

[modifica | modifica wikitesto]

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.

Struttura

[modifica | modifica wikitesto]
Tipica interazione tra componenti del pattern MVC

Il pattern è basato sulla separazione dei compiti fra i componenti software che interpretano tre ruoli principali:

  • il model fornisce i metodi per accedere ai dati utili all'applicazione;
  • la 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 la 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 "logica di business"), a carico del controller e del model, e l'interfaccia utente a carico della view.[2]

I dettagli delle interazioni fra questi tre oggetti software dipendono molto dalle tecnologie usate (linguaggio di programmazione, eventuali librerie, middleware e via dicendo) e dal tipo di applicazione (per esempio se si tratta di un'applicazione web, o di un'applicazione desktop). Quasi sempre la relazione fra view e model è descrivibile anche come istanza del pattern Observer. A volte, quando è necessario cambiare il comportamento standard dell'applicazione a seconda delle circostanze, il controller implementa anche il pattern Strategy.

Utilizzo

[modifica | modifica wikitesto]

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.[3]

Lato server

[modifica | modifica wikitesto]

Originariamente impiegato dal linguaggio Smalltalk, il pattern è stato esplicitamente o implicitamente sposato da numerose tecnologie moderne, come framework basati su PHP (Symfony, Laravel, Zend Framework, CakePHP, Yii framework, CodeIgniter), su Ruby (Ruby on Rails), su Python (Django, TurboGears, Pylons, Web2py, Zope), su Java (Spring, JSF e Struts), su Objective C o su .NET.

A causa della crescente diffusione di tecnologie basate su MVC nel contesto di framework o piattaforma middleware per applicazioni web, l'espressione framework MVC o sistema MVC sta entrando nell'uso anche per indicare specificamente questa categoria di sistemi (che comprende per esempio Ruby on Rails, Struts, Spring, Tapestry e Catalyst).

Lato client

[modifica | modifica wikitesto]
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

[modifica | modifica wikitesto]

In J2EE un esempio tipico è quello della suddivisione dell'applicazione in JSP (per il front-end o view), Servlet per il controller e un File Java per la logica di business di interfacciamento o model con un DB. Quando ciò non è presente un framework MVC sta implementando la stessa logica/schema semplificando il tutto.

Note

[modifica | modifica wikitesto]
  1. ^ Per una introduzione di tipo universitario, consultare queste slide. Per avere una introduzione al pattern MVC in un'ottica Java, vedere questo articolo Archiviato il 24 dicembre 2012 in Internet Archive. su Mokabyte, per avere una introduzione in ottica Microsoft, vedere questo articolo su MSDN.
  2. ^ Vedi l'articolo di Martin Fowler.
  3. ^ Leggere questa ottima introduzione Archiviato il 31 dicembre 2013 in Internet Archive.

Bibliografia

[modifica | modifica wikitesto]
  • Ian Sommerville, Ingegneria del software, 10ª ed., Torino, Pearson, 2017, ISBN 9788891902245.

Voci correlate

[modifica | modifica wikitesto]
  • Architettura multi-tier
  • Core Data
  • Design pattern
  • Front controller
  • Programmazione orientata agli oggetti
  • Servlet
  • Model-view-viewmodel

Altri progetti

[modifica | modifica wikitesto]

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sul model-view-controller

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Denis Howe, Model-View-Controller, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
V · D · M
Design pattern
CreazionaliAbstract factory · Builder · Factory · Prototype · Singleton
StrutturaliAdapter · Bridge · Composite · Container pattern · Decorator · Façade · Flyweight · Proxy
ComportamentaliChain-of-responsibility · Command · Interpreter · Iterator · Mediator · Memento · Observer · State · Strategy · Template method · Visitor
Pattern di concorrenzaActive object · Balking · Binding properties · Double-checked locking · Event-based asynchronous · Guarded suspension · Join · Lock · Monitor · Proactor · Reactor · Read write lock · Scheduler · Thread pool · Thread-local storage
Pattern architetturaliFront controller · Interceptor · MVC · n-tier · Specification · Publish–subscribe · Naked objects · Service locator · Active record · Identity map · Data Access Object · Data transfer object · ADR · Inversione del controllo
Altri
pattern
Blackboard · Business delegate · Composite entity · Dependency injection · Intercepting filter · Lazy loading · Mock object · Null object · Object pool · Servant · Twin · Type tunnel
LibriDesign Patterns · Enterprise Integration Patterns
PersoneChristopher Alexander · Erich Gamma · Ralph Johnson · John Vlissides · Grady Booch · Kent Beck · Ward Cunningham · Martin Fowler · Robert Martin · Jim Coplien · Douglas Schmidt · Linda Rising
ComunitàThe Hillside Group · The Portland Pattern Repository
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Model-view-controller&oldid=148411360"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022