Bonjour à tous,

Je vais me lancer dans un projet qui nécéssite beaucoup de réflexions avant la phase de développement.
Le projet en quelques mots :
- Site en php alimenté par des feuilles XML générées par un moteur java à intégrer
- Site multilangage et possibilité de mettre à jour facilement l'interface graphique
- Sécurisation de chaque compte utilisateur et de l'interface
- Réduction de la volumétrie (bande passante) car très grand nombre d'utilisateur

Suite à cela quelques questions se posent et auquels j'ai du mal à me décider et de ce fait j'aurai besoin d'avis

- Faut il partir sur du xhtml1.1 sachant que j'aurai des données XML, et je risque d'utiliser des templates pour l'interface graphique paramétrable?
- Faut il vraiment utilisé des templates? sachant qu'il faudra gérer du multilangage et la mise à jour d'interface par une personne n'ayant aucune connaissance en programmation html,php, ...?
- Comment sécuriser au mieux l'interface de chaque utilisateur?
- L'AJAX est il vraiment compatible avec les templates et le XHTML1.1 et CSS?
- Comment réduire la volumétrie au mieux ?

Je vous remercie d'avance pour vos réponses.
Bonjour et bienvenue à toi sur le Forum,

Tu as raison de te poser toutes ces questions avant ...
Après il sera trop tard. Smiley cligne

Concernant le doctype, je ne pense pas que le xhtml 1.1 soit spécialement adapté.
A ce sujet je te conseillerais la lecture de cet article qui te permettrait de choisir en connaissance de cause : Les DTD HTML4.01 et XHTML1.0 : comment choisir ?

Pour ce qui est de la questions à propos des templates, j'aurais tendance à te répondre oui. Au cours de la mise à jour, le rédacteur ne doit pas toucher aux templates mais simplement au contenu du site. Les tempates sont crés au départ pour récupérer automatiquement les informations epuis ta base de donées ou générées en xml.
De plus, le choix du langage ne devrait pas changer ta disposition du tout au tout, si ?!? Smiley rolleyes

Et enfin, en ce qui concerne la volumétrie des données, mon conseil est simplement de scinder au mieux tes différents éléments pour inclure ceux qui sont récurrents dans les différents templates.

Voilà...
Pour le reste, je t'avouerais que je ne suis pas une spécialiste, je laisserait donc à d'autres le soin de répondre. Smiley cligne
Modifié par Cygnus (19 Jul 2007 - 12:22)
le.troll a écrit :
pour gagner en volume, pourquoi ne pas utiliser YAML ou JSON a la place de XML?


Nous n'utilisons pas YAML ou JSON car il est plus facile pour nous de générer du XML grâce au moteur Java et XML est le format que nous avons adopté depuis le début.
Et un changement de support comme celui ci provoquerait une réécriture du moteur alors que celui ci est en train d'être finalisé.

De plus ce que j'entends par volumétrie surtout ce n'est pas la taille que représentent tous les fichiers sur le serveur mais ,les conséquences et la bande passante en gros, si 10 000 personnes accèdent à un fichier .xml ( ces derniers sont de tous petits fichiers Smiley cligne )
Modifié par Shamanlinks (19 Jul 2007 - 14:46)
Modérateur
Salut, Smiley smile

Shamanlinks a écrit :
- Faut il partir sur du xhtml1.1 sachant que j'aurai des données XML, et je risque d'utiliser des templates pour l'interface graphique paramétrable?
Le fait d'avoir des données XML ne te contraint en rien au XHTML 1.1. Via des feuilles XSLT, tu peux mettre tes données XML en forme... en HTML4.01 si tu le souhaites. Si la personne à qui est destiné le site doit être en mesure de bidouiller le code mais qu'elle n'a pas de grandes connaissances en la matière, mieux vaut t'orienter sur les doctypes transitionnels, parce que plus souples.

a écrit :
- Faut il vraiment utilisé des templates? sachant qu'il faudra gérer du multilangage et la mise à jour d'interface par une personne n'ayant aucune connaissance en programmation html,php, ...?
En passant par XSLT, tu vas forcémment faire des templates. C'est quand même préférable car XML n'est pas forcémment interprété correctement par tous les supports... d'où l'intérêt de se servir encore du (X)HTML. Si tu souhaites rendre l'interface paramétrable par l'utilisateur (novice en programmation), tu y as forcémment recours. Au final, ce dernier ne doit disposer que de boutons pour activer ou désactiver un module.

