In uno dei post precedenti accennavo al fatto che il giudizio sui domain model — e di conseguenza sugli ORM — tiene conto di criteri di ordine diverso: ci sono ragioni teoriche — di principio, direi — e ragioni pratiche.
Per quanto riguarda le ragioni teoriche credo di essermi già dilungato abbastanza, mentre sulle ragioni pratiche abbiamo cominciato a parlarne in relazione al caching. Oggi vorrei discuterne un’altra di tipo pratico.
Uno dei modi di analizzare la struttura di un’applicazione è quella di ragionare per livelli. Prendendo spunto da Fowler, abbiamo: un livello di presentazione, uno di sorgente dei dati e uno con la cosiddetta domain logic. Grosso modo, possiamo dire che il primo livello corrisponde al browser, il secondo all’application server, il terzo al database.
Sorvoliamo su molti dettagli (ad es. se considerare il JavaScript che gira nel browser o la stored procedure nel database come facenti parte della domain logic o meno ecc.) e concentriamoci su quello che potremmo chiamare il tasso di mutazione nei vari livelli.
Sul lato del browser abbiamo la combinazione HTML+CSS+JavaScript da tempo immemore. Da qualche anno, con AJAX, la porzione di JavaScript è cresciuta a dismisura ed è cambiato il modo di considerare JavaScript come linguaggio; l’HTML è passato attraverso varie revisioni e ramificazioni. Tuttavia, possiamo dire che nel complesso è cambiato relativamente poco.
All’estremo opposto abbiamo uno scenario simile. L’SQL, con i suoi limiti, le sue imperfezioni e i suoi diversi dialetti è certamente un qualcosa in continua evoluzione, ma senza scossoni e in un quadro concettuale molto stabile. Altrettanto stabili sono le installazioni: una volta messo in piedi, è difficile che si passi ad un altro sistema.
Se guardiamo al livello intermedio troviamo invece una situazione completamente diversa. Abbiamo a disposizione tutti i linguaggi possibili, con tutti gli approcci possibili (ho perso il conto dei framework web in Java), che mutano a velocità sostenuta.
Non solo. L’avvento di AJAX ha spostato il baricentro verso il browser, sottraendo funzioni al livello intermedio, sino ad arrivare ad architetture come CouchDB, in cui questo livello non c’è proprio più.
E quindi mi sono fatto la domanda inevitabile: perché investirci ancora risorse? Ha ancora senso?