Nano framework, le framework php uml agile.
Par Jean-Philippe Serafin le mardi, août 19 2008, 15:16 - Lien permanent
Le développement de Nano framework continue, beaucoup de nos projets internes à venir utiliseront cette technologie que nous créons pour réellement correspondre à nos besoins.
Un modèle de classes cohérent et évolutif
Une bonne analyse UML des besoins d'une application conduit à l'élaboration d'un diagramme de classes complexe qui permet de manipuler l'ensemble des données.
Nous avons donc choisi comme certains autres ORM (ex : Doctrine) de générer, à partir du modèle de classes, la couche d'abstraction de données.
Ainsi, nous n'aurons pas à nous soucier du modèle physique de données.
Afin d'assurer une vraie séparation des serveurs applicatifs et des serveurs de données (chacun son métier :)), nous avons choisi de n'utiliser que des procédures stockées pour l'abstraction des données. De ce fait, pas le moindre SQL à traiter côté serveur applicatif.
Cette contrainte limite le nombre de SGBD compatibles, mais laisse tout de même un choix relativements vaste (mySql, PostGres, oracle, sqlServer...). Mais permet de gagner en sécurité (pas de possibilité d'injection), en stabilité (traitement des données indépendant de la duré du cycle php, gestion des rollback de transaction), en évolutivité (il suffira de "clusteriser" le serveur de données pour gagner de la puissance de traitement), et en vitesse (les procédures et fonctions stockées sont en quelques sorte "indexées").
Notre idéal étant en framework simple, léger (d'où le nom Nano), nous avons mis en place la gestion d'autoload de classes et de namespace, ce qui nous permet de ne charger dans un cycle php que les classes concernées par le code. Ainsi notre framework ne se vera être compatible qu'avec php 5.3 + et php 6, la version stable de php 5.3 devant arriver dans les six semaines à venir (en même temps que la première version stable de Nano).
Un MVC simple
Notre modèle de classes sera manipulable par des controleurs qui traiterons les données necessaires aux vues.
Les vues auront un système de cache HTML dont la durée de vie pourra être déterminée par une gestion des évenements (triggers mySQl ou évenements php).
Ex : Imaginons le cas d'une liste de produits, tant que mysql ne renverra pas un événement : "modification de la table produit", le cache html de la liste ne sera pas vidée.
Bien sûr, la définition de ces événements se fera au niveau de la définition du modèle de classe.
eXtrem Programming
Pour tendre vers notre idéal, l'XP, nous avons mis en place un système de tests unitaires permettant de décrire avant chaque cycle de développement de l'application les différents cas d'utilisation. Le tout manipulable via de simples commandes bash.
Avancées actuelles
Nous sommes actuellement en train de finir le développement du modèle de classes et de toute la couche d'abstraction de données. La partie contrôleurs / vues est déjà quasiment fonctionnelle mais va subir quelques refactoring. Nous serons donc dans les temps pour la sortie de la version stable de php 5.3.
Stay tuned!!
Commentaires
J'attends avec impatience la sortie du framework, car ce que j'ai pu voir du code me plait beaucoup
Nous aussi nous attendons avec impatience de pouvoir sortir une version beta du framework.
Seulement nous sommes tributaires de la sortie de php 5.3...
En attendant, tu peux jetter un oeil à l'api : http://api.nano-framework.com/
merci pour ce topic, mais faut que les mentalites change!