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 EE Discussion :

[Stratégie] Distribuer des données aux applications clientes sans exposer la base de données


Sujet :

Java EE

  1. #1
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut [Stratégie] Distribuer des données aux applications clientes sans exposer la base de données
    Bonjour à tous.

    Je développe des applications "client lourd" de gestion pour l'industrie (du genre : organisation de production, bons de commande, livraison, etc.).
    Les données sont stockées dans une base SQL Server qui se trouve sur le serveur du réseau local.
    Les applications clientes se connectent avec JDBC et tout va bien...

    Maintenant, ces applications devront pouvoir être utilisées depuis des postes situés n'importe où en France via internet. La distribution des applis se fera par Java Web Start.

    Là où cela se gâte c'est pour la connexion à la base SQL Server
    Comme il n'est pas question d'exposer le serveur SQL directement sur internet, j'ai pensé utiliser un serveur dédié qui contrôle les accès et envoie des objets ResultSets (jeux d'enregistrements) aux applications clientes.

    Ma question est : pensez-vous que la technique RMI puisse être efficace dans ce cas (tout en sachant que le nombre d'utilisateurs peut grimper à 100) ?

    Merci d'avance de vos avis.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    non, des result set ne sont pas serializable autant que je sache. Soit tu travaille avec des webservice (exposition d'information sour forme xml à la demande), soit éventuellement avec de ejb distants. Ne perd pas de vue que, entre réseau local et réseau distant, il y a une sacré différence de perfs. Le rmi est utilisable, mais il faut l'utiliser correctement (objets légers pouvant être envoyés au comptes goutte).

    Note: ok pour ne pas exposer le serveur bd. Mais n'est-il pas moins cher en temps de développement d'envisager un vpn?

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut EJB ?
    Merci tchize_,

    Pas de possibilité vpn car l'application doit pouvoir être utilisée par n'importe quel poste internet ; la sécurité se fait avec login+mdp.

    Pour remplacer les ResultSets, peut-on transmettre un tableau du genre Objet[][] par RMI ?

    Je vais faire quelques recherches du coté de EJB 3 (que je ne connais pas) ainsi que d'un outil serveur d'ejb (si cela existe). N'hésitez pas à me dire si je fais fausse route

    Merci d'avance de vos avis.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    n"oublie pas que toute classe que t'envoie par rmi doit être sérialisable. Car la classe sera sérialisée sur le flux réseau et désérialiser coté client. Le plus gros risque avec RMi, c'est ne pas se rendre compte de la quantité de données sérialisées vers le client.

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut OK
    J'en tiendrai compte
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Pas de possibilité vpn car l'application doit pouvoir être utilisée par n'importe quel poste internet ; la sécurité se fait avec login+mdp.

    Pour remplacer les ResultSets, peut-on transmettre un tableau du genre Objet[][] par RMI ?

    Je vais faire quelques recherches du coté de EJB 3 (que je ne connais pas) ainsi que d'un outil serveur d'ejb (si cela existe). N'hésitez pas à me dire si je fais fausse route

    Merci d'avance de vos avis.
    Bonjour,
    Je pense que tu fais fausse route, RMI ne pourra pas fonctionner facilement sur Internet (firewall bloquant certains ports utilisés par rmi, etc.)

    Il faudrait plutôt suivre le premier conseil de tchize_ en introduisant un web services auquel tes applications clientes feront appel. Tu n'es pas obligé de connaitre les EJB pour le réaliser, quoique l'alternative serait que tu connaisses Spring. Pour y aller un peu plus vite en utilisant les ejb3, je te conseillerais le framework Seam. En tous les cas, tu as besoin d'un middleware qui aurait accès à la base de données sur réseau local et délivrerait les résultats aux clients distants à travers une interface web services.

    Bon courage.
    SCJP 5 / SCBCD 1.3 Certified

  7. #7
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut Web services ?
    Il arrive que l'application cliente doit imprimer des états statistiques récapitulatifs. Ce genre d'état utilise parfois des milliers d'enregistrements.

    Aujourd'hui j'utilise des états JasperReport qui se connectent directement à la base par JDBC. Le résultat est excellent.

    Lorsque je vais passer sur internet, j'ai un peu peur que les webs services soient trop lents ou ne supportent pas la charge. C'est peut-être un à-priori ridicule ?

    Je pense essayer une solution du genre :
    - EJB qui se connecte à SQL serveur (je suppose que je peux utiliser JDBC depuis un EJB ).
    - Un serveur (je pense à GlassFish) pour servir les clients.
    C'est l'article de P.Secheresse qui m'incite à tenter le coup dans cette direction.

    Je posterai ici le résultat si ça marche.

    En tout cas merci pour vos pistes de recherche, je suis développeur indépendant et c'est difficile de sortir du bocal du développement d'applications desktop.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si t'as pas d'expérience en J2EE, le EJB çà va prendre du temps. Pour les webservices c'est pas parce que t'as 200M de données à envoyer que çà va prendre 200M en mémoire. Il faut juste faire attention à utiliser des librairie qui ne gardent pas tout en mémoire (création de la réponse au fur et à mesure de la lecture de la db, pas un système où tu prend tes données, tu les met dans une arbre xml et puis seulement tu envoie l'arbre au client).

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut Librairies
    Il faut juste faire attention à utiliser des utiliser des librairie qui ne gardent pas tout en mémoire (création de la réponse au fur et à mesure de la lecture de la db, pas un système où tu prend tes données, tu les met dans une arbre xml et puis seulement tu envoie l'arbre au client)
    Aurais-tu des références de librairies qui puissent envoyer les données au fur et à mesure. Un genre de flux je suppose ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut Web services
    Bon après pas mal de recherches, j'ai opté pour la solution web service.
    Merci à tous.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/05/2012, 17h57
  2. Réponses: 0
    Dernier message: 08/05/2012, 11h11
  3. Réponses: 9
    Dernier message: 17/05/2010, 11h21
  4. [OpenOffice][Texte] donner des valeurs aux champs utilisateurs sans insertion
    Par cpf2006 dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 18/06/2008, 15h01
  5. Réponses: 3
    Dernier message: 28/05/2007, 12h08

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