Que choisir comme environnement ???

Posté par  . Modéré par Fabien Penso.
Étiquettes :
0
23
déc.
2002
Commercial
Il existe différentes architectures aujoud'hui pour gérer de la logique applicative. Que valent vraiment les .net, j2ee, zope, etc ? Je suis actuellement tiraillé par une question que tout le monde doit se poser un jour ou l'autre. Je travaille sur un produit qui va demander énormément de calcul. J'ai donc décidé de séparer la logique métier sur un serveur, type serveur d'application avec interface web ou un gui. Bref, je dois une archi parmi celles existantes (je pense à .net, j2ee (jboss +tomcat ?), zope). Quel est votre avis sur ces différentes technos ?
J'ai une expérience des ejb 2.0 sur jboss, c'était pas franchement la panacée. J'ai une légère préférance pour zope, mais est-ce bien pertinant pour ce type de projet (Le produit sera très certainement vendu à des grands comptes, il faut qu'il soit sécurisé, disponible et assez souple)


Merci d'avance pour vos conseils !
  • # Re: Que choisir comme environnement ???

    Posté par  (site web personnel) . Évalué à 3.

    mon avis : jboss + jetty + webworks (ou struts) . De façon à avoir une belle archi MVC2 bien propre.
    • [^] # Re: Que choisir comme environnement ???

      Posté par  (site web personnel) . Évalué à 4.

      Si l'application est susceptible d'etre déployée sur différentes plateformes, J2EE me semble un bon choix. Ca permet à ceux qui auraient besoin d'un petit serveur de déployer sur JBoss+Tomcat et à ceux qui au contraire ont besoin de quelquechose de plus robuste de déployer sur Weblogic par exemple.
      • [^] # Re: Que choisir comme environnement ???

        Posté par  . Évalué à 3.

        Zope roule aussi sur la plupart des platformes. (Windows, FreeBSD, Linux, etc)
        Il y a ZEO, si vous manquez de puissance.

        ZEO is a system that allows you to run your site on more than one computer. This is often called clustering and load balancing. By running Zope on multiple computers, you can spread the requests evenly around and add more computers as the number of requests grows. Further, if one computer fails or crashes, other computers can still service requests while you fix the broken one.
        • [^] # Re: Que choisir comme environnement ???

          Posté par  . Évalué à 0.

          Zope fournit un middleware pour répartir les calcules sur plusieurs machines ainsi que les outils pour déployer tes composants ?
        • [^] # Re: Que choisir comme environnement ???

          Posté par  . Évalué à 2.

          Et java est quand meme trèsssssssss lourd. Je pense que Zope est beaucoup plus léger. En revanche, chez les grands comptes, je pense qu'il est plus facile de faire du j2ee que du zope (et python) dont pas grand monde n'a entendu parler.
          • [^] # Re: Que choisir comme environnement ???

            Posté par  (site web personnel) . Évalué à 2.

            Java est plus lourd que Zope, mais si l'application a une certaine taille et nécessite une certaine infrastructure (en terme de composants) il risque d'être plus performant/flexible/adapté que Zope
            • [^] # Re: Que choisir comme environnement ???

              Posté par  . Évalué à 1.

              Ha voila ce que je voulais savoir... En effet, l'application risque d'avoir une certaine taille (plutot grosse).
              De plus, il semble que zope se dirige de plus en plus vers des solutions de gestion de contenu : tous les développement vont dans ce sens, et vont amha mettre completement dans l'ombre le serveur d'application qui va derrière :(
              • [^] # Re: Que choisir comme environnement ???

                Posté par  . Évalué à 1.

                Coocoon est aussi orienté dans ce sens.
                En plus, il permet de gérer finement la publication du contenu avec l'aide de Fop ce qui est utile pour génerer des rapports en PDF ou d'autre format.
  • # Re: Que choisir comme environnement ???

    Posté par  (site web personnel) . Évalué à -1.

    Cocoon roxor \o/
    • [^] # Re: Que choisir comme environnement ???

      Posté par  . Évalué à 1.

      Cocoon un environement ?? je croyais que ct un truc pour faire du rendu XML !?
      En ce qui concerne jboss + jetty + struts, c pas trop compliqué à mettre en oeuvre ?


      Merci en tout cas de vos réponses.
      • [^] # Re: Que choisir comme environnement ???

        Posté par  (site web personnel) . Évalué à 1.

        A ma connaissance, Cocoon n'est pas un environement ....

        Struts n'est pas compliqué, il y a juste un apprentissage du framework (qui est logique et très bien foutu) à faire.

        Pour JBoss, ça fait longtemps que je n'y ai plus regardé, mais bon, dans le pire des cas tu traines un peu sur la mailing-list, rien d'impossible en perspective ;-)

        La seule chose si tu choisis J2EE, fais bien attention de ne pas utiliser d'extensions propriétaires dans ton code pour pouvoir déployment sur n'importe quel serveur
      • [^] # Re: Que choisir comme environnement ???

        Posté par  (site web personnel) . Évalué à 2.

        nop c une servlet (donc en envrionnement J2EE) tournant très bien sur Tomcat en conjonction éventuellement avec Struts (bien que certains concepts interfèrent un peu avec ceux de Cocoon) servant à manipuler du XML (de manière générale) avec comme paradigme de base SoC (Separation of Concern) : séparer présentation, logique, données.
        Lorsqu'on doit développer une appli qui doit dealer avec du XML, Cocoon peut se révéler être une bonne arme.

        Voir la série de 3 articles dont le 3ème est ci-dessous pour un apperçu de "quand utiliser Cocoon" :
        http://www.linuxworld.com/site-stories/2002/1218.cocoon3.html(...)
  • # JAC

    Posté par  (site web personnel) . Évalué à 2.

    <p>Les dernières release JAC (http://jac.aopsys.com/(...)) commencent à être sympa.</p>

    <p>C'est pas encore aussi robuste que JBoss et compagnie, mais nettement plus facile à mettre en oeuvre. Pour faire une petite appli avec interface web ou swing, persistence et un peu de gestion des droits d'accès en moins une heure, y'a pas mieux.</p>

    <p>C'est mon avis et je le partage :-)</p>
  • # Re: Que choisir comme environnement ???

    Posté par  . Évalué à 1.

    Qq points qui n'ont pas encore été soulevé.

    Si ton application croit vite et que vous avez besoins de mettre +
    de personnes sur le projet. Il faut prévoir de trouver à un moment des développeurs compétents dans cette technologie.
    Les développeurs Java sont courant sur le marché.
    alors que les développeurs Zope ne le sont pas.
    Par contre, il faut reconnaitre qu'un architecte J2EE est plus difficile à trouver, et plus chère.

    Sinon, prévoyez-vous de fournir à terme des web services ? Et quel sont la position des mainteneurs de Zope sur ce sujet ?
    • [^] # Re: Que choisir comme environnement ???

      Posté par  . Évalué à 4.

      Le développeurs java sont plus nombreux, en revanche former des développeurs python/zope est beaucoup plus rapide. Surtout pour des developpeurs connaissant déjà java.

      Voir aussi http://twistedmatrix.com(...) pour une solution plus légère que zope et plus orienté application que CMS.
  • # Re: Que choisir comme environnement ???

    Posté par  . Évalué à 2.

    bonjour,

    je suis peut etre hors sujet, mais regarde du côté de goods :
    http://www.garret.ru/~knizhnik/index.html(...)

    ce type de système te permet d'avoir une machine dédiée au calcul, tandis que les autres n'ont qu'une ihm légère, et en prime tu as la persitance.

    L'utilisation de ce système est (presque) transparente pour le programmeur, et donc trés facile à utiliser.

    Sinon si quelqu'un peut m'expliquer le principe des serveurs d'applications, j'ai jamais réussi à comprendre l'idée du système ( et surtout les services qu'il est sensé rendre ). En effet l'architecture semble trés lourde ( en carricaturant ( si j'ai bien compris ) on code une fois le métier sur le serveur ( par ex VoitureServeur), on recode une seconde fois entre le serveur et le client ( par ex VoitureInterface), et une troisième fois sur le client ( par ex VoitureClient). Dans le cas de Java j'avais essayé le sdk de référence de SUN et le moins qu'on puisse dire c'est que j'avais pas trouvé ça trés simple.

    Quels sont les avantages par rapport à une architecture client serveur classique ( style JDO, ou SGBDO, voir même RDBMS ) ??

    merci.
    • [^] # Re: Que choisir comme environnement ???

      Posté par  . Évalué à 2.

      J'ai le même problème d'incompréhension sur ce qu'est un serveur d'applications.
      Il me semblait que c'était plutôt un truc comme VNC, Terminal Server, X déporté, Telnet, voire même les applis web en PHP ou en ASP ; mais tout ça c'est visiblement faux, ou alors ai-je une conception trop "dinosaurienne" de la chose.
      Je pense que le sujet de départ est une bonne incitation a donner la définition actuelle pour "serveur d'application", et tant qu'à faire, pour "framework" aussi...
      • [^] # Re: Que choisir comme environnement ???

        Posté par  . Évalué à 3.

        Un serveur d'application c'est une architecture à plusieurs niveaux. Un peu comme du web dynamique en cgi classique, avec en prime une gestion plus poussée de la persistence, des sessions (sous forme de transactions) et de la communication entre les programmes. Le tout le plus divisé possible pour pouvoir réutiliser chaque partie séparément, bref : objet.

        Le framework, c'est ce qui défini (et implémente parfois) la façon dont tout ça travaille ensemble.

        Pour s'amuser à faire son serveur d'application chez soit :
        http://www.python.org/doc/current/lib/module-SimpleXMLRPCServer.htm(...)
    • [^] # Re: Que choisir comme environnement ???

      Posté par  . Évalué à 2.

      Un serveur d'application est un framwork (cad des API) qui te permet de gérer les choses suivantes en essayant d'être aussi peu intrusif que possible dans ton code :

      - gestion des transactions (transaction sur plusieurs ressources : plusieurs bases de données par exemple)
      - gestion de la persistence (cycle de vie des données, cache des données)
      - API d'accèes au base de données
      - API d'accès au mail
      - API de gestion des droits et utilisateurs (annuaire et ACL)
      - API de communication par message publish/subscribe ou point à point (JMS)
      - API de communication par appel de méthode distant (RMI)
      - standardisation (DTD) de la manière de paramétrer, déployer un composant métier (paramètres de prod != paramètre de tests)
      - API d'authentification

      Bref c'est un vaste ensemble de service techniques que tu peux utiliser en partie ou entièrement
  • # J2EE

    Posté par  . Évalué à 5.

    J'ai eu la chance d'interviewer James Gosling à Paris le 4 décembre dernier. Celui-ci m'a parlé du projet du système médical brésilien qui a mis en place un système "à la carte Vitale français" (mais mieux on dirait :-)))). Ce système est en Java de A à Z (de la carte à puce du patient au gros serveur de la "sécu"). Bref, une énorme architecture J2EE dont la démo (ce sont leurs propres termes) actuelle fait tourner une base de 44 villes et 12 millions de personnes... alors oui J2EE peut être lourd sur une machine personnelle, personne ne le niera, mais ça semble bien marcher sur de gros morceaux :)))

    J'aime également énormément Zope et Python mais je pense que pour une grosse architecture, Java représente un choix plus "sûr" au vu du nombre de développeurs et du support engendré par une telle communauté.
    • [^] # Re: J2EE

      Posté par  . Évalué à 4.

      Dans les banques où je travaille on utilise rarement la même techno pour la partie calcul (C ou ada) et pour le reste du système (Java/rmi ou Java/tomcat ou J2EE ou VB + Tibco RV).

      Pour une partie calcul voici une liste de critères pertinents :
      - performance
      - garbarge collector
      - typage
      - qualité de la gestion des nombres
      - simplicité

      Du coup je te conseille, python car c'est pratiqement le seul langage à réunir toutes ces qualités. N'utilises le C/C++ que si tu connais très bien ce langage.

      Pour le reste de l'application (base de données, IHM) utilises J2EE que si
      - tu as une très grosse machine (bcp de ressource)
      - tu as des gens qui connaissent autour de toi (bcp de technos)
      - tu vas faire beaucoup de lignes de code (rentabiliser machine et apprentissage techno)

      Utilises php si tu vas faire de l'intégration de composants et pas énormément de développement

      Je ne sais pas quand il faut utiliser python pour la partie serveur d'app car je connais pas les framework Zope et TwistedMatrix
      • [^] # Re: J2EE

        Posté par  . Évalué à 1.

        Merci pour toutes ces réponses !


        je pense effectivement que le projet va partir sur j2ee maintenant. Par contre, je regrette l'abscence de commentaires sur .net mais sur linuxfr, je ne m'attendais pas à en avoir bcp de toute facon ;)


        Merci à tous, passez de très bonnes fêtes !

        Gravis

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.