a écrit :
- Comment sécuriser au mieux l'interface de chaque utilisateur?
En minimisant les accès aux traitements sensibles. (solution serveur plutôt que client, post et get correctement employés, etc... etc...)
Tout dépend par quel langage tu comptes gérer tout ça (Java ? PHP ?) mais si c'est ce dernier, ce site peut déjà te donner quelques astuces :
http://phpsec.org/projects/guide/fr/index.html

a écrit :
- L'AJAX est il vraiment compatible avec les templates et le XHTML1.1 et CSS?
Ajax ne change rien. Le tout, c'est de le mettre en place correctement... en tant que surcouche. Personnellement, ce que je te conseille, c'est de commencer par faire une version texte... sans mise en forme, sans comportement particulier... juste quelquechose de fonctionnel, qui marche sans ajout. De là, tu améliores la mise en page via CSS, puis le comportement via JS et seulement après, tu peux introduire de l'Ajax pour "orienter" l'utilisateur. Dans ce sens, il y a plus de chance que ça marche... Si, en revanche, tu commences par l'Ajax, tu feras comme 95% des sites de ce genre -> résultat inaccessible.

a écrit :
- Comment réduire la volumétrie au mieux ?
En gérant correctement le cache. Lorsqu'une partie n'a pas à être rechargée, le cache doit prendre le dessus. Ajax incite justement à se pencher un peu plus sur ce critère du fait des requêtes multiples.

le.troll a écrit :
pour gagner en volume, pourquoi ne pas utiliser YAML ou JSON a la place de XML?
Il n'y a pas de langage plus adapté. Ca dépend surtout de ce qu'on compte faire avec. Par exemple, si on n'a que du texte à mettre à jour via Ajax, on peut se contenter du format texte. Pourquoi intégrer une structure qui nécessiterait un traitement supplémentaire ? Ca n'a pas de sens. En revanche, lorsqu'il y a un traitement à effectuer, JSON, XML ou autre ont chacun leurs avantages.
Modifié par koala64 (19 Jul 2007 - 15:08)
Merci tout d'abord pour vos lumières Smiley cligne

L'interface web va être réalisé en php car c'est une techno que je connais depuis un bout de temps après avoir développé divers sites pour des "clients" différents et des besoins différents.
Le projet à l'heure actuelle est constitué d'une équipe de 5 : 3 personnes sur le moteur java et 2 sur l'interface web (le premier bossant sur une interface v1 en dotnet que je doits réécrire par cout de licence, ... pour la v2).
Voila pour résumer le projet.

Vu la demande il me faut passer à autre chose par conséquent au "WEB2.0" si on peut dire. Sachant que j'ai déjà de bonnes bases en php, html, css et un peu moins en XML et javascript(chose que j'évitai avant dans la conception de sites). J'ai déja sans trop de difficulté réécris des sites en xhtml1.1 dont je peux dire que je commence à maitriser.
De plus toute mon code php est réalisé en programmation objet.

Donc tout ça pour mieux vous situer mon niveau et mon projet en espérant que cela puisse vous aider dans les réponses à mes divers questions
Modifié par Shamanlinks (19 Jul 2007 - 15:32)
Modérateur
C'est déjà de bonnes bases. Smiley smile

Le mieux que je peux te conseiller concernant la partie Javascript / Ajax est d'éviter tout traitement majeur par le biais de ces technologies. Tout cela n'est qu'optionnel, histoire de rendre les choses plus agréables.

Pour te faciliter la maintenance, mieux vaut déjà placer tous ces codes dans des fichiers externes.

Par exemple, prenons un bouton qui transmettrait les données d'un formulaire, le principe est le suivant :

-> on fait fonctionner tout ça uniquement via PHP. Si des données sont amenées à ne pas être mises à jour, on les mets en cache. Lorsqu'on charge la page, on consulte avant le cache puis on génère ce qui manque.

