Programmazione web: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m rb completo lta
Etichetta: Ripristino manuale
 
(131 versioni intermedie di 65 utenti non mostrate)
Riga 1:
[[File:Client-server-model.svg|thumb|upright=1.4|Architettura [[client-server]] su cui gira un'[[applicazione web]] o un [[sito web]]]]
Con il termine '''Programmazione Web''' si intendono tutte le attività, le tecniche e i rispettivi [[linguaggio di scripting|linguaggi di scripting]], che consentono la realizzazione e lo sviluppo di [[applicazione|applicazioni]] per il [[Web]] come ad esempio il [[web design]] per la realizzazione di [[sito web|siti web]], [[Content Management System|CMS]] per [[blog]], [[forum]] e [[social network]], applicazioni o portali per l'[[e-commerce]], lo [[scripting]] [[lato client|client-side]] e [[server-side]], la configurazione dei [[web server]].
Con la locuzione '''programmazione web''' si indicano le attività e le tecniche di [[programmazione (informatica)|programmazione]], con i rispettivi [[linguaggio di scripting|linguaggi di scripting]], che consentono la realizzazione e lo sviluppo di [[applicazione web|applicazioni per il Web]]. La programmazione web si articola in tre tipologie
* a) il [[web design|design]] e [[web developer|developing]] per la realizzazione di [[sito web|siti web]], [[Content Management System|CMS]] per [[blog]], [[forum (Internet)|forum]] e [[rete sociale|reti sociali]], applicazioni o [[portale web|portali]] per l'[[e-commerce]];
* b) lo [[scripting]] [[lato client]] e [[lato server]];
* c) la configurazione dei [[server web]].
 
