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 :

Application Cliente Desktop / Serveur base de données


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut Application Cliente Desktop / Serveur base de données
    Bonjour
    Je voudrais créer une application lourde Desktop Sous Java , qui se met à jour de façon transparente et périodique sur mon serveur (distant), et de façon bidirectionnelle (client <=>serveur )
    les mise à jour comprennent
    1- l'application elle même ( correction de bug- amélioration)
    2- les BD ( mise à jour de données existante sur le client par de nouvelle émanant du serveur)
    3- les donnes des utilisateurs (coté client vers serveur)

    Quelle Sont les options qui s'offre à moi :
    1 - Langage et platforme (Java est t'il le mieux adapté ) SPRING ? autre?
    2 - Comment peut ont gérer ces MAJ sans risque de corrompre les BD coté client-

    Merci pour vos réponse

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    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 713
    Par défaut
    Citation Envoyé par ibnhamzasm Voir le message
    Bonjour
    Je voudrais créer une application lourde Desktop Sous Java , qui se met à jour de façon transparente
    Pour les mises à jour d'application :
    1) Java Web Start :
    avantages : c'est standard et le code téléchargé n'est pas décompilable facilement et n'est pas copiable.
    inconvénients : avec les versions récentes de java, il faut un certificat et la mise à jour de l'application ne se fait qu'au moment du lancement

    2) Jean baptiste Wicht propose de créer son propre système de mise à jour
    http://baptiste-wicht.developpez.com...va/update/#LIV
    avantage : on contrôle tout
    inconvénients : le code n'est pas protégé contre la copie

    Citation Envoyé par ibnhamzasm Voir le message
    2 - Comment peut ont gérer ces MAJ sans risque de corrompre les BD coté client
    La réponse habituelle est que toutes les données doivent se trouver dans la base (MySQL, SQL server, PostGre, etc...)
    et jamais sur le poste client.

    Maintenant, pourquoi ce choix d'application lourde Java plutôt qu'une application web réalisable en Java ?
    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/

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Bonjour Merci Beaucoup Pour Votre Réponse

    Merci le java Web Start Semble être une solution intéressante - si j'ai bien compris EN SURVOLANT à la hâte LA DOC il semble que l'installation des mise à jour passe par l'accord de l'utilisateur- ça ne serai pas plus facile et Sûr dans ce cas de fournir un patch avec l’exécutable mis à jour- puisque l'utilsateur aura à valider le téléchargement et l'installation ?

    pour votre question sur le client lourd, c'est que les usagers ne sont pas connecté forcément ( offline)- la mise à jour ne se fait que lorsque il se connectent, et les BD sont essentielle pour le Fonctionnement de l'application, les mise à jours sont proposé périodiquement- ( d'autant plus que les changement sur la bd dorsale ne se fait que périodiquement)- dans ce cas là ma question persiste-

    trés gentil à vous-

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    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 713
    Par défaut
    Citation Envoyé par ibnhamzasm Voir le message
    il semble que l'installation des mise à jour passe par l'accord de l'utilisateur
    Non, l'utilisateur n'a pas le choix.
    Quand il lance sont application, la mise à jour est automatique (cela fait râler un peu parfois ...)


    Citation Envoyé par ibnhamzasm Voir le message
    les usagers ne sont pas connecté forcément ( offline)
    Ce qui veut dire qu'il faut :
    - une base de données sur le poste quand il est est hors ligne
    - un système de synchronisation des données avec la base centrale quand il est à nouveau en ligne
    Ce type de problème se résout en analysant précisément ce qui doit être synchronisé ou pas.
    Donc là, il n'y a pas de réponse toute faite, il faut aller dans le détail.

    En cas de changement de structure de la base locale (ajout de table, de colonne, etc ...)
    il faut utiliser un script SQL d'instructions de manipulation des objets de la base (rien de très compliqué)
    qui serait déclenché par l'application elle-même lors d'une mise à jour de celle-ci.
    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/

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Non, l'utilisateur n'a pas le choix.
    Quand il lance sont application, la mise à jour est automatique (cela fait râler un peu parfois ...)
    oui et l'histoire des certif?

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    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 713
    Par défaut
    Si l'application contient un certificat valide (c'est payant),
    l'utilisateur n'a pas besoin de dire à chaque fois qu'il accepte la mise à jour.

    On peut faire une application avec un certificat "autosigné"
    l'utilisateur aura un message l'avertissant que la "source n'est pas sûre"
    mais il peut tout de même lancer l'application

    Quoi qu'il en soit, lorsque le poste est en ligne, si l'utilisateur refuse la mise à jour
    alors l'application ne se lance pas du tout
    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/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Pour les mises à jour d'application :
    1) Java Web Start :
    avantages : c'est standard et le code téléchargé n'est pas décompilable facilement et n'est pas copiable.
    Tu peux argumenter? A ma connaissance, javawebstart ne se charge ni d'obfuscquer le code, ni d'empêcher la copie, ni d'interdire le lancement d'une ancienne version. Certe il y a des tags dans ce sens dans le jnlp, mais ce ne sont pas les lanceur jnlp tiers qui manquent capables d'ignorer ce genre de règle. C'est juste un outil qui facilite le transfert des mises à jour et qui vérifie leur signature.

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    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 713
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu peux argumenter? A ma connaissance, javawebstart ne se charge ni d'obfuscquer le code, ni d'empêcher la copie, ni d'interdire le lancement d'une ancienne version
    C'est tout simple : le jar est téléchargé dans le cache java et éclaté en plein de fichiers.
    Il n'est pas copié dans un dossier que l'utilisateur peut facilement trouver.
    A moins qu'il y ai une astuce que j'ignore, je souhaite bon courage à l'utilisateur moyen qui voudrait reconstituer le jar et les librairies pour le passer à son collègue.

    Par ailleurs, au lancement de l'application, JWS va systématiquement vérifier la version sur le serveur et la télécharge si elle existe.
    Naturellement, si le développeur créé une nouvelle version sur un lien web différent du précédent, il n'y aura pas de mise à jour car cela sera considéré comme une autre application.
    Mais dans ce cas on décide délibérément de préserver les versions précédentes et ce n'est pas l'objectif de ibnhamzasm
    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/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    A moins qu'il y ai une astuce que j'ignore, je souhaite bon courage à l'utilisateur moyen qui voudrait reconstituer le jar et les librairies pour le passer à son collègue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    davidd@davidd-Laptop /tmp $ wget http://www.yworks.com/resources/yed/demo/yed.jnlp
    --2016-08-04 19:15:47--  http://www.yworks.com/resources/yed/demo/yed.jnlp
    Resolving www.yworks.com (www.yworks.com)... 217.160.0.52
    Connecting to www.yworks.com (www.yworks.com)|217.160.0.52|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1396 (1,4K) [application/x-java-jnlp-file]
    Saving to: ‘yed.jnlp’
     
    yed.jnlp            100%[===================>]   1,36K  --.-KB/s    in 0s      
     
    2016-08-04 19:15:47 (111 MB/s) - ‘yed.jnlp’ saved [1396/1396]
     
    davidd@davidd-Laptop /tmp $ cat yed.jnlp | grep codebase
      codebase="http://www.yworks.com/resources/yed/demo"
    davidd@davidd-Laptop /tmp $ cat yed.jnlp | grep jar | grep href
        <jar href="yed.jar"/>
        <jar href="lib/vectorgraphics.jar"/>
        <jar href="lib/common-image.jar"/>
        <jar href="lib/common-io.jar"/>
        <jar href="lib/common-lang.jar"/>
        <jar href="lib/imageio-core.jar"/>
        <jar href="lib/imageio-icns.jar"/>
        <jar href="lib/imageio-ico.jar"/>
        <jar href="lib/imageio-iff.jar"/>
        <jar href="lib/imageio-jpeg.jar"/>
        <jar href="lib/imageio-metadata.jar"/>
        <jar href="lib/imageio-pict.jar"/>
        <jar href="lib/imageio-psd.jar"/>
        <jar href="lib/imageio-thumbsdb.jar"/>
        <jar href="lib/imageio-tiff.jar"/>
    on ouvre un notepad à la con et on copie colle avec 2 changement tout bête à faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    wget http://www.yworks.com/resources/yed/demo/yed.jar
    wget http://www.yworks.com/resources/yed/demo/lib/vectorgraphics.jar 
    wget http://www.yworks.com/resources/yed/demo/lib/common-image.jar
    wget http://www.yworks.com/resources/yed/demo/lib/common-io.jar
    wget http://www.yworks.com/resources/yed/demo/lib/common-lang.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-core.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-icns.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-ico.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-iff.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-jpeg.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-metadata.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-pict.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-psd.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-thumbsdb.jar
    wget http://www.yworks.com/resources/yed/demo/lib/imageio-tiff.jar
    on copie colle dans la console, et on finis par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    davidd@davidd-Laptop /tmp $ mkdir lib
    davidd@davidd-Laptop /tmp $ cp *.jar lib/
    davidd@davidd-Laptop /tmp $ java -jar yed.jar
    J'aurais mis plus de temps à rédiger ce post qu'à réaliser l'opération (moins de 10 minutes), et le copain informaticien de l'utilisateur peut rapidement lui expliquer la manoeuvre. Pas besoin de courage là dedans. le CE1D de mathématique est plus dur à réaliser



    Et si l'utilisateur est moins que moyen, ce ne sont pas les outils automatiques qui sont durs à trouver avec google

    https://github.com/codewatchorg/jnlpdownloader

    On est loin du "difficile à décompiler, incopiable"

    Pour résumer, ne pas utiliser webstart en protection contre la copie ou pour empêcher d'utiliser de vieilles versions, ca n'est pas fait pour et ce n'est pas difficile à contourner. Javawebstart est là pour faciliter la vie des utilisateurs (toujours accès à la dernère version, pas besoin d'install), et des administrateur (déploiement aisé). Mais il n'est pas là pour empêcher le moindre contournement ou offrir la moindre protection à l'éditeur. Il offre uniquement des protections à l'utilisateur en sandboxant l'application et en vérifiant l'intégrité des certificats.


    Pour le reste c'est un très bon util, bien adapté au déploiement réseau et en tant qu'utilisateur, je préfère javawebstart à des système de mise à jour sauce maison qui seront des trous béant de sécurité dans mon PC. Je dis juste que si tes critère interdisent absolument que l'utilisateur bidouille, tu va devoir rajouter des surcouches destinées à ça dans ton code, ce n'est pas un service offert par webstart.

  10. #10
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    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 713
    Par défaut
    Oui Tchize_, tu as raison ...

    Si j'ai écris "A moins qu'il y ai une astuce que j'ignore ...." c'était une véritable provocation de ma part et j'étais presque sûr que quelqu'un allait réagir.
    J'espère que tu voudras bien excuser cette petite vilainie de ma part ...

    L'histoire remonte à un vieux post que je n'ai pas retrouvé avec un contributeur expérimenté et où il était question de l'obfuscation du code.
    On avait parlé de JWS et j'avais déjà fait la même remarque sur la mise en cache du jar. Il en avait conclu que c'était une assez bonne protection.

    J'avais quand même quelques doutes que tu as levé.
    Effectivement, le jnlp est accessible en clair. Dès lors on peut télécharger le jar et ses librairies.

    Dont acte.

    Cela dit, tu conviendras sans doute que ce n'est tout de même pas à la porté de l'utilisateur moyen qui n'a aucune idée de la façon dont fonctionne JWS.
    le copain informaticien de l'utilisateur peut rapidement lui expliquer la manoeuvre
    Eh oui, tout est possible ...

    je préfère javawebstart à des système de mise à jour sauce maison
    On est bien d'accord.
    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/

  11. #11
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    Avec plaisir .. juste une remarque pour les modérateur - sur les mon Android je ne trouve pas le bouton résolu sur le post.. pas VU ? je ne sais pas peut être j'ai pas trop inssisté

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/12/2013, 10h52
  2. application desktop et base de donnée partagée
    Par hellalaboy dans le forum ADO.NET
    Réponses: 1
    Dernier message: 06/01/2012, 23h22
  3. insertion de donnée saisie par le client dans la base de données du serveur
    Par modafine dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 22/09/2008, 12h46
  4. Réponses: 23
    Dernier message: 13/03/2007, 11h04
  5. Application client et serveur TCP/IP
    Par engi dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/10/2006, 20h11

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