<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmazione Web &#187; programmazione mvc</title>
	<atom:link href="http://www.programmazione-web.com/tag/programmazione-mvc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.programmazione-web.com</link>
	<description>il Blog open degli sviluppatori del web!</description>
	<lastBuildDate>Mon, 25 Jul 2011 16:39:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Programmare il Web seguendo MVC</title>
		<link>http://www.programmazione-web.com/programmare-web-seguendo-mvc.php</link>
		<comments>http://www.programmazione-web.com/programmare-web-seguendo-mvc.php#comments</comments>
		<pubDate>Sun, 09 Mar 2008 13:05:54 +0000</pubDate>
		<dc:creator>neryo</dc:creator>
				<category><![CDATA[Applicazioni]]></category>
		<category><![CDATA[Design pattern]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Sviluppo applicazioni]]></category>
		<category><![CDATA[model view controller.]]></category>
		<category><![CDATA[Modello vista controllore]]></category>
		<category><![CDATA[mvc in php]]></category>
		<category><![CDATA[programmazione ad oggetti]]></category>
		<category><![CDATA[programmazione mvc]]></category>
		<category><![CDATA[web MVC]]></category>

		<guid isPermaLink="false">http://www.programmazione-web.com/programmare-web-seguendo-mvc.php</guid>
		<description><![CDATA[MVC stá per Model View Controller in italiano Modello-Vista-Controllore é un design pattern architetturale three tier, originariamente impiegato nel linguaggio smalltalk, (ora portato in tutti i linguaggi ad oggetti), ovvero un metodo su come strutturare le applicazioni in tre parti utilizzando la programmazione ad oggetti.]]></description>
			<content:encoded><![CDATA[<p><strong>Programmare il Web seguendo MVC </strong></p>
<p>Qualcuno di voi appena ha letto l&#8217;acronimo MVC si sará subito posto qualche domanda&#8230; alcuni non l&#8217;avranno nemmeno sentito nominare&#8230; <strong>MVC</strong> stá per <a title="Model View Controller" href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">Model View Controller</a> in italiano <strong>Modello-Vista-Controllore </strong>é un <a title="Design Pattern" href="http://it.wikipedia.org/wiki/Design_pattern" target="_blank">design pattern</a> architetturale <em>three tier</em>, originariamente impiegato nel linguaggio <em>smalltalk</em>, (ora portato in tutti i linguaggi ad oggetti), ovvero un metodo su come strutturare le applicazioni in tre parti utilizzando la programmazione ad oggetti.</p>
<p>Il compito di questa strutturazione é quello di rendere indipendenti, disaccoppiando le parti software tra loro, adibite al controllo, all&#8217;accesso ai dati e alle viste di presentazione degli stessi.<br />
Il pattern é basato quindi sulla separazione dei compiti fra  le classi che interpretano tre ruoli principali:</p>
<ul>
<li>Il <strong>modello</strong> gestisce i dati e fornisce i metodi per accedervi in modo astratto e consistente, solitamente la progettazione del modello è guidata sostanzialmente dalla struttura del database e quindi sostanzialmente dalle modalità di accesso ad esso;</li>
<li>La <strong>vista </strong>si incarica di visualizzare i dati o un porzione di essi, forniti dal controllore attraverso un opportuno modello, in base ad una specifica formattazione rappresentante un certo contesto applicativo, che potrá essere un lista di record, una form per l&#8217;inserimento e la modifica, un grafico, o qualsiasi rappresentazione si vuole dare a questi dati;</li>
<li>Il <strong>controllore</strong> é il &#8220;motore&#8221; dell&#8217;applicazione, riceve i comandi dall&#8217;utente, generalmente attraverso la vista utilizzando i propri metodi e li utilizza per richiamare in modo adeguato gli altri due componenti, permettendo quindi al modello di estrarre i dati, che vengono passati per la visualizzazione alle opportune viste. In pratica il controllere si occupa di rimappare le azioni effettuate dall&#8217;utente alle risposte dell&#8217;applicazione, che lavoreranno sui modelli e le viste in modo adeguato.</li>
</ul>
<p><a title="MVC Modello Vista Controllore" href="http://www.programmazione-web.com/wp-content/uploads/2008/03/ash-mvc-architecture1.gif"></a></p>
<p style="text-align: center"><a title="MVC Modello Vista Controllore" href="http://www.programmazione-web.com/wp-content/uploads/2008/03/ash-mvc-architecture1.gif"><img src="http://www.programmazione-web.com/wp-content/uploads/2008/03/ash-mvc-architecture1.gif" alt="MVC Modello Vista Controllore" /></a></p>
<p style="text-align: center"><a title="MVC Modello Vista Controllore" href="http://www.programmazione-web.com/wp-content/uploads/2008/03/ash-mvc-architecture1.gif"> </a></p>
<p><a title="MVC Modello Vista Controllore" href="http://www.programmazione-web.com/wp-content/uploads/2008/03/ash-mvc-architecture1.gif"></a><strong>Questo approccio ha numerevoli vantaggi:</strong></p>
<ul>
<li>Indipendenza giá citata delle varie componenti, che permette di lavorare separatamente in team (con competenze diverse) alle parti software astraendone al meglio il funzionamento.</li>
<li>Possibilitá  di scrivere viste e controllori diversi utilizzando lo stesso modello di acceso ai dati e quindi riutilizzare parte del lavoro giá fatto.</li>
<li>Avere il controllore separato dal resto dell&#8217;applicazione rende la sua progettazione piú semplice permettendo di concentrare gli sforzi sulla logica del funzionamento.</li>
<li>Obbliga gli sviluppatori a rispettare uno standard nella stesura  del progetto, che ne facilita poi la comprensione e le successive implementazioni, soprattutto utilizzabile in progetti di medie/grandi dimensioni.</li>
<li>Software più flessibile, mantenibile ed aggiornabile nel tempo.</li>
</ul>
<p><strong>Ha anche alcuni svantaggi:</strong></p>
<ul>
<li>Adatto soprattutto a progetti medio/grandi.</li>
<li>Architettura sostanzialmente complessa.</li>
<li>Flessibilitá dipendente dal framework utilizzato.</li>
</ul>
<p>Per iniziare ad addentrarsi in questo metodo, esistono tantissimi <a title="Framework" href="http://it.wikipedia.org/wiki/Framework" target="_blank">framework</a> open-source per utilizzare il pattern di sviluppo MVC, come potete vedere da <a title="MVC Frameworks Written in PHP" href="http://www.phpwact.org/php/mvc_frameworks" target="_blank">questa lista</a>. Alcuni di essi sono piuttosto famosi come <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a>, <a title="Code Igniter Framework" href="http://codeigniter.com/" target="_blank">CodeIgniter</a>, <a title="Kohana Php framework" href="http://kohanaphp.com" target="_blank">Kohana Php</a>, <a title="CakePHP MVC framework" href="http://www.cakephp.org/" target="_blank">CakePhp</a>, <a title="Symfony MVC framework" href="http://www.symfony-project.org/" target="_blank">Symfony</a>, <a title="Php MVC framework" href="http://www.phpmvc.net/" target="_blank">PHPMVC</a> ecc.. e sicuramente alcuni di voi li hanno utilizzati o almeno sentiti nominare.</p>
<p>Il piú é riuscire a capire quale framework MVC sia il piu&#8217; adatto per ridurre e migliorare il nostro lavoro e rendere le nostre applicazoni piú snelle e ben organizzate, facilitandone in futuro il mantenimento e le aggiunte di funzionalitá.</p>
<p>Sicuramente nessuno puó sapere a priori quale sia il migliore per il vostro utilizzo, é una scelta abbastanza soggettiva, a parte che deve ricadere sui framework che supportano PHP5.. Ognuno di noi deve capire le sue necessitá e provarli sulla propria pelle o meglio sui propri progetti e magari poi portare le proprie esperienze su questo blog!</p>
<p> <img src='http://www.programmazione-web.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Riferimenti e spunti:<br />
</strong><a title="Model View Controller" href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">http://it.wikipedia.org/</a><br />
<a title="Introduzione ai framework MVC" href="http://www.phpday.it/site/phpday-2006/talks/developer/ferrante-enriques-introduzione-ai-framework-mvc/" target="_blank">http://www.phpday.it</a></p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.programmazione-web.com%2Fprogrammare-web-seguendo-mvc.php&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://www.programmazione-web.com/programmare-web-seguendo-mvc.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