==Descrizione==
In generale sono possibili due diversi modi di concepire le applicazioni web e che danno vita ai cosiddetti [[Web statico]] e [[Web dinamico]]. Il primo approccio è quello originario del Web e consiste nella stesura di documenti formattati in codice [[HTML]] e modificabili solo dai programmatori nello stesso codice, il secondo, che è tipico della programmazione web, rappresenta invece l'evoluzione attuale delle applicazioni Web al crescere della complessità e dei contenuti da amministrare in funzione anche delle richieste dell'utente e facente uso di linguaggi di scripting elaborati dal [[server]] oppure dal [[client]] quali ad esempio [[PHP]], [[ASP]], [[.NET]], [[JavaScript]], [[Python]]. Questi codici una volta elaborati restituiscono codici in HTML all'utente che ne fa richiesta tramite il web [[browser]] che a sua volta lo utilizzerà per visualizzare la pagina dell'applicazione sul terminale dell'utente.
{{vedi anche|Applicazione web}}
[[File:Client-server_model.svg|thumb|upright=1.4|Schema di funzionamento client-server]]
[[File:Overview_of_a_three-tier_application_vectorVersion.svg|thumb|upright=1.4|Schema applicazione web [[architettura three-tier|three-tier]]]]
[[File:Web_form_campione.png|thumb|upright=1.4|[[Interfaccia utente|Interfaccia web]] di un'applicazione web ([[form]])]]
La programmazione web è dipendente dagli obiettivi dell'applicazione sviluppata ed è strettamente legata alla scelta tra [[Web statico]] e [[Web dinamico]]<ref>{{Cita web|url=https://www.geeksforgeeks.org/static-vs-dynamic-website/|titolo=Static vs Dynamic Website|sito=GeeksforGeeks|data=10 giugno 2019|lingua=en|accesso=25 ottobre 2021}}</ref><ref>{{Cita web|url=https://smallbusiness.chron.com/difference-between-dynamic-static-pages-69951.html|titolo=The Difference Between Dynamic & Static Web Pages {{!}} Chron.com|sito=web.archive.org|data=20 marzo 2019|accesso=25 ottobre 2021|dataarchivio=20 marzo 2019|urlarchivio=https://web.archive.org/web/20190320233700/https://smallbusiness.chron.com/difference-between-dynamic-static-pages-69951.html|urlmorto=sì}}</ref>.
* Il primo approccio è quello originario del Web e consiste nella stesura di documenti [[linguaggio di markup|formattati]] direttamente in codice [[HTML]] e caratterizzati da una bassa interazione con l'utente.
* Il secondo, rappresenta invece l'evoluzione delle applicazioni Web con l'inserimento di processi di automazione ed una maggiore [[interattività]] con l'utente (vedi anche [[Web 2.0]]).
 
Il web dinamico fa sovente uso di [[database]] e di [[linguaggio di scripting|linguaggi di scripting]] elaborati dal [[server]] oppure dal [[client]] quali ad esempio [[PHP]], [[Active Server Pages|ASP]], [[.NET]], [[JavaScript]], [[Python]]: questi codici una volta elaborati restituiscono codice in [[HTML]] al [[web browser]] dell'utente.
==La Programmazione Web come industria==
Sin dalla metà degli anni novanta, quella della Programmazione Web è stata una delle industrie nel mondo che si è sviluppata più velocemente. Nel 1995 c'erano meno di 1.000 compagnie nel settore solo negli USA, ma dal 2005 erano già oltre 30.000. Ci si aspetta che l'industria del web cresca di oltre il 20% nel 2010 [http://www.articler.com/23205/The-Web-Development-Industry-Is-Expected-To-Grow-Over-20-By-2010.html]. La crescita di questa industria è spinta dalla prospettiva del mercato di vendere prodotti e servizi ai loro clienti e di automatizzare il flusso di lavoro. Il settore della programmazione web è quindi un settore florido e in continuo sviluppo.
 
==La= Programmazione Webweb come industria ===
In più il costo per la creazione dei siti web e dell'[[hosting]] sono precipitati drasticamente negli ultimi 5 anni. Per i primi siti web si pagavano decine di migliaia di euro, oggi invece ciascuno può sviluppare un semplice sito web per meno di 1000 euro in base alla complessità e ai contenuti dello stesso. Piccole compagnie di sviluppo web possono offrire pacchetti accessibili a una moltitudine di piccole società e clienti privati che, con un investimento relativamente basso, possono accrescere esponenzialmente il loro giro d'affari. In aggiunta esistono applicazioni e piattaforme pubbliche assolutamente gratuite. Un esempio popolare è il pacchetto [[LAMP (piattaforma)|LAMP]] ([[Linux]], [[Apache HTTP Server|Apache]], [[MySQL]], [[PHP]]) che normalmente sono distribuiti gratuitamente. Il fatto di essere liberamente distribuiti, da solo, ha fortemente contribuito alla crescita di popolarità del web. Un altro elemento che ha contribuito è stata la facilità di utilizzo dei software specifici per lo sviluppo web, come [[Dreamweaver|Adobe Dreamweaver]] o [[Microsoft Expression| Microsoft Expression Studio]] (precedentemente [[Microsoft Frontpage]]). Con l'uso di questi software, teoricamente tutti possono sviluppare una pagina web in pochi minuti. La conoscenza di Hyper-Text Markup Language ([[HTML]]), o altri linguaggi di programmazione non è richiesta, ma raccomandata per risultati professionali.
Dalla metà degli [[anni 1990]], quella della programmazione Web è stata una delle industrie nel mondo che si è sviluppata più velocemente: nel 1995 c'erano meno di 1.000 compagnie nel settore solo negli [[Stati Uniti]], ma dal 2005 erano già oltre 30.000 avendo avuto un forte sviluppo negli anni 2000 con l'avvento del [[Web 2.0]] e la diffusione di applicazioni Web<ref>{{Cita web|url=https://pillolediweb.wordpress.com/2011/06/22/cose-la-programmazione-web/|titolo=Cos’è la programmazione web?|autore=Silvia Cariello|sito=Pillole di Web|data=22 giugno 2011|accesso=25 ottobre 2021}}</ref>.
 
La crescita di questa industria è spinta dalla prospettiva del mercato di vendere prodotti e servizi ai loro clienti al fine di automatizzare il flusso di lavoro; il settore della programmazione web è quindi generalmente un settore florido e in continuo sviluppo.
Oggi gli svilluppatori mirano a realizzare applicazioni web che tradizionalmente sono disponibili solo in ambiente locale: invece di far girare le applicazioni sulla stazione locale, l'utente interagisce con le applicazioni on-line. Questo ha permesso la nascita di nuovi metodi di comunicazione, la decentralizzazione dell'informazione e la distribuzione dei contenuti in rete.
 
Aumentata la domanda, è aumentata anche l'offerta, facendo scendere i prezzi. Sono inoltre state sviluppate [[piattaforma (informatica)|piattaforme]] pubbliche gratuite. Un esempio è il pacchetto [[LAMP]] ([[Linux]], [[Apache HTTP Server|Apache]], [[MySQL]], [[PHP]]). Gli sviluppatori web mirano a realizzare applicazioni che tradizionalmente erano disponibili solo in ambiente locale. Questo ha permesso la nascita di nuovi metodi di comunicazione, la decentralizzazione dell'informazione e la distribuzione dei contenuti in rete<ref>{{Cita web|url=https://whatis.techtarget.com/definition/LAMP-Linux-Apache-MySQL-PHP|titolo=What is LAMP (Linux, Apache, MySQL, PHP)? - Definition from WhatIs.com|sito=WhatIs.com|lingua=en|accesso=25 ottobre 2021}}</ref>.
Esempio della drastica trasformazione che la programmazione web ha portato nelle comunicazioni e nel commercio è l'[[e-commerce]]. Siti di aste online come [[eBay]] hanno cambiato il modo in cui i consumatori consumano e acquistano beni e servizi. Un altro ottimo esempio di come lo sviluppo del software destinato al web abbia apportato nette trasformazioni nel modo di comunicare sono i [[blog]].
 
Esempio della trasformazione che la programmazione web ha portato nelle comunicazioni e nel commercio è l'[[e-commerce]] (es. [[eBay]]). Altro esempio di come lo sviluppo del software destinato al web abbia apportato nette trasformazioni nel modo di comunicare sono i [[blog]]. Per le grandi imprese e le grandi organizzazioni, i team di [[web developer]] si compongono anche di centinaiadecine di persone., Mentrementre le organizzazioni più piccole possono necessitare di un [[webmaster]] singolo<ref>{{Cita (spessoweb|url=https://www.elisaweb.it/perche-scegliere-un-sito-dinamico/|titolo=Sito conWeb ingaggioDinamico aperché progetto).sceglierlo? LoI sviluppovantaggi di un sito web puòWordpress|sito=Siti essereInternet unoTorino sforzo collaborativo tra dipartimenti piuttosto che di esclusivo dominio diElisaWeb|accesso=25 dipartimentiottobre designati2021}}</ref>.
 
== Suddivisione di Basebase ==
{{vedi anche|Framework per applicazioni web}}
La Programmazione Web può essere suddivisa in più aree e una tipica gerarchia di base potrebbe essere la seguente;
A livello teorico la programmazione web può suddividersi in programmazione web [[lato client]] e programmazione web [[lato server]] a seconda che ci si occupi dello sviluppo del [[front-end]] o del [[back-end]] dell'applicazione web. Spesso allo sviluppatore capita di doversi occupare di entrambe le parti. Applicazioni web abbastanza semplici possono essere costruite anche totalmente con logica lato client (ad es. interamente in [[JavaScript]]). La parte data-layer, ovvero creazione del database con relative tabelle e manutenzione, è spesso opera di un [[sistemista|database Administrator]] (DBA)<ref>{{Cita web|url=https://vitolavecchia.altervista.org/caratteristiche-e-differenza-tra-programmazione-lato-client-e-lato-server/|titolo=Caratteristiche e differenza tra programmazione lato client e lato server|sito=Informatica e Ingegneria Online|data=20 gennaio 2020|accesso=25 ottobre 2021}}</ref>.
 
===Programmazione Client Side<ref>{{Cita web|url=https://qastack.it/software/171203/what-are-the-differences-between-server-side-and-client-side-programming|titolo=Quali sono le differenze tra la programmazione lato server e lato client?|sito=qastack.it|accesso=25 ottobre 2021}}</ref>===
===Programmazione Client Side===
[[File:Javascript_icon.svg|thumb|Esempio di prototipo di funzione [[JavaScript]]]]
* [[AJAX]] Fornisce nuovi metodi per l'utilizzo di JavascriptJavaScript, linguaggi lato server ([[ASP.NET|ASP.Net]] o PHP) e altri linguaggi al fine di migliorare l'esperienza dell'utente.
* [[Flash Player|Adobe Flash Player]] onnipresente piattaforma client-side, ma oramai obsoleta.
* [[JavascriptJavaScript]] Formalmente chiamato ECMAScript, JavascriptJavaScript è un utile strumento client-side (anchessoanch'esso praticamente onnipresente).
 
===Programmazione Server Side<ref>{{Cita web|url=http://wpage.unina.it/rcanonic/didattica/at/lucidi_2009/AT_2009_L06_CGI.pdf|titolo=wpage.unina.it}}</ref>===
[[File:Java_Logo.svg|thumb|upright=0.7|[[Logo]] [[linguaggio Java|Java]]]]
[[File:PHP-logo.svg|thumb|Logo [[PHP]]]]
* [[Active Server Pages|ASP]] (di proprietà Microsoft)
* [[ColdFusion]] (di proprietà Adobe)
* [[Common Gateway Interface|CGI]] e/o [[Perl]] ([[open source]])
* [[Piattaforma Java|Java]], [[J2EEJava EE]] o [[WebObjects]]
* [[PHP]] (open source)
* [[Python]] (open source)
Riga 33 ⟶ 48:
 
===Database===
[[File:Sql_server_logo.png|thumb|Logo [[Microsoft SQL Server]]]]
* [[DB2]] (di proprietà IBM)
* [[FirebirdOracle Database|Oracle]]
* [[IBM DB2]]
* [[Microsoft SQL Server]]
* [[MySQL]]
* [[OracleFirebird SQL]]
* [[PostgreSQL]]
* [[SQLite]]
* [[MongoDB]]
 
==Considerazioni sulla Sicurezza==
Con il diffondersi delle piattaforme web, è aumentata la richiesta di [[sicurezza informatica|sicurezza]] nella trasmissione e archiviazione [[dati]]. Gli sviluppatori web devono perciò tener conto di diverse considerazioni, come lail ricerca di errori all'internofiltraggio dei [[form]],dati ilin filtraggio dell'outputuscita e la [[cifratura]]. Pratiche malevole come l'[[SQL injection]] o l'utilizzo di scripts realizzati allo scopo, possono permettere a chi ne fa uso di aver accesso ad indirizzi [[email]], [[password]] e contenuti protetti come i numeri di [[carta di credito|carte di credito]]<ref>{{Cita web|url=https://technet.microsoft.com/en-us/library/ms161953%28v=SQL.105%29.aspx|titolo=technet.microsoft.com}}</ref>.
 
Tenere un web server al sicuro dalle intrusioni è dunque di fondamentale importanza. Molte tecnologie entrano in gioco quandoSovente si trasmettono informazioni via web. Molti sviluppatori spesso fannofa uso di diversi metodi di cifratura quando si devono trasmettere o salvare informazioni delicate. AdPer esempio l'ausilio di protocolli crittografici quali [[TSLTransport Layer Security|TLS]], o il suo predecessore [[TSLTransport Layer Security|SSL]], permettono una comunicazione sicura e l'[[integrità dei dati]] su reti [[TCP/IP]], aiutando a prevenire eventuali [[Frode informatica|frodi informatiche]]. Una conoscenza di base della sicurezza informatica fa spesso parte delle conoscenze dello sviluppatore web<ref>{{Cita web|url=https://www.cisl-bergamo.it/2021/07/20/truffe-informatiche-sempre-piu-diffuse/|titolo=Truffe informatiche sempre più diffuse e sofisticate. Ecco come difendersi|sito=Cisl Bergamo|data=20 luglio 2021|accesso=25 ottobre 2021}}</ref>.
 
Siccome ialcuni buchiproblemi nelladi sicurezza di applicazioni web vengono trovatiidentificati solo dopo la fasepubblicazione didelle testing e quella di lancioapplicazioni, gli aggiornamenti sulla sicurezza sono di importanza cruciale. È spesso compito dello sviluppatore web tenere le applicazioni aggiornate con [[patch (informatica)|patch]] sulla sicurezza<ref>{{Cita web|url=https://developer.mozilla.org/en-US/docs/Web/Security|titolo=Web security {{!}} MDN|sito=developer.mozilla.org|lingua=en|accesso=25 ottobre 2021}}</ref>.
 
==Timeline==
[[ImageFile:Web development timeline.png|800px]]
 
== Note ==
 
<references />
 
== Voci correlate ==
* [[webWeb developer]]
* [[webWeb design]]
* [[webmasterWebmaster]]
* [[Framework per applicazioni web]]
 
{{Portale|internet}}
==Sitografia==
http://en.wikipedia.org/wiki/Web_development (inglese)
 
[[Categoria:Applicazioni web]]