— 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
Model-View-Controller, toy+framework, ActiveRecord, Inversion+of+Control