Framework per applicazioni web: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di Deviganti (discussione), riportata alla versione precedente di Botcrux
Etichetta: Rollback
 
(4 versioni intermedie di 4 utenti non mostrate)
Riga 3:
Lo scopo è quello di alleggerire il lavoro associato allo sviluppo delle attività più comuni di un'applicazione web da parte dello [[programmatore|sviluppatore]]. Uno dei principi fondamentali è riassunto dall'acronimo DRY ([[don't repeat yourself]]), nel senso che viene fortemente consigliata l'adozione di tecniche di [[riuso di codice]]. Molti framework forniscono ad esempio delle [[Libreria (software)|librerie]] per l'accesso alle [[basi di dati]], per la creazione di [[template]] [[HTML]] o per gestire la [[sessione]] dell'utente<ref name=":1">{{Cita web|url=https://www.nephila.digital/it/blog/2014/10/03/web-framework-definizione/|titolo=Cos'è un web framework|autore=Laura Bartoli|data=3 ottobre 2014|lingua=it|accesso=25 agosto 2021}}</ref>.
 
Esempi di framework per applicazioni web sono [[Apache Struts]], [[Spring framework|Spring]], [[Swing (Java)|Swing]], [[Java Server Faces]] ([[Oracle Application Development Framework|Oracle ADF]]), [[Django (informatica)|Django]], [[Flask (informatica)|Flask]], [[Symfony]], [[Phalcon]], [[CodeIgniter]], [[Angular]], [[ReactJS]], [[Laravel]]. In grandi organizzazioni come [[banca|banche]] o grandi [[azienda|aziende]] si utilizzano spesso framework proprietari, varianti dei framework in tecnologie note, per aumentare il livello di sicurezza<ref name=":1" />.
 
== Caratteristiche ==
Riga 10:
 
== 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.todayis/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 ==
Riga 30:
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
{{Framework per applicazioni web}}