Framework per applicazioni web: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: righe vuote in eccesso |
|||
(31 versioni intermedie di 18 utenti non mostrate) | |||
Riga 1:
▲In [[informatica]], nell'ambito della [[programmazione Web]], il '''framework per applicazioni web''' (''web application framework'') è un [[framework|framework software]] progettato per supportare lo sviluppo di [[Sito web|siti web]] [[web dinamico|dinamici]], [[applicazione web|applicazioni web]] e [[Web service|servizi web]].
Lo scopo
Esempi di framework per applicazioni web sono [[Apache Struts]], [[Spring framework|Spring]], [[Swing (Java)|Swing]], [[Java Server Faces]] ([[Oracle Application Development Framework
== Caratteristiche ==
[[File:MiddlewareOnion.svg|alt=Concetto di middleware|miniatura|Concetto di middleware]]
I framework in genere impostano il flusso di controllo di un programma e consentono all'utente del framework di "agganciarsi" a quel flusso esponendo vari eventi<ref name=":02">{{Cita web|url=http://martinfowler.com/bliki/InversionOfControl.html|titolo=bliki: InversionOfControl|cognome=Fowler|nome=Martin|sito=martinfowler.com|accesso=6 marzo 2016}}</ref>. Questo modello di progettazione "inversione del controllo" è considerato un principio che definisce un framework e avvantaggia il codice imponendo un flusso comune per un team che tutti possono personalizzare in modi simili<ref name=":02"/>. Ad esempio, alcuni popolari "microframework" come Sinatra di Ruby (che ha ispirato Express.js) consentono agganciamenti [[middleware]] prima e dopo le richieste [[Hypertext Transfer Protocol|HTTP]]. Queste funzioni middleware possono essere qualsiasi cosa e consentono all'utente di definire la registrazione, l'autenticazione, la gestione delle sessioni e il [[Redirect|reindirizzamento]]<ref>{{Cita web|url=http://www.capitalone.io/blog/successful-framework-philosophies/|titolo=Capital One Engineering – Philosophies that Shaped Successful Frameworks|cognome=Xue|nome=Qiang|accesso=6 marzo 2016|dataarchivio=13 marzo 2016|urlarchivio=https://web.archive.org/web/20160313083028/http://www.capitalone.io/blog/successful-framework-philosophies/|urlmorto=sì}}</ref>.
== Tipi di architetture framework ==
=== Model-view-controller ===
Molti framework seguono il modello architetturale MVC (Model-view-controller) per separare il modello di dati con regole di business dall'interfaccia utente<ref>{{Cita web|url=http://www.dia.uniroma3.it/~pizzonia/swe/slides/12_MVC.pdf|titolo=pdf}}</ref>.
==== Push-based vs. pull-based ====
La maggior parte dei framework MVC segue un'architettura basata su push chiamata anche "basata sull'azione". Questi framework utilizzano azioni che eseguono l'elaborazione richiesta e quindi "trasmettono" i dati al livello di visualizzazione per eseguire il rendering dei risultati<ref>{{cita web|cognome=Thomson|nome=Kris|titolo=Clarification on MVC= Pull and MVC Push|url=https://www.theserverside.com/discussions/thread/22143.html|data=29 ottobre 2003|accesso=29 luglio 2007}}</ref>. [[Django (informatica)|Django]], [[Ruby on Rails]], [[Symfony]], [[Spring Framework|Spring MVC]], [[Laravel]], [[Stripes (framework)|Stripes]], [[Sails.js]], [[CodeIgniter]]<ref>{{cita web|url=https://cwiki.apache.org/confluence/display/WW/What+are+the+fundamental+differences+between+Struts+and+JSF|titolo=What are the fundamental differences between Struts and JSF|editore=Struts.apache.org|data=14 febbraio 2011|accesso=14 giugno 2013}}</ref> sono esempi di questa architettura.
=== Organizzazione a tre livelli ===
Nell'organizzazione a tre livelli, le applicazioni sono strutturate su tre livelli fisici: client, applicazione e database<ref>{{cita web|url=http://msdn.microsoft.com/en-us/library/ff647546.aspx|titolo=Three-tiered distribution|autore=Microsoft|accesso=19 settembre 2011}}</ref><ref>{{cita web|url=http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/integrator/clustering_concepts_10en.pdf|titolo=clustering_concepts_10en|autore=Oracle|accesso=19 settembre 2011}}</ref><ref>{{cita web|url=http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt|titolo=Introduction to Web Development|autore=Robert R. Perkoski|urlarchivio=https://web.archive.org/web/20131107052241/http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt}}</ref><ref>{{cita web|url=http://publib.boulder.ibm.com/html/as400/v5r1/ic2933/index.htm?info/rzaii/rzaiithreetier.htm|titolo=Using Client Access Express in a three tier environment|autore=IBM|accesso=19 settembre 2011}}</ref>. Il database è normalmente un [[Relational database management system|RDBMS]]. L'applicazione contiene la logica di business, gira su un server e comunica con il client tramite HTTP<ref>{{cita web|url=http://download.oracle.com/docs/cd/B25221_05/web.1013/b13593/undtldev010.htm|titolo=Understanding the Three-Tier Architecture|autore=Oracle|accesso=19 settembre 2011}}</ref>. Il client sulle applicazioni Web è un browser Web che esegue l'HTML generato dal livello dell'applicazione<ref>{{cita web|url=http://msdn.microsoft.com/en-us/library/aa905336.aspx|titolo=Pragmatic Architecture: Layering|autore=Microsoft|accesso=19 settembre 2011}}</ref><ref>{{cita web|url=http://www.arokiait.com/3-tire-web-architechture.htm|titolo=3-Tier Web Architecture|autore=Arokia|accesso=19 settembre 2011|dataarchivio=18 luglio 2012|urlarchivio=https://archive.is/20120718123635/http://www.arokiait.com/3-tire-web-architechture.htm|urlmorto=sì}}</ref>. Il termine non deve essere confuso con MVC, dove, a differenza dell'architettura a tre livelli, è considerata una buona pratica mantenere la logica di business lontana dal controller, il "livello intermedio"<ref>{{cita web|url=http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-–-skinny-controllers/|titolo=ASP.NET MVC Controller Best Practices|accesso=19 settembre 2011|urlmorto=sì|urlarchivio=https://web.archive.org/web/20111011174215/http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/|dataarchivio=11 ottobre 2011}}</ref><ref>{{cita web|url=http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model|titolo=Skinny Controller, Fat Model|autore=Jamis Buck|urlarchivio=https://web.archive.org/web/20150516021854/http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/}}</ref>.
== Applicazioni ==
I framework sono costruiti per supportare la costruzione di applicazioni Internet basate su un singolo linguaggio di programmazione, che vanno da strumenti di uso generale come Zend Framework e [[Ruby on Rails]], che aumentano le capacità di un linguaggio specifico, a pacchetti programmabili in linguaggio nativo costruiti intorno un'applicazione utente specifica, come i sistemi di gestione dei contenuti, alcuni strumenti di sviluppo mobile e alcuni strumenti del portale<ref>{{Cita news|url=https://www.wired.com/2010/02/get_started_with_web_frameworks/|titolo=Getting Started With Web Frameworks|editore=[[Wired Magazine]]|accesso=2 aprile 2018|lingua=en}}</ref>.
== Note ==
<references />
==Voci correlate==
* [[Applicazione web]]
* [[Framework]]
== Altri progetti ==
{{interprogetto|preposizione=sul}}
{{Framework per applicazioni web}}
|