Perché ASP.NET non è la scelta migliore per realizzare una applicazione Web?

[Voti: 1027    Media Voto: 2.6/5]

Su internet ci sono centinaia di articoli e di thread nei forum che discutono su qual è il linguaggio migliore per creare applicazioni Web. Sfortunatamente le opinioni riportate sono quasi sempre di carattere promozionale e datate, ovvero analizzano lo stato delle cose com’era parecchi anni fa e non tengono conto delle evoluzioni dei vari linguaggi di programmazione.

In questo articolo vogliamo spiegare perché secondo noi ASP.NET non è il linguaggio migliore da utilizzare per lo sviluppo di un nuovo software Web e per farlo, nel seguito, confronteremo le caratteristiche di ASP.NET con il linguaggio PHP che secondo noi è la scelta migliore. Cercheremo di analizzare i due linguaggi e i due mondi da un punto di vista oggettivo in modo che il lettore possa scegliere la tecnologia che per il suo scopo è più adatta.

Partiamo prima di tutto inquadrando i due linguaggi.

Panoramica PHP

PHP è un linguaggio di programmazione concepito per realizzare pagine web dinamiche. PHP è utilizzato principalmente per realizzare la parte server di applicazioni web. Il linguaggio PHP è nato nel 1994 e la prima versione è stata rilasciata nel 1995, da allora il linguaggio è evoluto fino ad oggi: inizialmente era un linguaggio procedurale, ma nel tempo è diventato un linguaggio multiparadigma aggiungendo ad esempio il supporto alla programmazione ad oggetti.

Di seguito un esempio di codice PHP.


<html>
<head>
<title>Hello World!</title>
</head>
<body>
   <?php for ($i=0; $i < 6; $i++) { ?>
         <font size="<?php echo $i; ?>"> I don't want the world, I just want your half </font> <br>
   <?php } 
   echo "<p><cite>They Might Be Giants - Ana Ng</cite>";
?>
</body>
</html>

Panoramica ASP.NET

