IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Concevoir un serveur Java performant pour RIA Flash


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Points : 67
    Points
    67
    Par défaut Concevoir un serveur Java performant pour RIA Flash
    Bonjour,

    Je me lance dans un dev assez important et je commence par bien me renseigner avant de commencer. Je voulais vous faire partager l'état actuel de mes recherches et avoir votre avis. C'est mon premier projet java mais pas mon premier projet client/serveur et POO.

    Le client web sera en FLASH et je m'oriente vers un serveur JAVA. Il y aura aussi d'autres interactions avec des services en JAVA.

    L'objet de ce thread est de déterminer la technologie la plus optimisée pour gérer beaucoup de messages, beaucoup de clients et parfois des messages contenant du binaire (100ko-500ko environ). La simplicité de développement est importante (sinon ça ne serait pas dans le thread JAVA) mais la performance passe avant tout.

    Les plateformes existantes pour la communication JAVA-FLASH :
    • BlazeDS, GraniteDS > Passent par des conteneur de Servlet. Supportent mal les montées en charge (pas de NIO)
    • WebORB, LiveCycle Data Server > Super mais hors de prix (10k€/an)
    • Red5 > Il a l'air performant, à vérifier. Par contre il n'y a pas d'outils pour faciliter le dev, vérifier le fonctionnement du serveur...
    • SmartFox > Concu pour les jeux vidéos mais vraiment intéressant (750€/ serveur une fois)


    Il est aussi possible de créer l'application serveur en se basant sur un framework comme Netty qui a l'air pas mal.

    Dans ce cas il faut choisir protocole pour les données envoyées (serialisation/deserialisation).

    Les protocoles de messages :
    • AMF > format de flash le parsing se fait en code natif sur le client et donc c'est bien performant, les messages sont compressés (7bits) mais cette compression peut avoir un impact négatif sur les blobs
    • SWX > format natif des variables en flash (copie binaire de l'objet en ram) c'est ce qu'il y a de plus rapide coté client mais c'est pas le plus light en bande passante
    • Hessian > n'a aucun gros avantages, mais aucun gros inconvéniants
    • Serialisation JAVA > c'est plus léger coté CPU serveur mais plus lourd coté client (après tout on s'en fiche un peu)
    • Google Protocol Buffers > Traitement un peu lourd coté client, léger en bande passante, le source existe en JAVA.
      http://code.google.com/apis/protocol.../overview.html
    • JSON > Plus lourd que les protocoles binaires, surtout que je dois passer des données binaires (blobs)
    • XML > j'en parle parce qu'il faut bien mais c'est déjà beaucoup trop


    http://cornelcreanga.com/2009/07/jav...serialization/

    Il y a un aspect que je n'aime pas dans tout ces protocoles c'est qu'ils passent le nom des variables dans chaque message. Cette information est redondante, on pourrait passer la définition de la classe une fois avec un ID, puis les données brutes par la suite avec le même identifiant (4 octets pour la classe/numéro de version suffiraient). En plus on n'a vraiment besoin d'avoir cette info que pour les services ouverts SOAP mais quand on maitrise le client et le serveur, cette information devient inutile. Il suffit de coder en dur les données pures et veiller à la cohérence des classes qui les utilisent à chaque bout.


    Concernant le dev je pense que je vais développer les prototypes avec un outil gratuit (pour le dev) de type WebORB. Ca me permettra de gagner du temps. Une fois le produit finalisé je substituerai la couche de communication.

    Qu'en pensez-vous ? Connaissez vous d'autres plateformes ou protocoles que je pourrais ajouter à ces listes ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    L'idéal pour toi serais ça (je continue ma pub^^):
    http://www.reddwarfserver.org/


    Sérieusement même si c'est en version beta, et que oracle à abandonné le projet , il y a toujours quelques développeurs qui travaillent dessus. De mon point de vu c'est bien mieux qu'un smartfox ou red5.

    Le gros problème que je lui trouve c'est pour les statistiques , comme tu n'as pas de bdd relationnel , ça pose problème. Mais sinon c'est en gros un serveur d'application type glassfish mais dédié pour les jeux vidéos. C'est simple à comprendre et très performant.

    En ce qui concerne le protocole des messages tu peux utiliser ce que tu veux avec. Par défaut , il y a rien , c'est juste une socket , du binaire , tu utilises bytebuffer pour construire ton message. Tu peux greffer ce que tu veux la dessus.

    Pour ce qui est des gros messages (genre bcp d'images, video, modèles 3d ect ...) , quelque soit la solution utilisé , il vaut mieux utiliser un serveur web à côté. Mais tu peux quand même utiliser reddwarf pour faire passer c'est donnée , bien par défaut ils sont limités à 65k pour limiter la latence.

Discussions similaires

  1. Serveur Java EE pour application web et application web mobile
    Par DavidleVrai dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 21/01/2015, 10h11
  2. [Sockets] Serveur Java performant
    Par Deimz dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 18/08/2011, 18h12
  3. Concevoir un serveur Java performant pour RIA Flash
    Par bokan dans le forum Dynamique
    Réponses: 0
    Dernier message: 19/04/2011, 13h33
  4. Temps de développement pour un serveur Java?
    Par philema dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2007, 07h57
  5. Réponses: 3
    Dernier message: 22/11/2005, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo