ASP.Net: se lo conosci lo eviti
Intro beats
Prendo spunto dai due messaggi di Jeffrey Zeldman: "Here we go again: .Net and standards" e "Dot net clarification" per dire la mia su ASP.Net, cioè la visione di Microsoft delle pagine web dinamiche.
Più di un anno fa cominciai a studiarmi la nuova piattaforma .Net di Microsoft per lo sviluppo web e non. Gli ingredienti per la creazione di un buon prodotto c'erano tutti:
- C#, un linguaggio di programmazine orientato agli oggetti e, per i più ritardati, VB.Net
- Una libreria di classi imponente (forse troppo imponente, ma questa è materia per un'altra storia).
- VisualStudio.NET, un ambiente di sviluppo molto potente e con molte buone idee.
- ASP.Net, in sostanza un nuovo approccio alla creazione di pagine web, che mirava a eliminare tutte le limitazioni e le inefficienze di ASP (VBScript è un'autentica oscenità).
- Una massiccia campagna di marketing.
Tutto bene quindi? No, per niente.
I dolori del giovane Deelan
Con grande delusione però, scoprii presto che ASP.Net, uno dei punti cardine dell'intero sistema, era l'ennesimo pasticcio di quelli di Redmond.
L'idea di costruire la pagina con dei componenti (dal semplice campo di testo fino al calendario) è sostanzialmente buona, ma ci sono tre scelte di progetto assolutamente sciagurate:
- I componenti che il programmatore utilizza nella pagina generano codice HTML non valido e che si può ricondurre alla vecchia versione 3.2 del linguaggio di markup.
- Il codice HTML prodotto è "adattivo", nel senso che se la pagina viene richiesta da Intenet Explorer il codice avrà determinati tag, se il browser è qualche variante di Mozilla il markup sarà differente.
- Non è previsto nessun supporto per l'ereditarietà grafica delle pagine. Il solo paradigma previsto nativamente da ASP.Net è l'inclusione, cioè ad ogni pagina devono essere esplicitamente aggiunti quei blocchi che la compongono (header, footer, ecc.), mentre sarebbe più naturale aspettarsi che un modello "master" possa essere esteso creando pagine con lo stesso layout ma con contenuti personalizzati.
Il punto 1 impedisce di fatto di passare con esito positivo qualsiasi sistema
di validazione, mentre il punto 2 rende difficile e in alcuni casi impossbile
applicare degli stili via CSS agli elementi creati (l'elemento generato sarà
una tabella o un DIV?). Il punto 3 rende laborioso creare e manutenere
siti dinamici con molte pagine. Quello che sfugge alle menti sopraffine che
hanno progettato ASP.Net è che un autore di pagine web che voglia scrivere codice
valido e pagine accessibili deve poter avere il controllo assoluto sull'(X)HTML
generato.
Come faceva notare Zeldman la soluzione di non utilizzare parte degli strumenti e dei controlli che mette a disposizione ASP.Net rende quest'ultimo più un intralcio che un aiuto. Per la cronaca il sottoscritto ha provato a fare a meno di ASP.Net per la creazione del codice di queste pagine ma ha dovuto sudare le cosidette sette camice per arrivare ad una soluzione parzialmente soddisfacente.
We need a resolution
Appurati i fatti quale potrebbe essere una possibile soluzione da parte di Microsoft?
- Descrivere la pagina utilizzando XML anziché l'attuale fantasiosa variante di XHTML—nemmeno valido visto che alcuni tag sono in maiuscolo! Questo permetterebbe di poter supportare anche la creazione di altri tipi di documenti, come ad esempio feed RSS.
- Rimuovere completamente la generazione di codice in funzione del browser ed attenersi alle specifiche del W3C, fecendo in modo che i controlli restituiscano XHTML 1.0 Strict (questo per pura convenienza, visto che una volta che l'output è XML può essere traformato in qualsiasi formato di destinazione).
- Implementare un sistema di templating degno di questo nome. L'esperienza insegna che è più facile scrivere del codice HTML ad hoc per generare una griglia popolandola da dati pescati da una DataTable piuttosto che tentare di far capire al quel fottuto controllo DataGrid quello che vogliamo ottenere andando a cercare la proprietà XYZ tra le decine disponibili. C'è già qualcosa del genere all'interno di ASP.Net (Repeater?) ma il meccanismo va potenziato.
Personalmente suggerisco agli sviluppatori web in ascolto di guardare altrove e cercare soluzioni alternative, il tempo concesso a Microsoft è scaduto.
Jun 22 2003, 3:06 PM