Il Tao dei blog

Meglio dirlo subito (amo la concorrenza)!

“Non aver paura della perfezione. Non la raggiungerai mai.”
— Salvador Dalí

In questo periodo sto dedicando parecchio tempo alla progettazione di un piccolo framework MVC (Model-View-Controller) per lo sviluppo “rapido” di applicazioni per il Web utilizzando PHP 4 (testato anche su PHP 5.1.1). L’intento non è quello di combattere l’egemonia delle librerie per JSP (J2EE) e soprattutto (nel mirabolante mondo RAD e agile) di Ruby on Rails, ma di capire a fondo le problematiche che stanno dietro a queste interessanti applicazioni – e soprattutto i motivi su cui si fonda la loro utilità. Gran parte dei framework più in voga fondano le loro radici su alcune brillanti idee presentate da Martin Fowler in Patterns of Enterprise Application Architecture* e su altri pattern e modelli decisamente interessanti – MVC, ActiveRecord, le varie riletture dell’IoC, ecc.

E’ proprio da queste radici teoriche che sono partito. A dire il vero ho cominciato leggendo il codice sorgente di Ruby on Rails, confrontando le loro scelte implementative con le idee espresse da altri sviluppatori e progettisti nelle (poche) risorse disponibili in Rete. Devo dire che il codice di nextangle e compagni, sebbene io non sia un grande esperto di ruby, è quantomeno piacevole da leggere. La struttura di Rails è soprendente, per riuscire a produrre qualcosa di utile su altre piattaforme basterebbe in effetti limitarsi a un effettuare un tentativo di porting, ma come dicevo prima il mio intento è un altro.

Per il momento ho prodotto una bozza del modello del sistema per far sedimentare le idee e adesso sto lavorando su un piccolo prototipo, limitato soprattutto per ciò che concerne l’interazione con il database (ActiveRecord) e il layer di presentazione (la parte corrispondente all’ActionView di Rails). L’ActiveRecord in effetti è la parte più critica del sistema. La porzione relativa al dispatcher e al controller (ActionController in Rails) è molto più “tranquilla”.

Magari da questa attività verrà fuori qualcosa di utile e interessante.

aggiornamento: ho preparato un semplicissimo esempio utilizzando un pre-prototipo del framework

, , ,

Exit mobile version