Programmazione web: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
m rb completo lta
Etichetta: Ripristino manuale
 
(139 versioni intermedie di 67 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 facente uso di linguaggi di scripting elaborati dal [[server]] oppure dal [[client]] quali ad esempio [[PHP]], [[ASP]], [[.NET]], [[JavaScript]], [[Phyton]] che 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.
Per le grandi imprese e le grandi organizzazioni, i team di [[web developer]] si compongono di centinaia di persone. Mentre le organizzazioni più piccole possono necessitare di un [[webmaster]] singolo (spesso con ingaggio a progetto). Lo sviluppo di un sito web può essere uno sforzo collaborativo tra dipartimenti piuttosto che di esclusivo dominio di dipartimenti designati.
 
==La= Programmazione Webweb come industria ===
Sin dallaDalla metà degli [[anni novanta1990]], quella della Programmazioneprogrammazione Web è stata una delle industrie nel mondo che si è sviluppata più velocemente.: Nelnel 1995 c'erano meno di 1.000 compagnie nel settore solo negli USA[[Stati Uniti]], ma dal 2005 erano già oltre 30.000. Ciavendo siavuto aspettaun cheforte sviluppo negli anni 2000 con l'industriaavvento del web[[Web cresca2.0]] die oltrela ildiffusione 20%di nelapplicazioni 2010Web<ref>{{Cita [httpweb|url=https://wwwpillolediweb.articlerwordpress.com/232052011/06/22/Thecose-Webla-Developmentprogrammazione-Industry-Is-Expected-To-Grow-Over-20-By-2010.html].web/|titolo=Cos’è Lala crescitaprogrammazione diweb?|autore=Silvia questa industria è spinta dalla prospettiva del mercatoCariello|sito=Pillole di vendereWeb|data=22 prodottigiugno e2011|accesso=25 serviziottobre ai loro clienti e di automatizzare il flusso di lavoro2021}}</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.
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 è [[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.
 
OggiAumentata glila svilluppatoridomanda, miranoè aaumentata realizzareanche applicazionil'offerta, webfacendo chescendere tradizionalmentei sonoprezzi. disponibiliSono soloinoltre instate ambientesviluppate locale:[[piattaforma invece(informatica)|piattaforme]] dipubbliche fargratuite. girareUn leesempio applicazioniè sullail stazionepacchetto locale[[LAMP]] ([[Linux]], l'utente[[Apache interagisceHTTP conServer|Apache]], le[[MySQL]], [[PHP]]). Gli sviluppatori web mirano a realizzare applicazioni on-lineche 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]] (es. Siti di aste online come [[eBay]] hanno cambiato il modo in cui i consumatori consumano e acquistano beni e servizi). Un altro ottimoAltro 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 decine di persone, mentre le organizzazioni più piccole possono necessitare di un [[webmaster]] singolo<ref>{{Cita web|url=https://www.elisaweb.it/perche-scegliere-un-sito-dinamico/|titolo=Sito Web Dinamico perché sceglierlo? I vantaggi di un sito Wordpress|sito=Siti Internet Torino ElisaWeb|accesso=25 ottobre 2021}}</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]]