-> on annule l'action normale au clic sur le bouton (return false, prevent.default, etc...) et on renvoit sur une fonction JS. (par exemple, une vérification des données avant la transmission de celles-ci, ce qui évite une charge supplémentaire du côté serveur). Une fois la vérif' effectuée, on transmets les données. JS agit là comme une tempo et prend le temps de transmettre des données valides. Si ce n'est pas le cas, on renvoie le formulaire en indiquant les erreurs (il n'y a donc pas eu d'échange avec le serveur)

-> Une fois cela en place, on peut vérifier en amont que l'objet XHR est correctement supporté auquel cas, plutôt que de se contenter de transmettre des données nettoyées, on renvoit sur une fonction qui change l'interface (par exemple, substituer une case à cocher par un lien qui comporterait les mêmes valeurs que les cases originales -> les classes CSS sont très pratiques pour cela) Ainsi, tu peux améliorer la mise en forme. (*) De là, tu peux te resservir de la vérification précédemment implémentée en JS simple (voire de celle en PHP en faisant quelques requêtes) puis transmettre les données via Ajax afin de récupérer le retour dans la même page. Lorsque ce retour arrive, tu peux, en embellissant via des effets très "web 2.0" mettre ton interface à jour. (Nota : Il faut aussi penser à conserver l'historique de navigation)

Autrement dit, si XHR est supporté, on dispose d'une application optimale. (belle interface, réactivité, charge réduite, on ne bloque pas le navigateur et si on se débrouille bien, intuitivité supplémentaire)
Si ce n'est pas le cas, on bifurque sur la solution JS (on perd la belle interface mais on conserve la charge réduite)
Si, là encore, on ne dispose pas du langage, le traitement passe par PHP (ça reste fonctionnel et on peut encore gérer le cache)

Le seul point qui pour moi est discutable est la conservation / mise à jour des données dans des fichiers xml. J'ai souvent entendu que cela pouvait poser des problèmes en écriture en cas d'accès concurrents (y compris si on bloque l'accès). Je suis plutôt partisan de conserver les données en BDD et de générer du XML le moment venu.


(*) Je parle là de lien afin de conserver la navigation clavier -> élément focusable recquis. Le tout, c'est, lorsque tu substitues un élément par un autre, de bien conserver les propriétés naturelles du premier afin de ne pas brider l'utilisateur.


a écrit :
J'ai déja sans trop de difficulté réécris des sites en xhtml1.1 dont je peux dire que je commence à maitriser.
A moins d'avoir des besoins bien spécifiques, ça ne sert qu'à une chose, se compliquer la vie. Smiley cligne
Concernant le point il est claire que les fichiers .xml ne seront que pour la consultation de données. Pour la mise à jour de donnée on passe par une BDD mais le problème on ne sait pas encore sur quoi se pencher car il y a un petit dileme : la v1 beta fait en dotnet possède une base SQLserver et on se pose la question si on doit rester la dessus ou partir sur du mySQL. Si quelqu'un a un point de vue sur le choix entre SQLServer ou MySQl ... Smiley biggrin

Sur le fait du xhtml1.1 je me suis juste amusé a réécrire des petits sites perso donc rien de grave je voulais voir ce que ça donné.

A parcourant beaucoup de forum afin de me décider (je ne le suis toujours pas) et par rapport à mes besoins, que me conseilleriez vous?
du xhtml 1.0 strict ou transitionnel ou du html4.01 ou ...html5.0 Smiley lol
Shamanlinks a écrit :
que me conseilleriez vous?
du xhtml 1.0 strict ou transitionnel ou du html4.01 ou ...html5.0 Smiley lol

Si tu es sûr de pouvoir "garder la main" sur l'ensemble et que le projet ne risque pas de passer dans des dizaines de mains peu scrupuleuses, je te pousserais personnellement à travailler en xhtml strict...
Une autre question se pose à moi sur le fait de l'organisation de mes fichiers : voici un exemple d'architecture auquel j'avais pensé :
./ :index,config,...
./includes/ : header,footer , fonctions, class...
./templates/ :
./images/ :
./admin/ :
./languages/ :
./css/ :

Si vous voyez des choses a apporter ou des organisations a un inclure dans certains dossiers je suis à votre écoute.

Merci d'avance.
j'aurais fait pareil, sauf que j'aurais séparé dès la racine les class et le reste des includes.

je pense aussi que si ton appli doit être reprise ensuite, tu as tout interet à faire un nommage sensé des fichiers, comme

class.nom.php
template.nom.php
include.nom.php

mais je suis sur que tu y as deja pensé Smiley ravi

tu utilises un design partern particulier ou non?
Modifié par le.troll (20 Jul 2007 - 11:02)
Je n'utilise pas de design patern particulier.
Je vais avoir avoir des classes comme par exemple : class_sgbd.php ou class_user.php d'ordre générale qui seront appelé dans d'autres fichiers mais plus orienté fonction générale (en gros qui nécéssite pas la mise en place d'une classe)
Et au finale tout cela intervient dans des fichiers header.php, contents.php ...

Est ce que je pars sur une bonne orga car je m'inspire pas mal de l'organisation de phpBB mais vous me direz peut etre que les fichiers sont mal organisé?
cela dépends bcp de ce que tu veux faire (but de l'appli)

personnellement, j'essaye de limiter le plus possible les fichiers "sans classe", et j'essaye de regrouper tout ce qui doit l'etre, par exemple le header et le footer peuvent la plupart du temps être regroupé en un seul fichier template

j'ai tendance à utiliser (mais des fois abusivement) le design pattern frontController, c'est a dire que j'ai un fichier index qui se réduit à trois ligne : include de tout les fichiers nécessaire, création d'une class "core" (le frontcontroller), et ensuite include du template, et basta.

Le core gère donc tout, il appelle la bonne classe pour le contenu, crée et utilise les class user et database, etc.

voila, c'est juste mon (humble) experience
Smiley confused ... si ca peut te servir.

surtout garde en tete que ce qui se concoit bien s'enonce clairement, et se construit SIMPLEMENT surtout...

va au plus simple !
Modifié par le.troll (20 Jul 2007 - 12:01)
Tout d'abord merci pour toutes ces infos.

L'utilisation du MVC ne devient il pas complexe quand à l'utilisation de templates, de fichiers XML, du javascript?
Juste d'un point de vue organisation comment organiseriez vous le MVC dans un dossier (par exemple : un dossier class contenant 3 autres dossiers : model, view, controller)?
L'utilisation d'un MVC n'est il pas en soi une sorte de sécurisation quant à l'accès ou hacking de son site?

Autre question, que me conseillerez vous comme base pour gérer et utiliser mes templates? je comptais utiliser le fichier template.php de chez phpBB.

Je suis peut etre un peu chiant mais je voudrais partir sur de bonnes bases pour le développement de mon application web en récoltant le plus d'infos dans le but de créer une sorte d'analyse avec des critères, des spécificités que je devrais respecter tout au long du développement.
Modifié par Shamanlinks (20 Jul 2007 - 15:35)
Si t'as jamais fait d'architecture de ce genre, le mieux que je peux te conseiller, est de commencer...

Développe un truc qui marchouille. Et ensuite refactorise, refactorise, refactorise. Ne commence pas à essayer de designer une grosse structure orientée objet sur le papier, tu risques fort de designer un truc lourdingue à utiliser, trop figé/trop libre, où il manque des trucs.

Commence par développer des choses simples, qui à faire du copier/coller, à mélanger les couches (accès aux données/présentation). Une fois que ça marche à peu près, regarde les choses qui peuvent être mises en commun, les choses qui peuvent être séparées, etc. Ainsi, petit-à-petit, l'architecture va évoluer pour finir sur un truc solide Smiley smile
Bonjour à tous,
après quelques vacances et un avancement sur le développement de mon projet je re-sollicite votre aide sur un point sur lequel je vais être amené à travailler : les templates.

Beaucoup de moteurs de templates existent et j'ai du mal à me décider sur mon choix qui retient comme critères la fiabilité, la simplicité,...
Je demande donc votre avis sur vos choix d'utilisation de moteurs de templates.

Je rappel que je souhaite mettre en place un système de templates pour faciliter la gestion du multilangage ou le multiinterface.

Merci d'avance