1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

AIDE Serialise() et Deserialise() pour protocole de communication entre client et serveur

Discussion dans 'Windev' créé par dorner, Mai 4, 2021.

  1. dorner

    dorner New Member

    Inscrit:
    Août 17, 2018
    Messages:
    19
    J'aime reçus:
    4
    Bonjour à tous!

    J'ai fait de la recherche sur le sujet et malheureusement je n'ai pas réussi à trouver beaucoup d'information. Je vais vous expliquer mon dilemne.

    En gros ce que je veut faire c'est de développer une application "three-layer" pour Windows, Android et iOS (sur windev et windev mobile). L'application communique avec un serveur d'application pour faire toute les requêtes et puis le serveur fait les requêtes à la base de données, l'application n'a jamais un accès direct à la base de donnée.

    Pour réaliser cela, je doit développer un protocole pour échanger les données entre un client et le serveur. Si je veut transférer une classe et/ou structure, la chose à faire est de faire Serialise(classe) et de transmettre l'info au serveur qui la reconstruit avec Deserialise(). Là où je rencontre un pépin est avec les fonctions Serialise() et Deserialise() et leurs limitations.

    Lorsque j'était encore aux étapes de design initial, je pensais me servir de Serialise() en binaire puisque c'est la méthode la plus eficiente et avec le moins "d'overhead". Mais je me suis rendu compte que la sérialisation en binaire n'est pas supportée sur mobile.

    Es-ce qu'il faut que j'implémente ma propre version de Serialise() et Deserialise() si je veut transférer effectivement les données en binaire?

    Une fois que j'ai les données, je fait comment pour convertir ce buffer au bon type de variable? Il n'y a pas de "cast" en WL, donc je suis un peu confu.

    Es-ce que quelqu'un à déjà accompli quelque chose du genre? Si oui, de l'aide serait grandement appréciée.

    Merci et bonne journée à vous! :)
     
  2. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,938
    J'aime reçus:
    1,564
    Bon, personnellement je n'utilise jamais serialise, deserialise , ni les classes et objet (incompétence).
    Donc je n'ai pas de réponse dessus
    Cependant la plupart du temps en wlangage il existe la variable variant
    Quand le type de variable est inconnu.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Ensuite pour les binaires ( disons des images pour faire simple)
    C'est assez particulier
    Je te conseille de voir cette page

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    De toutes façons je te conseille de commencer par la version mobile Android puis iOS avant d'attaquer la version Windows.
    En espérant t'avoir aidé.
     
    dorner apprécie ceci.
  3. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    657
    J'aime reçus:
    232
    J'ai utilisé serialise avec comme argument JSON et je n'ai pas eu de soucis. Plusieurs fois et dans les même circonstances, pour une grosse application avec de lal gestion documentaire. J'ai combiné webdev 25 et windev mobile 25 et windev 25.
     
    dorner apprécie ceci.
  4. dorner

    dorner New Member

    Inscrit:
    Août 17, 2018
    Messages:
    19
    J'aime reçus:
    4
    Salut popoy et LAPIPE2018, merci de vos réponses.

    Là je suis en beau calvert car j'ai pris le temps d'écrire une très longue réponse élaborer et quand je l'ai soumis y'a eu une erreur et j'ai tout perdu. :mad:

    Mais bon, le type Variant pourrait bien répondre à mes besoins, va falloir que je faise des tests pour déterminer.

    Pour ce qui est de Serialise() en binaire, je croit que ma seule option va être de coder moi-même des fonctions pour sérialiser les classes si je veut la transmission en binaire.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , et il semble que pour bien faire c'est ce que je devrais faire. Mais comme LAPIPE2018 à réussi en JSON, je croit que je vais me sauver un casse-tête et éssayer cela. Y'a plus de bandwith utilisé en JSON, mais je croit que ça vaut le temps de développement sauvé (et mon patron va définitivement être d'accord :coldsweat:).

    LAPIPE2018, es-ce que ton application est une application à trois couches? Si oui, es-ce que ça te dérangerais de partager un peu plus d'info sur comment tu y est arrivé? Es-ce que tu as développer une application serveur qui gère les 3 platformes?
     
  5. dorner

    dorner New Member

    Inscrit:
    Août 17, 2018
    Messages:
    19
    J'aime reçus:
    4
    Merci à vous deux encore, j'apprécie!
     
  6. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    657
    J'aime reçus:
    232
    J'ai plus de 300 tables, et c'est un gros truc, si tu es en 25, ça marche, il faut t'assurer des UTF8 ou des ANSI et UNICODE pour les chaines sécrurisé. Ca marche.
    D'ailleurs, tu génères le WEBSERVICE avec la version 24 et tu vois comment il mette en place les GET, POST et autre
     
    WX1331 et Gemini1961 aiment ça.
  7. Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328
    Bonjour,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Mais je me suis rendu compte que la sérialisation en binaire n'est pas supportée sur mobile.
    Cliquez pour agrandir...
    C'est la désérialisation en binaire qui n'est pas disponible.
    D'après ce que tu cherches à faire,

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Si je veut transférer une classe et/ou structure, la chose à faire est de faire Serialise(classe) et de transmettre l'info au serveur qui la reconstruit avec Deserialise()
    Cliquez pour agrandir...
    Il n'y a pas de problèmes.

    Pour simplifier le travail, les fonctions

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    remettent tout dans l'ordre. Pour plus de souplesse, il est préférable d'utiliser une classe mappée (cf

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    .)

    Envoie vers le serveur :
    Code (Windev):
    tabDonnésASérialiser est tableau de MMatable //Classe mappée de la table ou la requête MaTable que l'on désire sérialiser
    bufRésultat est buffer

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (tabDonnéesASérialiser,MaTable)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (tabDonnéesASérialiser,bufRésultat,psdBinaire)
    AppelWSEnvoi(bufRésultat)
    Réception par le serveur :
    Code (Windev):

    tabDonnéesADésérialiser est tableau de MMatable
    clUneDonnée est MMaTable

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (tabDonnéesADésérialiser,bufReçu,psdBinaire)

    POUR TOUT clUneDonnée de tabDonnéesADésérialiser
         

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (clUneDonnée,MaTable)
         

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (MaTable)
    FIN
     
     
    dorner, WX1331 et Gemini1961 aiment ça.
  • dorner

    dorner New Member

    Inscrit:
    Août 17, 2018
    Messages:
    19
    J'aime reçus:
    4
    Un gros merci à tous, je croit que je vais être capable de me débrouiller avec cela.

    Bonne journée à vous! :)
     
  • trick

    trick Active Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    171
    J'aime reçus:
    95
    Super pour les explications sauf que sous android il faudra changer psdBinaire en psdXml ...
     
    #9 trick, Mai 18, 2021
    Dernière édition: Mai 18, 2021
    popoy apprécie ceci.
  • Partager cette page

    Chargement...