dissabte, 23 de gener del 2010

Característiques superficials dels frameworks

Vaig arribar a un punt en què vaig adonar-me que les situacions descrites als posts anteriors no m'ajudaven a fer aplicacions web d'una manera ràpida, còmoda i eficient. Estava clar que devia canviar la manera d'afrontar la creació d'aquest tipus d'aplicacions i vaig decidir buscar frameworks per PHP per investigar una mica el seu funcionament i veure fins on era capaç d'arribar.

Frameworks d'aquest estil per PHP hi ha per donar i vendre, hi ha una gran quantitat i sovint apareixen de nous. Triar-ne uns quants per guiar-me en la construcció del meu fou senzill, vaig buscar el Top 10 i em vaig quedar amb uns quants, en especial aquells tenen una pàgina web completa, amb documentació i fòrums i wikis, ja que probablement això vullga dir que els desenvolupadors treballen constantment en el framework i hi ha una quantitat important de gent que l'usa. Els escollits per estripar van ser CakePHP, Symfony, Madeam, CodeIgniter i Kohana.

A la pàgina principal de cada framework dels seleccionats hi ha una breu descripció del mateix on s'enumeren les principals característiques i les contribucions que al benestar i evolució de la humanitat aporten cadascun d'ells. Aquestes són les característiques superficials, és a dir, les que es poden observar des de fora, les que els creadors dels frameworks usaran per vendre't la moto i amb les que quedaràs bocabadat si no has programat mai. Si fem una llista veurem que moltes d'aquestes són comunes a tots ells i que es poden tindre en compte per construir-ne un. Aquestes són:

  • Són frameworks per a PHP (evident!), però el més interessant és que ho són per a versions superiors a la 5, que és a partir de la qual PHP suporta la programació orientada a objectes. El motiu d'açò és la següent característica.
  • El framework a construir ho estarà fet amb aquest paradigma de programació ja que afavoreix les bones pràctiques com l'ús de patrons de disseny, com per exemple MVC, o tècniques com ORM. A més, estarà construït de manera que espere que el codi escrit pel desenvolupador siga orientat a objectes, per tant, sembla bona idea la característica anterior de restringir als desenvolupadors a que usen la versió 5 o superior de PHP.
  • El framework permet crear i mantindre aplicacions web ràpidament escrivint menys codi que fent-la des de zero. D'aquesta manera es pot aconseguir tindre una versió per al client, o per a nosaltres, més prompte que de la manera tradicional.
  • Arquitectura fàcilment ampliable o arquitectura de plugins: el framework ha d'estar construït de manera que afegir una nova funcionalitat no implique modificar el codi.
  • Convenció sobre configuració. És un aspecte prou important; aquest paradigma de disseny software pretén alliberar al(s) desenvolupador(s) de certes tasques simplement fent ús d'unes regles establertes.
  • Configuració mínima. Els preparatius per poder usar el framework i crear una aplicació així com els fitxers de configuració han de ser pràcticament inexistents.
  • Compatibilitat amb hostings estàndard. El framework deu funcionar sense que el servidor web haja de configurar-se de cap extranya manera i pràcticament a qualsevol dels que es puguen contractar per allotjar una aplicació web.
  • Open Source. Tots aquestos frameworks per PHP (imagine que els demés també) són de codi obert, de manera que aquest està disponible a tothom i estan lliberats baix alguna llicència que permet modificar-lo i adaptar-lo a les necessitats concretes de l'usuari.

A més de les característiques comunes hi ha d'altres que entren en contradicció entre els distints frameworks, com poden ser:

  • Llibreries de tercers. Hi ha algun framework que està construit a base de llibreries de tercers, altres que només en fan ús d'algunes i altres que no les permeten. Jo pense que una bona opció és, per cada nova funcionalitat, crear una interfície i, per cada llibreria (bé de tercers o pròpia) que suporte aquesta nova funcionalitat, crear una classe que implemente aquesta interfície i faça ús de la llibreria en qüestió.
  • Ús de l'intèrpret d'ordres. Hi ha frameworks que no fan cap menció al respecte d'aquesta característica dels sistemes operatius i n'hi ha que explícitament asseguren a l'usuari (al programador que farà ús del framework) que no la van a necessitar potser perquè consideren que usar l'intèrpret d'ordres s'escapa a usuaris d'un cert nivell i usar un framework per crear aplicacions web deuria estar a l'abast de qualsevol (personalment considere que NO deuria ser una ferramenta per a qualsevol). També hi ha altres frameworks que sí fan ús d'aquesta opció recalcant que és una ferramenta poderosa. Particularment considere que és una bona opció per tal d'agilitzar algunes tasques senzilles com pot ser crear una estructura de directoris estàndar on allotjar l'aplicació web.

Al proper post (espere que no siga dins de mig any) descriuré les característiques funcionals (no sé si aquesta paraula és l'adequada però queda be...) que deuria tindre el framework que vull construir.

continuarà...

Cap comentari:

Publica un comentari a l'entrada

Nota: Només un membre d'aquest blog pot publicar entrades.