ExtraGeek

La Tecnologia vista da me

MVC: Model-View-Controller

Ormai è diventata quotidiana abitudine, per chifa il programmatore, quella di imbattersi nella sigla MVC.

Ma cosa significa e cosa vuol indicare in particolare ?
MVC viene definito un "pattern architetturale" ... mmm ... questo non ci aiuta molto, anzi. Cerchiamo di espandere questa definizione. Un "design pattern" (che è più o meno la traduzione di pattern architetturale) in ambito ingegneristico-informatico può essere definito come la soluzione generale ad un problema ricorrente. In pratica è un modello che può essere applicato a problemi che solitamente si presentano sempre uguali durante lo sviluppo di un software. Spero che adesso sia un po' più chiaro.

Ma torniamo alla nostra sigla iniziale: MVC. Questo acronimo sta per "Model-View-Controller" e indica appunto un particolare pattern utilizzato nello sviluppo di interfacce grafiche in sistemi object-oriented. Questo modello è basato sulla separazione dei compiti a carico dei componenti software che interpretano i tre ruoli principali descritti dal modello stesso.

  1. Model sarà il componente a cui verrà demandato il compito dell'accesso ai dati utili all'applicazione;
  2. View sarà il componente che viaualizzerà i dati nel model e che si farà carico dell'interazione con l'utente;
  3. Controller sarà il componente che riceve i comandi andando a modificare lo stato degli altri due componenti;
Questo a grandi linea è ciò che significa MVC, entrando poi ancora di più nello specifico su internet si possono trovare guide focalizzate su framework dei vari linguaggi orientati agli oggetti oggi più diffusi che applicano questo tipo di modello (fra questi JAVA, .NET, Ruby, PHP, Python ecc.).

Diffusione

Nei giorni scorsi ho avuto modo di affrontare una discussione con un collega, anche piuttosto animata ;)
Il contendere verteva su quale linguaggio, o meglio, su quale tecnologia, sarebbe meglio oggi focalizzarsi se si presentasse la necessità di dover ripartire da zero, o quasi.

Il mio collega non aveva dubbi: Java, in tutte le sue declinazioni. Io invece ero, e sono, molto perplesso su una scelta del genere. Comunque, lasciando perdere per un attimo il focus della discussione e prendendo possesso di uno spin-off siamo passati discutendo anche alla valutazione sulla penetrazione che potrebbero avere le singole tecnologie sul mercato attuale ed in prospettiva futura. Mentre per Java e per piattaforme Linux-based abbiamo più o meno la sensazione di quanto offre il mercato, ci siamo arenati nella valutazione di .NET ed in particolare di C#. Ecco, in realtà non ci rendiamo conto affatto di quanto questo tipo di tecnologia sia diffuso. Riflettiamo e proviamo ad elencare quali siti, fra quelli che solitamente frequentiamo, si appoggiano a .NET o suoi derivati (MONO per esempio).

A me vengono a mente questi (se ne avete in mente altri segnalateli nei commenti):

Rai
Dell
HTC
Alfa Romeo (la cosa divertente è che il sito fiat istituzionale usa jsp)
Ferrari
Internet Bookshop (IBS – anche se sembra usare il vecchio ASP)
AutoScout24
Nestlè
Luisa Via Roma
ePrice

E via discorrendo. Così, molto a spanne, mi sembra invece che .NET in ambito web sia abbastanza diffusa come tecnologia. E mi sembra che le grandi aziende non snobbino questa tecnologia come il mio collega voleva farmi intendere … ;)

E voi, se vi dicessero che da domani mattina dovrete imparare una nuova tecnologia, su quale vi buttereste ? E perchè ?