ActiveRecord: un modo nuovo di gestire i database

Quando si sviluppa una qualche applicazione che fa uso dei database capita spessissimo di dover scrivere codice che è concettualmente lo stesso per diverse volte, basti pensare alle classiche operazioni di inserimento o di lettura dati , le query sono sempre le stesse, ciò che cambia è generalmente il contenuto.

Per semplificare e od ottimizzare questa situazione può esserci di aiuto il pattern ActiveRecord, in esso la riga di una tabella o di una vista contenuti in un database rappresenta un oggetto, sull’oggetto (dunque sulla riga) sono possibili le classiche operazioni di lettura, scrittura, cancellazione ed aggiornamento del dato. L’applicazione di queste operazioni sono rese possibili da una classe astratta di operazioni base che gestiscono l’accesso al database ereditata da ogni oggetto.

Questo pattern è utilizzato da molti framework ed è ciò che contribuisce a rendere la scrittura del codice mediante gli stessi più veloce, vi invito a guardare gli screencast di RubyOnRails per rendervi conto dell’utilità di questa soluzione.

Pattern MVC: un modo nuovo di sviluppare

Nel mio personalissimo percorso di avvicinamento all’utilizzo dei framework ho incontrato come prima fermata la metodologia di sviluppo MVC, ecco quindi un sunto del mio approfondimento.

MVC è l’acronimo di Model – View – Controller ed indica una metodologia di sviluppo ad oggetti nella realizzazione di software. Questa metodologia di sviluppo è stata introdotta neglòi anni 70 quando allo Xerox PARC fu realizzato il linguaggio di programmazione orientato agli oggetti Smalltalk è però diventato famoso grazie J2EE.

Utilizzando questa metodologia abbiamo un buon livello di separazione tra il codice che si occupa della gestione dei dati, da quello che presenta gli stessi all’utente permettendo inoltre di ridurre la scrittura del codice più utilizzato. Un’applicazione realizzata secondo questo pattern viene così divisa concettualmente in 3 parti: i Model, le View e i Controller:

  • i Model contengono le operazioni che possono essere eseguite sui dati
  • le View sono le GUI da mostrare agli utenti con cui gli stessi interagiscono
  • i Controller trasformano le interazioni tra l’utente che avvengono attraverso le View in operazioni eseguite dai Model

prendo in prestito da wikipedia lo schema:

oggi praticamente tutti i framework utilizzano questo design pattern per lo sviluppo, per utilizzarli bisogna quindi imparare a sviluppare in questo modo.

Ruby on Rails, Django, Symphony,Zend: perchè dovrei fare uso dei framework?

In ambito informatico per framework intendiamo un’insieme di classi e funzioni organizzate in maniera tale da ridurre la scrittura del codice (cercando quindi di riutilizzare il più possibile il codice) sulle quali poter basare il nostro software. La loro funzione è quindi quella di velocizzare lo sviluppo ma anche renderlo meno complesso.

Questo è ciò che in maniera teorica rappresenta un framework, come sempre bisogna valutare i pro e i contro di ogni cosa, io in questo momento ho solo alcune riflessioni da sviluppatore che non ha ancora fatto uso di questi framework e sta valutando se e quale provare; troverete quindi diversi dubbi, domande e quant’altro mi viene in mente.

La prima considerazione che faccio è sui tempi di apprendimento, se uno sviluppatore è abituato a sviluppare con un linguaggio il tempo necessario per l’apprendimento sarà si dipendente dallo sviluppatore ma anche dalla bontà del framework. La cosa più logica da pensare dovrebbe essere quella di utilizzare un framawork basato sul linguaggio che si è soliti usare, così chi conosce il php potrebbe usare Zend o Symphony che sono basati su PHP5 oppure Django basato su Python e tanti altri. In questo modo i tempi di apprendimento dovrebbero ridursi, resta da valutare se il framework mette a disposizione ciò che cerchiamo, altrimenti le strade da intraprendere sarebbero due, arricchire il framework con le proprie librerie (a quel punto non so quanto sia utile utilizzarlo) oppure cambiare linguaggio (quì il tempo di apprendimento potrebbe aumentare parecchio quindi difficilmente lo si fa).

La seconda considerazione riguarda la qualità del prodotto, se progetto e realizzo un sistema da zero ho il controllo su tutto proprio perchè l’ho realizzato io, secondo una mia logica (giusta o sbagliata che sia) seconod il mio modo di sviluppare. A molti sarà capitato nell’utilizzare anche solo una funzione realizzata da terzi di non essere convinti fino in fondo, cè sempre quel filo di diffidenza o magari anche presunzione che ci porta a pensare a quella parte del progeto come al punto debole dell’intero sistema, io personalmente se devo usare del codice non realizzato da me cerco il più possibile di capire le operazioni che fa (non scandalizzatevi e non date per scontato questa cosa se si utilizza il codice degli altri è per ridurre i tempi quindi può anche capitare di non badare tanto al contenuto) e chi è l’autore (la fiducia scaturita dal rapporto professionale ha per me un grosso valore).

L’altra riflessione è sulle prestazioni e la pulizia del sistema; abbiamo detto che i framework sono un insieme di librerie (classi, funzioni ecc) ed il loro utilizzo ci vincola ad installarle tutte sulla macchina che deve ospitare il sistema, questo può essere considerato poco pulito?O comunque coerente perchè se non si utilizza una libreria non la si carica in memoria (o almeno è ciò che ci auguriamo)?

L’ultima cosa che mi domando riguarda i servizi di hosting, se si deve realizzare un sistema raggiungibile in internet, generalmente si compra il servizio di hosting, da una ricerca poco approfondita non ho notato nel listino dei venditori più comuni la possibilità di aggiunta di framework.

Come sempre tempo permettendo proverò ad approfondire ogni riflessione, se ciò che si dice di buono sui framework risulterà vero o quantomeno utilizzabile per i miei scopi avrò in bel incremento della produttività personale.

Riporto di seguito il nome dei framework attualmente più utilizzati per la realizzazione di applicazioni web based:

Questo framework è basato sul linguaggio Ruby(Wikipedia link) modellato sull’architettura di sviluppo MVC

Framework basatosu PHP, recentemente Yahoo ha annunciato di averlo utilizzato per la realizzazione di Yahoo Bookmarks

Basato su PHP 5 è tra i framawork php più utilizzati in assoluto, di recente nell’ultima Zend Conference Google ha rilasciato un nuovo set di API per l’integrazione con i servizi Google Base, Calendar, Blogger e CodeSearch.

Basato su PHP è modellato sull’architettura di sviluppo MVC.

Questo framework è basato su Python ed è modellato sull’architettura di sviluppo MVC.