|
Publicité ' | ||||||||||||||||||||||||
|
|
#101 | |
|
Membre émérite
![]() ![]() Inscription : janvier 2006 Messages : 525 ![]() |
Citation:
![]() J'aime aussi cette approche "vantage" des batches avec extraction traitement et ré-injection. C'est vrai que bourriner comme des malades une BDD pendant toute une nuit alors qu'on peut tranquillement bosser sur du séquentiel indexé est une mode qui malheureusement à mon avis est passé bien trop vite. Avant, pour aller dans le champ du père Matthieu, avant on avait un tracteur et on le faisait en 5 minutes. Maintenant on le fait en Ferrari climatisée en 4 minutes, après avoir investi des millions pour faire une magnifique route 3 voies qui ne sert pas... Et à l'arrivé, ben mince alors, on n'a pas de remorque... Qu'à cela ne tienne, y a qu'à envoyer un camion. Avec une remorque pour ramener la Ferrari... Ah ouais mais du coup il me faut un autre chauffeur... Pfff l'agriculture comment ça coute cher... ![]() ![]() ![]() @ tous les autres : MERCI aussi pour ce moment de nostalgie qui me rappelle "L'école des Fans", là où tout le monde avait 10... Ca fait pas loin de 4 pages que tout le monde est (presque) d'accord pour dire qu'il n'y a pas de bonne ou de mauvaise méthode ni paradigme (j'adore ce mot il fait savant) juste une solution plus ou moins adaptée à une problématique. Encore 10 pages et on arrête ?
__________________
"L'incohérence de ceux qui dirigent et l'incompétence de ceux qui critiquent sont un vibrant hommage à ceux qui exécutent." Général George S. PATTON. Messine 1943. |
|
|
|
01
|
|
|
#102 | |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 692 ![]() |
Citation:
Ensuite les projets, de mon expérience, sont toujours très spécifique en termes de besoin et de métier. Il y a donc peu de place à la "généricité" (ou "abstraction" pour employer le bon terme). Ce qui provoque deux choses : - Il y a peu ou pas d'héritage, et donc autant d'intérêt pour le polymorphisme - Les comportements sont rarement "distribués", contrairement aux données. Ce qui implique une organisation plus fonctionnelle des comportements. D'où les "service layer" et les modèles anémiques. En ce qui concerne les interfaces (GUI, REST) en revanche, on trouve des objets (JSF Bean, Struts Form, Controller) qui correspondent plus au modèle full-OO. Enfin, je pense que personne n'a envie d'engager toute l'équipe dans un débat conceptuelle sur quel objet à la responsabilité de la gestion des stocks des produits d'une commande, sans parler tout ce qui peut graviter autour de la gestion d'une commande : notification, fidélisation, réduction, priorité, etc. On tombe rapidement sur un délestage des responsabilités à coup de patterns : Commande, Stratégie, State machine, etc.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|
|
|
00
|
|
|
#103 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 565 ![]() |
Citation:
|
|
|
|
10
|
|
|
#104 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : mai 2004 Messages : 792 ![]() |
Bonjour
Pour te répondre skip_, je suis également d'accord avec toi En ce qui concerne le lazy loading, aujourd'hui je me demande vraiment si le côté pratique du chargement automatique d'une référence par un framework de mapping O/R comme hibernate vaut la chandelle. En effet, c'est une grosse source de problème de performance. Le lazy loading en lui même, c'est bien. Mais, le fait que le chargement soit "silencieux" (point de vue du développeur) et peut potentiellement provoquer une requête en BDD peut vite plomber les performances. Et, dans, certains cas on ne s'en rendra compte qu'avec une base de données relativement importante. C'est à dire, soit à la mise en production Après, ce genre d'erreur peut également être fait dans les services. Le problème est juste déporté. On a l'illusion que c'est mieux contrôlé mais tu n'es pas à l'abri qu'un collègue ajoute une boucle pour appeler la méthode updateCommande(), par exemple, avec un getXxx malheureux ce qui va lancer 100 000 requêtes alors qu'on aurait pu en avoir une seule Je me demande vraiment si, justement, le rôle du service n'est pas, en premier lieu, de charger le graphe complet (pas plus, pas moins) nécessaire à la bonne réalisation du service. Et, si un objet manque... bah on explose (c'est radical mais, au moins, on s'en rend compte tout de suite). Un peu comme un main qui va instancier les objets et démarrer l'application. Bon, là... je ne donne pas de solutions :p peut être qu'une couche persistance un peu plus intelligente. Ou alors du lazy loading moins, transparent. Comme ça, le développeur sait que cet appel peut potentiellement provoquer une discussion avec la BDD. Je pense que, comme d'habitude, il n'y a pas de réponse universelle. Yann
__________________
duck and cover |
|
|
10
|
|
|
#105 | ||||
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 565 ![]() |
Citation:
C'est une dérive qui veut qu'on doive tout cacher, ou plutôt tout abstraire... Je pense que c'est vraiment une erreur de considérer la BDD comme citoyen de 2e classe, en tout cas à l'heure actuelle. Tout comme les théories qui prônent une séparation claire et nette de la couche BDD et de la couche Service. Si je suis d'accord entre la séparation de l'UI et du service, j'ai beaucoup plus de mal avec la séparation service et persistance. Pour moi, dire qu'une DAO doit être réalisée de façon à ce qu'on puisse changer de source de données sans modification des couches supérieures, c'est de la science fiction. On bosse pas de la même manière si on a un fichier XML, une BDD ou un webservice comme source de donnée. Ce n'est qu'en tenant compte des spécificités du système de stockage qu'on arrive à organiser une application de façon à ce qu'elle soit efficace et performante. Citation:
Pour ma part, j'ai délaissé les ORM à la hibernate pour me recentrer sur les solutions plus SQL, comme mybatis ou Jooq (que je pense à présenter sur DVP un de ces jours). Je reconnais leurs avantages mais je pense que les inconvénients sont trop nombreux pour mon usage. Et chaque fois que j'ai vu des tentatives de mélanger objets mappés et code métier, ça aboutissait à des pertes de cheveux. Citation:
Mais les choses sont plus prévisibles si on évite la surabstraction.Citation:
|
||||
|
|
10
|
|
|
#106 | |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
Citation:
|
|
|
|
10
|
|
|
#107 | |
|
Membre éclairé
![]() Didier ChaumondDirecteur de projet Inscription : octobre 2012 Messages : 111 ![]() |
Citation:
|
|
|
|
10
|
|
|
#108 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 572 ![]() |
![]() Tout à fait, et ça, oui, c'est la base même de "l'Agilité", que je mets entre guillemets car c'est le fond du Manifeste et de ce que voullaient dire ses auteurs (et n'importe qui ayant pratiqué dans des gros projets suffisamment longtemps) Et donc ( C'est une approche générale de la conception des logiciels...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
10
|
|
|
#109 | |
|
Membre éclairé
![]() Didier ChaumondDirecteur de projet Inscription : octobre 2012 Messages : 111 ![]() |
Citation:
|
|
|
|
00
|
|
|
#110 | |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 692 ![]() |
Citation:
Ceci dit le modèle itératif n'est pas la panacée, on se traîne aussi des petits boulets dont on a du mal à se défaire surtout pour les applications déjà en production qu'il faut mettre à jour.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|
|
|
00
|
|
|
#111 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 565 ![]() |
Moi j'adore celui-là dans ton lien rimram31...
Citation:
Respecter les bonnes pratiques à la lettre, l'indépendance de base de données, les belles architectures à 17 couches pleines d'interface et j'en passe... ça n'a du sens au final que si ça nous fait gagner concrètement quelque chose : style réduction des temps de dév ou amélioration de l'expérience utilisateur. Il y a un autre concept typiquement agile qui ca dans le même sens : YAGNI (you ain't gonna need it!). Ce qui en gros encourage le développeur à ne surtout pas se perdre à produire des choses qui ne sont pas vraiment demandées, pas immédiatement nécessaires qui pourraient nuire au délai de livraison au nom d'un hypothétique gain de temps ou de flexibilité dans le futur. Faut s'habituer au début, avec le temps et l'argent illimité on ferait tous des oeuvres d'art, mais on n'a pas souvent cette liberté. |
|
|
|
10
|
|
|
#112 | |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
Citation:
, mais je ne regrette pas du tout cette décision, car la solution collait au problème et surtout, si le projet avait été conçu initialement sous cette angle, la compréhension aurait été d'autant plus facile.Mais bon, quand on part dans la mauvaise direction en prenant l'existant comme "vérité", il faut du temps pour revenir sur la bonne direction. J'ai fait également le constat qu'un framework peut induire en erreur. |
|
|
|
10
|
Copyright © 2000-2013 - www.developpez.com