AJAX con XML, HTML o JSON?

by Michele

A questa domanda non c’è un unica risposta, per molto tempo ho pensato che si dovesse usare un linguaggio neutrale come XML ma con il tempo sto cominciando ad apprezzare la filosofia pragmatica dei rubiniani ;-)

Non sempre avere posizioni ideali aiuta o migliora lo sviluppo. Ho constatato personalmente che utilizzare XML come linguaggio neutrale, può risultare pesante lato client, se la mole di dati è notevole. In JavaScript non si possono gestire grandissime quantità di dati perché si abbassano le prestazioni dei browser in maniera progressiva.

Se pensiamo per un attimo a dove utilizziamo le chiamate remote AJAX ci renderemo conto che esistono solo due grandi tipi di chiamate remote:

  1. Quelle in cui si dovranno stampare a video informazioni grezze così come ci vengono fornite dal server
  2. Quelle dove i dati devono essere ulteriormente filtrati/elaborati/adattati e poi stampati a video

Per il primo tipo la soluzione migliore è passare HTML grezzo e utilizzare la funzionalità di innerHTML all’interno di un elemento contenitore come un <div>. Questo comporta un lavoro minimo per gestire la chiamata e buone prestazioni perché si elimina tutto il codice JavaScript che deve parsare l’XML.

Per il secondo tipo ci sono due soluzioni, la prima è XML e la seconda è JSON e quest’ultima è strettamente legata al concetto di browser Web perché i dati viaggiano in un formato che è sostanzialmente del codice JavaScript. I dati che vengono forniti in formato XML sono utilizzabili anche da altre parti che non necessariamente hanno in se un motore JavaScript come un browser. In sostanza, con XML si definiscono delle interfacce, come fanno i web services, che possono essere utilizzati da chiunque capisca HTTP e XML.

JSON è il più pratico e leggero, XML risulta in effetti la strada meno semplice da percorrere anche se in determinati casi può avere i suoi vantaggi. JSON risulta essere anche più leggero nel senso del traffico di rete creato dalle risposte. In una risposta XML una buona percentuale dei byte passati è composto dai tag di markup. Si tratta di un dato trascurabile ma non del tutto se ci si trova di fronte a grandi carichi.

In definitiva sono convinto che il formato da utilizzare non debba essere legato a qualche filosofia dettata da qualche santone di qualche sperduto villaggio indiano ma dal buon senso :-) Per cui valutate bene tutti i pro e i contro perché se passate ore a creare un parser XML per stampare dei semplici dati a video, probabilmente state andando nella direzione sbagliata!

P.S. Il finale ha qualcosa di autobiografico :-)