ASP.NET è un ambiente anch’esso concepito per realizzare applicazioni web. La prima versione di ASP.NET è stata rilasciata nel 2000 come rimpiazzo della tecnologia di Microsoft ASP, non più supportata a partire da quella data. ASP invece è stato un framework web rilasciato da Microsoft nel 1995 (un anno dopo PHP), secondo alcuni una copia di PHP (come è avvenuto poi per altri linguaggi come ad esempio C# copiato da Java).

Di seguito un esempio di codice ASP.NET (si nota la somiglianza?).


<%@ Page Language="C#"%>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
   <% for (int i=0; i <6; i++) { %>
      <font size="<%=i%>"> I don't want the world, I just want your half </font> <br>
   <% }
   Response.Write("<p><cite>They Might Be Giants - Ana Ng</cite>");
%>
</body>
</html>

Interoperabilità

Il linguaggio PHP è molto versatile e può integrarsi con i sistemi più disparati (sistemi operativi, web server, database server ecc.). Una bella panoramica sulle funzionalità di questo linguaggio è presente al sito Guida Funzioni.

Tra queste è anche presente un sottoinsieme di funzionalità che consentono di integrare il PHP con alcune funzionalità specifiche di Windows.

L’insieme dei principali driver di database supportati invece è presente al link PDO Driver. Da notare che tra questi oltre ai database più noti è possibile anche integrare una web application con il sistema AS400 utilizzando una connessione ODBC.

Diversamente, ASP.NET è vincolato all’ambiente Microsoft e si sposa al meglio solo con le tecnologie proprietarie Microsoft quali SQL Server, IIS, ecc.

Scalabilità

Questo aspetto non dipende dal linguaggio o dall’ambiente di programmazione, ma è legato principalmente alle abilità dei programmatori che sviluppano l’applicazione web. Da un punto di vista tecnologico entrambi i linguaggi permettono di realizzare applicazioni web scalabili. Indubbiamente però il linguaggio PHP è utilizzato in siti internet che nel tempo sono cresciuti a dismisura come Facebook e Wikipedia per fare un esempio.

Prestazioni e Velocità di esecuzione

Le pagine ASP possono essere realizzate con uno qualsiasi dei linguaggi del framework .NET quindi ad esempio Visual Basic o C#. Le pagine PHP invece vengono realizzate con codice PHP. Nel caso del C# viene prodotto un bytecode, ovvero una sorta di codice compilato (ma non nativo), mentre nel caso del PHP il codice è interpretato. Questo fatto farebbe pensare che un’applicazione realizzata in ASP.NET sia più veloce di una realizzata in PHP, ma in realtà ai fini della velocità di un’applicazione web il linguaggio è poco rilevante (le differenze nell’uso di un linguaggio rispetto ad un’altro per questo tipo di applicazioni sono nell’ordine di qualche millisecondo).

Lo scenario tipico di un’applicazione web è quello di interrogare una base di dati e visualizzare i risultati dell’interrogazione sottoforma di html presentato con un certo stile CSS. Un’altro scenario tipico è quello dell’inserimento o della modifica di dati nel database. Ancora, un terzo scenario può essere quello di effettuare l’upload di semplici file sul server o il relativo download.

In tutti questi scenari il ruolo del linguaggio è solo quello di interfaccia o collante tra il database server e il web server, per questo motivo la sua velocità di esecuzione è trascurabile. La velocità di una web application infatti è legata maggiormente ai principali attori del processo, ovvero: il S.O. (nella velocità di accesso ai file), il database server (nella velocità di inserimento, modifica, cancellazione dei dati), il web server (nella velocità di servire le pagine HTML e i file), il browser dell’utente (nella velocità di rendering della pagina HTML e nella velocità dell’esecuzione del codice Javascript) e la banda a disposizione.

Quindi, le prestazioni di una web application sono molto più legate al Database Server che non al linguaggio, infatti colossi come Facebook che indubbiamente hanno bisogno di prestazioni elevate, utilizzano come linguaggio il PHP.

Sicurezza

Come per tutti i prodotti software, nel tempo sono emerse delle vulnerabilità sia per ASP.NET che per PHP. Tra le vulnerabilità passate ad esempio c’è stata la famosa ASP.NET POET Vulnerability e la vulnerabilità del PHP php: Multiple format string flaws in the phar extension.

Le vulnerabilità a livello di linguaggio o di framework sono quelle meno preoccupanti in genere, perché in breve tempo vengono corrette e tipicamente è difficile sfruttarle per sferrare un attacco nella realtà.

Le vulnerabilità che invece vengono più spesso sfruttate sono quelle a livello applicativo. Queste evidentemente sono responsabilità dello sviluppatore dell’applicazione e non della tecnologia usata. In tal senso il progetto OWASP è un buon punto di partenza per approfondire il discorso e per verificare di seguire le best practice per lo sviluppo di applicazioni web sicure. Abbiamo trattato questo argomento nell’articolo Il tuo software è sicuro?.

Costi

Il PHP non ha costi di licenze o costi di aggiornamento. Inoltre non ci sono costi di licenze aggiuntive per altri server di backup o per eseguire la propria applicazione su un cluster di server.

ASP.net e IIS sono gratis se si acquista il sistema operativo Windows, in altri termini il costo della licenza è spostato sul S.O.. Vi è un costo notevole di licenza per Microsoft Windows Server, Microsoft SQL Server e per gli aggiornamenti futuri. Ad esempio, Microsoft Windows Server 2012 R2 Standard costa circa 1500€ e Microsoft SQL Server 2014 Standard Edition costa circa 4000€.

I costi delle licenze Microsoft di cui sopra possono notevolmente aumentare se la web application diventa popolare e vi è la necessità di eseguirla su più server o richiede funzionalità come il bilanciamento del carico o il clustering dei server.

Supporto e Risorse

linguaggio server side più utilizzato

Il PHP è il linguaggio più utilizzato per lo sviluppo di web application, pertanto c’è una comunità di programmatori molto nutrita e di conseguenza il problema che può incontrare un programmatore è probabilmente già stato risolto da qualcun’altro nel mondo. Su internet ad esempio su stackoverflow è possibile inserire delle domande o consultare i problemi comuni già risolti da altri.

Inoltre, la documentazione del PHP è multilingua, ricca di esempi e di utili commenti inseriti in modo spontaneo dai programmatori (Es. documentazione funzione var_export).

La natura open source del PHP perdipiù favorisce i contributi spontanei degli utenti nel migliorare e aggiornare questo linguaggio.

comunità php vs asp.net

Diversamente, ASP.net si basa su un numero di sviluppatori messi a disposizione da Microsoft per fare miglioramenti e aggiornamenti. Inoltre, anche sulle community on-line ci sono meno programmatori disposti ad aiutare.

Velocità nel deploy

Per deploy si intendono le attività volte a rilasciare una nuova versione della propria applicazione web su un webserver.

Per modificare una funzionalità in un file php, basta modificare il file stesso e il gioco è fatto. Ciò è dovuto al fatto che il PHP è un linguaggio interpretato. Di contro invece l’ASP.NET è compilato e di conseguenza non basta modificare un file, ma bisogna ricompilare il codice di tutto l’applicativo per poterlo rilasciare.

Piattaforme supportate

Il PHP è un linguaggio multipiattaforma, questo vuol dire che può essere eseguito su un server Linux così come su un server Windows, può essere utilizzato in un Web Server Open Source come ad esempio Apache oppure essere utilizzato con il web server Microsoft IIS (Internet Information Services).

Inoltre il PHP è in grado di collegarsi a molti database come ad esempio MySQL, SQL Server, PostgreSQL, Oracle, DB2, ecc.

Il framework ASP.NET invece è pensato per i sistemi operativi windows e per il mondo Microsoft in genere: Microsoft SQL Server, Microsoft IIS, ecc.

I siti più popolari che tecnologie usano?

La tabella seguente riporta i linguaggi e le tecnologie utilizzate dai portali web più famosi.

Nota: nel leggere la tabella seguente è facile confondere il linguaggio C con il C#, ma in realtà sono linguaggi completamente diversi. Il framework ASP.NET fa uso del linguaggio C# e non del linguaggio C.

Sito Attivo dal Server Platform Liguaggi
Google.com Novembre 1998 Linux C, Java, C++, PHP & MySQL
Facebook.com Febbraio 2004 Linux PHP, MySQL and C++
YouTube.com Febbraio 2005 Linux C, Java and MySQL
Yahoo.com Agosto 1995 Linux C++, C, Java, PHP & MySQL
MSN.com (di Microsoft) Agosto 1995 Windows ASP.net
Live.com (di Microsoft) Agosto 2008 Windows ASP.net
Wikipedia Gennaio 2001 Linux PHP & MySQL
Amazon.com Ottobre 1995 Linux & Solaris C++, Java, J2EE
WordPress.com Novembre 2005 Linux PHP & MySQL

Conclusione

In definitiva da un punto di vista tecnologico scegliere tra il PHP o il framework ASP.NET non fa una grande differenza, sono entrambi delle tecnologie valide. La differenza c’è invece da un punto di vista strategico e commerciale. Abbracciare il framework ASP.NET vuol dire legarsi all’ambiente Microsoft, alla sua politica e ai suoi costi.

Optare per una scelta tecnologica Open Source come PHP invece permette di interagire senza problemi con le tecnologie Microsoft così come con altre, ma in ogni caso senza mai legarsi in modo irreversibile ad una di esse.

Abbiamo trattato l’argomento di quali sono le tecnologie migliori secondo noi nell’articolo: Quali sono le migliori tecnologie con cui sviluppare software?.

La scelta di big player come Google, Facebook e Yahoo è chiara, qual è la tua?

Garda Informatica

Garda Informatica

Garda Informatica sviluppa software su misura nella forma di Web Application, App Ibride per iOS/Android/Windows Phone, Crawler Web, Gestionali Web o semplici Connettori per l'integrazione tra software di terze parti.
Garda Informatica

Un commento su “Perché ASP.NET non è la scelta migliore per realizzare una applicazione Web?”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Inviando i dati del form accetti le condizioni sulla privacy