|
Dernière réponse | ||
---|---|---|
Sujet : Réaliser un logiciel | ||
MagicBuzz |
|
Aperçu |
---|
Vue Rapide de la discussion |
---|
MagicBuzz |
|
veryfree |
|
gizmo |
|
Mara's dad |
|
Harkonnen | Euh, essayez de tous vous calmer un peu, et de rester courtois hein :heink:
|
MagicBuzz |
|
MagicBuzz |
|
Hermes le Messager |
|
the real moins moins |
ben oui pour moi non plus !!
|
MagicBuzz | :heink:
on doit pas avoir la même notion du client/server alors... pour moi un applicatif web n'entre pas dans la famille du client/server, même si ça s'en rapproche. |
the real moins moins | et il prouve une fois de plus qu'il ne sait pas de quoi il parle [:thesphax]
(client/server <--> jsp) |
MagicBuzz | Non, c'est pas vrai, pour les X raisons que je me suis égosillé à dire depuis hier.
PHP n'est vraiment pas l'outils adapté pour faire ça. Une voiture de rallye, ça va très vite et ça tiens très bien la route. Seulement, si tu la met sur un circuit de F1, bah tu vas faire des temps de merde, parceque c'est pas prévu pour. Très franchement, on a rigoureusement le même problème ici. PHP impliquera d'importantes limitations dans les fonctionnalités. Et si on cherche à réduire ces limitations en faisant une implémentation plus complexe, on va perdre tout l'intérêt de rapidité de développement. Je suis profondément convaincu qu'une version client/server, pourquoi pas en Java (comme ça, ça permet de gérer la GUI en JSP sans surcoût notable de développement) est largement plus adaptée. Et pour que je dise ça, faut vraiment que je sois convaincu que c'est une meilleure solution... Parceque autant j'aime pas PHP, autant le mot java me donne des hauts le coeur (t'ain j'ai une poussée de bouton là :o) |
zion |
|
Cherrytree | Tout à fait d'accord. Il faut revenir à du factuel. |
MagicBuzz |
|
MagicBuzz | oui, mais c'est valable que lorsque tu peux gérer en session.
mais si tu veux afficher une preview, bah t'as l'air malin avec la page d'affichage qui va chercher dans la bdd, et toi qui a tes valeurs en session... ça te demande de tout exploser ton code, ou alors de le dupliquer (et à ce moment laisse tomber pour la TMA ou les évolutions) sinon, le truc que tu indiques est en effet possible, mais il faut aussi penser à gérer les contrôles de contrainte. imagine, dans une table j'ai une société avec personne dedans. je commence un client. dans ma transaction, je l'affecte à cette société. si une personne tente de deleter la société avant que je commit, il va se prendre un lock dans la tronche. donc moi je vais pouvoir continuer tranquillement ma transaction. si on gère pas ça en session, la société disparaît. quand j'insère la donnée, la clé externe ne peut plus être respectée, et je plante. si j'ai pas prévu de rattrapper le coup en permettant d'avoir en session un client pendant que je re-crée une société, j'ai perdu tout ce que j'ai fait sur ce client. je pense que c'est assez facile de cerner l'importance des travaux nécessaires pour émuler convenablement une transaction. c'est en ça que c'est pas gérable. rien que pour émuler ce système de transaction, tu vas y passer 2 mois, sans compter qu'ensuite, sur chaque page, le code sera complexifié à mort, donc in-maintenanble. après, tu peux toujours décider de faire ça comme un cochon, et te disant "bon, ça c'est un cas qui n'arrivera jamais, donc je le traîte pas". c'est en effet la solution de raccourci qui est choisie la plupart du temps, et c'est pas vraiment condamnable (c'est dégueulasse, mais son amélioration ne justifie pas la charge supplémentaire). Seulement, quand on est dans la phase de spec comme ici, le boulot de l'analyste, c'est d'étudier les différents outils possible, afin d'avoir le moins à ce dire "bon, ça je peux pas le gérer, mais tant pis c'est pas grave de toute façon ça sert à rien". en utilisant les outils convenables non seulement ça te permet de faire exactement ce que tu veux, mais en plus, de façon plus simple. C'est comme décider d'utiliser MySQL pour ce type de projet. C'est possible. Seulement, sans triggers et PS, ou selon la version, sans carrément de relations entre les tables, tu augmentes considérablement la charge de boulot pour émuler ces fonctions manquantes, pourtant vitales à ce type de logiciel. Et il y a un fort risque d'oubli de contrôle dans un coin, qui va mettre en périle tout le système. |
zion |
|
drasche | Un client a fait un truc pas mal pour suppléer à cette carence et garder les applications web stateless: une DB dédiée au stockage d'objets sérialisés, accessible via une petite API toute simple, on sauve tout dedans jusqu'au moment où on est contents et on fait la transaction d'un coup à la fin. Bon maintenant pour gérer leur DB, j'imagine qu'ils ont un batch pour effacer ce qui part en timeout :D
Mais pour un truc léger, les sessions suffisent amplement pour gérer les données de page en page (le timeout de la session faisant le reste). Ah mais c'est ce que Mara's Dad vient d'expliquer je crois :D |
MagicBuzz |
|
Mara's dad |
|
drasche |
|
zion | http://www.onlamp.com/pub/a/php/20 [...] falls.html
désolé j'ai pas résisté à poster l'article :ange: |
Cherrytree |
|
Mara's dad |
|
MagicBuzz |
|
MagicBuzz |
|
Mara's dad | On est d'accord, commencer une transaction dans une page et continuer éventuellement plus tard dans une autre est trop aléatoire pour avoir un comportement correcte et sûr. Donc l'avantage d'ASP n'en est pas vraiement un... :D Pas taper, hein, de toute façon j'aime pas les transactions... J'aime pas demander à un DB de faire 10 insert 3 updates et 5 delete pour ensuite lui dire, heu, ben en fait non, c'est pas ce que je voulais.... Je dis pas que çà sert à rien, je dis juste que moi personnelement, çà me met mal à l'aise.
J'ai pas d'exemple de code içi sous la main. Mais le principe est simple. Disons que par exemple on va gérer une commande de matériel (un panier virtuel). Ben on a un objet Panier avec toutes les propriétés qui vont bien comme par exemple une collection d'objets Item qui sont les choses commandées. Pour enregistrer le panier en session, il suffit de sérialiser l'objet Panier. Toutes ses propriétés seront automatiquement sérialisées recursivement. Enfin, quand la commande est validé, il suffit d'appeler la méthose qui va bien pour créer la commande en une seule fois. Bon, c'est un exemple à la con, dans la pratique je l'ai utilisé pour gérer des engagements qui sont un peu plus compliqués à décrire. Si tu tiend absoluement à avoir un bout de code, je peux t'en pondre un...:D |
Cherrytree |
|
MagicBuzz |
|
Mara's dad | Yo, çà fight hard dans le coin !
MagicBuzz, je suis assez intrigué par ton histoire de transaction sur plusieurs pages. Si tu conserve la connexion en session, çà veux dire qu'il te faut autant de connexions que d'utilisateurs potentiel non ? Ce n'est donc envisageable que pour un intranet, et donc il n'est pas idiot d'imaginer que chaque utilisateur ait son propre identifiant de connexion. Autre chose : Pour info, il est tout a fait possible de conserver de objets en session. Il suffit de les sérialiser. J'ai justement utilisé cette technique pour gérer des transactions. Mais pas au niveau de la base. Les écrans se succèdent, faisant évoluer l'état des objets manipulés. A la fin, soit on laisse tomber, soit réalise les modifs à faire en une seule transaction BD. A+ |
MagicBuzz | je laisse tomber cette conversation stérile.
continuez comme ça, vous irez loin. j'espère juste qu'à votre taff vous êtes moins butés |
gizmo |
|
MagicBuzz | et un dernier truc.
si un développeur sait pas faire, que ce soit en réalité possible ou non, ça revient au même, il ne le fera pas. hors vu que vous êtes incapable de me prouver que j'ai tord, c'est que vous savez pas faire. hors si vous savez pas faire, dites-moi comment vous allez faire ? avec un appli compilée, ça se fait tout seul, parceque c'est fait pour. les connections sont forcément persistantes, tu peux gérer des files d'attente avec une simplicité enfantine, tu peux rigoureusement faire 100% de ce dont l'appli à besoin de façon très simple. je vois pas d'où vient cet entêtement à vouloir le faire en PHP alors que c'est pas adapté. |
MagicBuzz |
|
H4dd3R | Vous devriez créer un sondage pour clarifier cette situation.. ;) |
drasche |
|
MagicBuzz |
|
drasche |
|
gizmo |
|