ASP.NET: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Atarubot (discussione | contributi)
template cita "xxxx"; fix formato data; rinomina/fix nomi parametri; converto template cite xxx -> cita xxx; fix parametro lingua
m rilasciato -> pubblicato
 
(36 versioni intermedie di 27 utenti non mostrate)
Riga 16:
|SoftwareLibero = si
|Lingua =
|SitoWeb = https://www.asp.net/
}}
 
'''ASP.NET''' è un insieme diprogetto [[Tecnologiaopen disource]]<ref>{{Cita web|url=https://dotnet.microsoft.com/en-us/platform/open-source|titolo=.NET is open source on GitHub {{!}} .NET|sito=Microsoft|lingua=en|accesso=4 maggio 2022}}</ref><ref>{{Cita web|url=https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/cose-aspnet/|titolo=Che cos’è ASP.NET?|sito=IONOS Digitalguide|lingua=it|accesso=4 maggio 2022}}</ref> che comprende un insieme di tecnologie di sviluppo]] di [[software]] per il [[web]], commercializzate da [[Microsoft]]. Utilizzando queste tecnologie, gli sviluppatori possono realizzare [[Applicazione web|applicazioni web]] e [[Web service|servizi web]] (''web service'').
 
È stato pubblicato per la prima volta nel gennaio 2002<ref>{{Cita web|url=https://umbraco.com/knowledge-base/aspnet/|titolo=What is ASP.NET? {{!}} The Open Source Web Framework|sito=umbraco.com|lingua=en|accesso=4 maggio 2022}}</ref> con la versione 1.0 del [[.NET Framework]] ed è il successore della tecnologia [[Active Server Pages]] (ASP) di Microsoft. ASP.NET è costruito sul [[Common Language Runtime]] (CLR), permettendo ai programmatori di scrivere codice ASP.NET usando qualsiasi linguaggio .NET supportato. Il framework di estensione ASP.NET [[SOAP]] permette ai componenti ASP.NET di elaborare messaggi SOAP.
 
Il successore di ASP.NET è ASP.NET Core. È una reimplementazione di ASP.NET come [[framework per applicazioni web]] modulare, insieme ad altri framework come [[Entity Framework]]. Il nuovo framework usa il nuovo progetto open-source .NET Compiler Platform (nome in codice "Roslyn") ed è [[multipiattaforma]]. [[ASP.NET MVC Framework|ASP.NET MVC]], ASP.NET Web API, e ASP.NET Web Pages (una piattaforma che usa solo pagine Razor) si sono fusi in un MVC 6 unificato<ref>{{Cita web|url=https://docs.microsoft.com/en-us/aspnet/core/|titolo=ASP.NET documentation|autore=wadepickett|sito=docs.microsoft.com|lingua=en|accesso=4 maggio 2022}}</ref>.
 
== Principi su cui si basa ASP.NET ==
Sebbene il nome ASP.NET derivi da [[Active Server Pages|ASP]] (''Active Server Pages'') (la vecchia tecnologia per lo sviluppo web di [[Microsoft]]), esistono sostanziali differenze fra le due. Infatti ASP.NET si basa, come tutte le applicazioni della famiglia [[Microsoft .NET]], sul [[Common Language Runtime|CLR]] (''Common Language Runtime).''
 
Gli sviluppatori possono scrivere codice utilizzando uno qualsiasi dei linguaggi di alto livello supportati dal [[framework]] (libreria di classi) [[.NET Framework|.NET]], come, ad esempio, [[Visual Basic .Net]] (proprietario Microsoft), [[C sharp|C#]] (pronunciato ''C sharp'', linguaggio soggetto a una specifica di standardizzazione), [[J sharp|J#]] (''J sharp'', derivato da Java), ma anche, molti altri linguaggi [[open source]] (e non), come [[Perl]] e [[Python]],; questo è possibile poiché il [[Common Language Runtime|CLR]] è stato standardizzato presso [[ECMA]]. Le applicazioni ASP.NET sono significativamente più veloci e performanti rispetto a quelle realizzate utilizzando altre tecnologie di [[scripting]], in quanto l'intero codice del sito web è pre-compilato in pochi file [[Dynamic-link library|dll]] (spesso in un unico file) gestiti da un [[server web]].
 
ASP.NET si propone di semplificare la migrazione degli sviluppatori dalle applicazioni [[Windows]] alle applicazioni web mettendoli in grado di generare pagine composte da tanti controlli [[widget (informatica)|widget]], del tutto simili a quelli usati dall'[[interfaccia utente]] di Windows.
 
Un controllo web, come ad esempio un ''pulsante'' o un {{'}}''etichetta'' (label), funzionano in modo molto simile a quello delle loro controparti Windows: il codice ad essi associato può assegnare loro determinate ''proprietà'' ed eseguire azioni in risposta ad [[Programmazione ad eventi|eventi]] ad essi associati (ad esempio alla pressione di un pulsante). La differenza sta nel fatto che, mentre i controlli Windows disegnano se stessi sullo schermo, i controlli web producono blocchi di codice [[HTML]] che vanno ad inserirsi automaticamente nella pagina che deve essere inviata al [[browser]] dell'utente finale.
 
== Paradigma di programmazione di ASP.NET ==
ASP.NET è progettato in modo da incoraggiare lo sviluppatore ad usare in modo sistematico il [[Paradigma di programmazione|paradigma]] dell'[[interfaccia grafica]] (''GUI, per Graphical User Interface'') abbinato alla cosiddetta [[programmazione ad eventi]] (''event-driven''), cioè allo stile di programmazione in cui i vari blocchi di codice vengono eseguiti in risposta a determinati ''eventi'', o azioni, su controlli dotati di rappresentazione grafica sul [[Desktop environment|desktop]].
 
Lo stile convenzionale dei linguaggi per lo sviluppo di applicazioni web si era invece finora basato sulla tecnica dello [[scripting]]. Le classi della libreria Framework . NET si propongono, inoltre, di combinarsi ed interagire con le tecnologie esistenti, come ad esempio [[JavaScript]], in modo da attribuire un carattere di ''persistenza'' ad oggetti software, anche nell'ambito di un ambiente come il web, che è intrinsecamente privo di stato (''stateless server'').
 
La libreria di classi Framework . NET, implementa la struttura del CLR (Common Language Runtime), la cui base è formata da un [[compilatore]] JIT (''[[Just in time (programmazione)|just in time]]''). Ciò significa che il codice intermedio prodotto, chiamato IL (Intermediate Language) ed identico per tutti i linguaggi di alto livello impiegati, viene compilato in [[linguaggio macchina]] al momento della prima esecuzione. Utilizzando diversi compilatori ''just in time'' è possibile riutilizzare lo stesso IL intermedio su [[Microprocessore|processori]] diversi. Questa tecnica viene definita ''Jitting''.
Questo tipo di compilazione è ben diverso da linguaggi come ad esempio [[Java (linguaggio di programmazione)|Java]], nei quali invece tutto il codice gira su una vera e propria [[macchina virtuale]], mentre in .NET al momento dell'esecuzione il programma è effettivamente in linguaggio macchina come tutti gli altri linguaggi.
 
Line 58 ⟶ 61:
 
== Critiche ad ASP.NET ==
ASP e ASP.NET possono girare insieme nella stessa applicazione web. Questo approccio consente agli sviluppatori di migrare da un ambiente all'altro gradualmente invece che tutto in una volta. Con [[Internet Information Services|IIS]] 6.0 e versioni precedenti, le pagine scritte usando versioni precedenti del framework ASP non possono condividere la stessa sessione senza l'uso di librerie di terze parti. Questa limitazione non esiste per applicazioni ASP.NET e ASP che girano insieme sotto [[Internet Information Services|IIS]] 7. In alcuni casi durante il runtime ASP.NET ricicla il processo attivo, provocando l'occupazione di più del 60% della memoria disponibile. Si può configurare in modo che il riciclo avvenga solo dopo un certo numero di richieste, dopo un certo tempo, ecc. Tuttavia così facendo l'utilizzatore può perdere lo stato della sessione corrente. Se l'applicazione usa lo stato della sessione per caricare le informazioni di autenticazione (cattiva pratica poiché l'autenticazione basata sui cookie e membership è un'opzione disponibile già integrata nel framework) e se l'applicazione è configurata per usare sessioni in-process, l'utente può essere disconnesso se il processo viene riciclato.https://mobikul.com/erp-app-development/
 
== Esempio di codice ==
Segue il codice sorgente che genera il classico messaggio minimo:<syntaxhighlight lang="asp" line="1">
<%@ Page Language="C#" %>
<nowiki>
<HTML>
<%@ Page Language="C#" %>
</HEAD>
<TITLE> Esempio di pagina ASPX </TITLE>
<HTML>
</HEAD>
<TITLEBODY>
<DIV STYLE="TEXT-ALIGN:CENTER">
Esempio di pagina ASPX
<%
</TITLE>
int mciclo;
</HEAD>
String mstringa = "";
<BODY>
for (mciclo = 1; mciclo <= 10; mciclo++) {
<DIV STYLE="TEXT-ALIGN:CENTER">
mstringa = mstringa + String.Format("<SPAN STYLE='FONT-SIZE: {0}PX'> Hello world in ASP.NET </SPAN><br />", mciclo);
<%
}
 
Message.InnerHtml = mstringa;
int mciclo;
%>
String mstringa = "";
<SPAN id = "Message" runat="server"/>
for (mciclo = 1; mciclo <= 10; mciclo++)
</DIV>
{
</BODY>
mstringa = mstringa + String.Format("<SPAN STYLE='FONT-SIZE: {0}PX'> Hello world in ASP.NET </SPAN><br />", mciclo);
</HTML>
}
</syntaxhighlight>I nomi dei file ASP.NET hanno estensione ''.aspx''. La direttiva ''Page'' consente di specificare il linguaggio utilizzato (nell'esempio C#), e numerosi altri attributi che consentono di descrivere le proprietà e l'aspetto della pagina. Ogni pagina aspx può contenere una sola direttiva ''Page''. Notare che le righe di codice di esempio che seguono la direttiva ''Page'' sono normale codice HTML.
Message.InnerHtml = mstringa;
%>
<SPAN id = "Message" runat="server"/>
</DIV>
</BODY>
</HTML>
</nowiki>
 
I nomi dei file ASP.NET hanno estensione ''.aspx''. La direttiva ''Page'' consente di specificare il linguaggio utilizzato (nell'esempio C#), e numerosi altri attributi che consentono di descrivere le proprietà e l'aspetto della pagina. Ogni pagina aspx può contenere una sola direttiva ''Page''. Notare che le righe di codice di esempio che seguono la direttiva ''Page'' sono normale codice HTML.
 
Vengono dichiarate 2 variabili: l'intero ''mciclo'' e la stringa denominata ''mstringa'', e viene definito un ciclo ''for'' per visualizzare il messaggio con caratteri di dimensione crescente da 1 e 10. La variabile ''mstringa'' memorizza il codice HTML da visualizzare. Al termine del ciclo viene settata la proprietà ''InnerHtml'' dell'oggetto ''Message''.
 
Il tag <code><nowiki><SPAN></nowiki></code> è dotato dell'attributo ''<code>runat</code>'' che indica che l'elemento deve essere eseguito ''lato Server'', come avviene tipicamente nelle applicazioni sviluppate in ASP.NET.
 
== Strumenti di sviluppo ==
Line 138 ⟶ 133:
ASP.NET supporta una serie di modelli di programmazione per la creazione di applicazioni Web<ref>{{Cita web|titolo=Choose between ASP.NET and ASP.NET Core|url=https://docs.microsoft.com/en-us/aspnet/core/choose-aspnet-framework?view=aspnetcore-2.1|sito=docs.microsoft.com|lingua=en}}</ref>:
 
* ASP.NET Web Form : un framework per la creazione di pagine modulari da componenti, con eventi dell'interfaccia utente elaborati lato server.
* ASP.NET MVC : consente di creare pagine Web utilizzando il modello di progettazione model &nbsp;– view &nbsp;– controller .
* ASP.NET Web Pages: sintassi leggera per l'aggiunta di codice dinamico e accesso ai dati direttamente all'interno del markup HTML<ref>{{Cita web|titolo=ASP.NET Web Pages (Razor) FAQ|url=https://docs.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/aspnet-web-pages-razor-faq#Whats_the_difference_between_ASP.NET_Web_Pages,_ASP.NET_Web_Forms,_and_ASP.NET_MVC|sito=docs.microsoft.com|lingua=en}}</ref>.
* ASP.NET Web API: framework per la creazione di API Web su .NET Framework<ref>{{Cita web|titolo=Get Started with ASP.NET Web API 2 (C#)|url=https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api|sito=docs.microsoft.com|lingua=en}}</ref>.
* Webhook ASP.NET : implementa il modello webhook per la sottoscrizione e la pubblicazione di eventi tramite HTTP.
* SignalR - Un framework di comunicazione in tempo reale per la comunicazione bidirezionale tra client e server.
 
Altre estensioni ASP.NET includono:
 
* ASP.NET Handler: componenti che implementano l'interfaccia <code>System.Web.IHttpHandler</code>. A differenza delle pagine ASP.NET, non hanno file di markup HTML, eventi e altro supporto. Tutto quello che hanno è un file di codice (scritto in qualsiasi linguaggio compatibile con .NET ) che scrive alcuni dati nella risposta HTTP del server. I gestori HTTP sono simili alle estensioni ISAPI.
* ASP.NET AJAX - Un'estensione con componenti sia lato client che lato server per la scrittura di pagine ASP.NET che incorporano funzionalità Ajax.
* ASP.NET Dynamic Data : un'estensione di [[Scaffolding (informatica)|scaffolding]] per creare applicazioni Web basate sui dati.
 
== Pipeline integrata IIS ==
In IIS 6.0 e versioni precedenti, le pagine scritte utilizzando versioni diverse del framework ASP non possono condividere lo stato della sessione senza l'utilizzo di librerie di terze parti. Ciò non si applica alle applicazioni ASP.NET e ASP in esecuzione fianco a fianco su IIS 7. Con IIS 7.0, i moduli possono essere eseguiti in una pipeline integrata che consente l'esecuzione di moduli scritti in qualsiasi linguaggio per qualsiasi richiesta<ref>{{Cita web|url=http://learn.iis.net/page.aspx/244/how-to-take-advantage-of-the-iis7-integrated-pipeline|titolo=How to Take Advantage of the IIS 7.0 Integrated Pipeline|opera=iis.net}}</ref>.
 
== Versioni ==
Line 215 ⟶ 210:
 
== Confronto con PHP ==
PHP è diretto concorrente di ASP.NET. La scelta dei due linguaggi ha pro e contro a seconda delle proprie esigenze<ref>{{Cita web|url=https://appinventivwww.arkasoftwares.com/blog/php-vs-asp-net/|titolo=PHP vs ASP.NET: Top Differences for Beginners’ Understanding|sito=AppinventivArka Softwares|data=2813 settembreottobre 20182023|lingua=en|accesso=307 gennaiomarzo 20212024}}</ref><ref>{{Cita web|url=https://www.pixelcrayons.com/blog/php-vs-asp-net-how-to-choose-the-right-one/|titolo=ASP.Net vs PHP: Which is Better?|autore=Varun Bhagat|sito=PixelCrayons|data=8 ottobre 2019|lingua=en|accesso=30 gennaio 2021}}</ref><ref>{{Cita web|url=https://theonetechnologies.com/blog/post/net-framework-vs-net-core-a-complete-quick-comparison|titolo=.NET Framework Vs .NET Core: A Complete Quick Comparison|autore=Kiranbeladiya|sito=TheOneTechnologies |data=24 settembre 2021|lingua=en|accesso=24 giugno 2022}}</ref>:
{| class="wikitable"
| colspan="2" |'''PRO'''
Line 231 ⟶ 226:
|-
|Ci sono più gruppi di supporto online per aiutare ad accelerare il processo di apprendimento rispetto ad ASP.NET
|Informa gli sviluppatori se hanno commesso errori nella codifica prima della compilazione
|La gestione degli errori PHP è considerata scarsa rispetto ad ASP.NET, quindi può richiedere più tempo per scoprire un problema
|Comunità di supporto più piccola
|-
|Più facile da imparare e comprendere rispetto ad ASP.NET
|Viene fornito con molti strumenti e funzionalità per supportare i programmatori.
|Consente la personalizzazione che causa bug e codifica scadente rispetto ad ASP.NET
|Funziona solo su un server Microsoft
|-
Line 245 ⟶ 240:
|Più costoso a causa della licenza [[Microsoft]]
|}
== Note ==
<references />
 
== Voci correlate ==
* [[Microsoft .NET]]
* [[Visual Basic .NetNET]]
* [[C sharp|C#]]
* [[Microsoft Visual Studio.NET]]
* [[Framework .NET Framework]]
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [{{cita testo|url=http://aspnet.html.it/ |titolo=aspnet.HTML.it]}} Guide, articoli di approfondimento, script, FAQ e forum dedicati alla tecnologia Microsoft per il Web
* {{cita web|url=http://www.aspitalia.com/|titolo=ASPItalia.com: storica community su ASP e ASP.NET, dal 1998}}
* {{cita web|url=http://www.webmasterpoint.org/funzione/8/controlliserver_ASPNET/index.html|titolo=Controlli Server ASP.NET}}
* {{cita web|url=http://www.ugidotnet.org/|titolo=UGIdotNET: User Group italiano su .NET}}
* {{cita web|1url=https://msdn.microsoft.com/vstudio/express/vwd/|2titolo=Visual Web Developer Express Edition 2005|lingua=en|accesso=25 aprile 2019|urlarchivio=https://web.archive.org/web/20070718060837/http://msdn.microsoft.com/vstudio/express/vwd/|dataarchivio=18 luglio 2007|urlmorto=sì}}
* {{cita web|url=http://www.dotnetspace.com/|titolo=DotNetSpace articoli su ASP.NET 2.0|lingua=en}}
* {{Cita testo|lingua=en}} [|url=http://en.csharp-online.net/ |titolo=C# Online.NET] {{Webarchive|urlurlarchivio=https://web.archive.org/web/20181119030119/http://en.csharp-online.net/ |date=19 novembre 2018 }} - C# e .NET enciclopedia.
* {{cita web|url=http://www.aspdev.org/asp.net/|titolo=articoli su ASP.NET|lingua=en}}
* {{cita web|url=http://www.developerfusion.co.uk/aspnet/|titolo=Developer Fusion; tutorial e codice sorgente ASP.NET|lingua=en|accesso=3 giugno 2005|urlarchivio=https://web.archive.org/web/20060303180938/http://www.developerfusion.co.uk/aspnet/|urlmorto=sì}}
* {{cita web|sito=[[W3Schools|w3schools.com]]|url=https://www.w3schools.com/aspnet/|titolo=W3Schools tutorial|lingua=en}}
* {{cita web|url=https://www.mono-project.com/|titolo=Mono: implementazione open source del Framework .NET compatibile con molte piattaforme|lingua=en}}
* {{cita web|url=http://www.aspalliance.com|titolo=ASPAlliance: Tutorial ASP e ASP.NET|lingua=en}}
* {{cita web|1url=http://www.visualbuilder.com/aspnet/tutorial/|2titolo=VisualBuilder: Tutorial ASP.NET|lingua=en|accesso=12 ottobre 2007|urlarchivio=https://web.archive.org/web/20071012155209/http://visualbuilder.com/aspnet/tutorial/|dataarchivio=12 ottobre 2007|urlmorto=sì}}
 
{{Framework per applicazioni web}}