Differenze tra le versioni di "Framework per applicazioni web"

testo
m (Annullate le modifiche di 37.162.194.77 (discussione), riportata alla versione precedente di Garak)
Etichetta: Rollback
(testo)
Etichette: Modifica visuale Rimozione di avvisi di servizio
{{S|programmazione}}
Un '''framework per applicazioni web''' (''web application framework''), in [[informatica]] e specialmente nella [[programmazione web]], è 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]].
[[File:Pyramid web framework logo on transparent background.png|miniatura|Logo del web framework Pyramid<ref>{{Cita web|url=https://docs.pylonsproject.org/projects/pyramid/en/latest/index.html|titolo=The Pyramid Web Framework — The Pyramid Web Framework v2.0|sito=docs.pylonsproject.org|accesso=2021-08-25}}</ref>]]
 
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.
 
Esempi di framework per applicazioni web sono [[Apache Struts]], [[Spring framework|Spring]], [[Swing (Java)|Swing]], [[Java Server Faces]] ([[Oracle Application Development Framework |Oracle ADF]]), [[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.
 
== Caratteristiche ==
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=":0">{{Cite web|url=http://martinfowler.com/bliki/InversionOfControl.html|title=bliki: InversionOfControl|last=Fowler|first=Martin|website=martinfowler.com|access-date=2016-03-06}}</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">{{Cite web|url=http://martinfowler.com/bliki/InversionOfControl.html|title=bliki: InversionOfControl|last=Fowler|first=Martin|website=martinfowler.com|access-date=2016-03-06}}</ref>.  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>{{Cite web|url=http://www.capitalone.io/blog/successful-framework-philosophies/|title=Capital One Engineering – Philosophies that Shaped Successful Frameworks|last=Xue|first=Qiang|website=www.capitalone.io|access-date=2016-03-06}}</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>{{cite web|last=Thomson|first=Kris|title=Clarification on MVC= Pull and MVC Push|url=https://www.theserverside.com/discussions/thread/22143.html|date=2003-10-29|access-date=2007-07-29}}</ref>.  Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter<ref>{{cite web|url=https://cwiki.apache.org/confluence/display/WW/What+are+the+fundamental+differences+between+Struts+and+JSF|title=What are the fundamental differences between Struts and JSF|publisher=Struts.apache.org|date=2011-02-14|access-date=2013-06-14}}</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>{{cite web|url=http://msdn.microsoft.com/en-us/library/ff647546.aspx|title=Three-tiered distribution|author=Microsoft|access-date=2011-09-19}}</ref><ref>{{cite web|url=http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/integrator/clustering_concepts_10en.pdf|title=clustering_concepts_10en|author=Oracle|access-date=2011-09-19}}</ref><ref>{{cite web|url=http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt|title=Introduction to Web Development|author=Robert R. Perkoski|archive-url=https://web.archive.org/web/20131107052241/http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt|archive-date=2013-11-07}}</ref><ref>{{cite web|url=http://publib.boulder.ibm.com/html/as400/v5r1/ic2933/index.htm?info/rzaii/rzaiithreetier.htm|title=Using Client Access Express in a three tier environment|author=IBM|access-date=2011-09-19}}</ref>.  Il database è normalmente un RDBMS . L'applicazione contiene la logica di business, gira su un server e comunica con il client tramite HTTP<ref>{{cite web|url=http://download.oracle.com/docs/cd/B25221_05/web.1013/b13593/undtldev010.htm|title=Understanding the Three-Tier Architecture|author=Oracle|access-date=2011-09-19}}</ref>.  Il client sulle applicazioni Web è un browser Web che esegue l'HTML generato dal livello dell'applicazione<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/aa905336.aspx|title=Pragmatic Architecture: Layering|author=Microsoft|access-date=2011-09-19}}</ref><ref>{{cite web|url=http://www.arokiait.com/3-tire-web-architechture.htm|title=3-Tier Web Architecture|author=Arokia|access-date=2011-09-19}}</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>{{cite web|url=http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-–-skinny-controllers/|title=ASP.NET MVC Controller Best Practices|access-date=2011-09-19|url-status=dead|archive-url=https://web.archive.org/web/20111011174215/http://www.arrangeactassert.com:80/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/|archive-date=2011-10-11}}</ref><ref>{{cite web|url=http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model|title=Skinny Controller, Fat Model|author=Jamis Buck|archive-url=https://web.archive.org/web/20150516021854/http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/|archive-date=2015-05-16}}</ref>.
 
== Applicazioni quadro ==
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>{{Cite news|url=https://www.wired.com/2010/02/get_started_with_web_frameworks/|title=Getting Started With Web Frameworks|publisher=[[Wired Magazine]]|access-date=2018-04-02|language=en}}</ref>.
 
==Voci correlate==
Utente anonimo