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

C++ Discussion :

Webservice ou pas ?


Sujet :

C++

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut Webservice ou pas ?
    Salut à tous,

    De base je suis dévellopeur web , donc le C++ n'est pas vraiment ma tasse de thé mais pour une de mes appli j'ai du m'interfacer sur une appli C++.
    Comme il existait déjà une ébauche de "serveur" sur l'appli C++ j'ai continuer dans cette voie.

    J'ai donc coté C++ un socket en attente de commande , et qui selon la commande renvoi des infos ou des images.
    Cette partie serveur me semble un peu crade : une succession de send et de recv.
    Coté client (php) ce n'est guère mieux puisque des socket_read/write répondent ou interroge le serveur.

    Etant entouré de dev C++ (pas des bidouilleurs comme moi ^^ ) je me demandais si il n'était pas possible de mettre en place un web service un peu plus traditionnel (genre SOAP,RPC ...).
    Si oui y'a t'il des choses adapté plus particulièrement au C++ ? Des librairies à me conseiller (développement en VS avec MFC si je dis pas de conneries) et ou des petits tutos d'exemples ?
    Un web service est il adapter au volume de données que j'ai à transferer (ca peut aller jusqu'a +/- 20ips avec des images entre 30 et 150ko ?

    MErci pour vois réponse
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre éclairé
    Avatar de Floréal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 456
    Points : 849
    Points
    849
    Par défaut
    Voici gSOAP, qui fonctionne un peu comme axis mais en C++, sinon sous VS il me semble qu'on peut ajouter une "référence Web" (merci les traducteurs et les ergonomes de chez Microsoft...), qui aurait du être traduit par "Service Web" ou "Web Service".
    Enfin pour la question du volume de données, je dirai que... je laisse le suivant te répondre, parce que j'en sais rien.
    Ancien membre du projet "Le Dernier Âge".

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Petit up ,
    Avez vous des retours d'expérience sur le transfert de fichie ret plus particulièrement d'image avec SOAP ?
    Est il possible d'avoir des volumes important ?
    Quid des temps de traitement ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je crois que tu confonds un peu les choses....
    Reprenons le model OSI:

    TCP = Transfert de données brutes
    HTTP = Requete - Réponse
    SOAP = Function Call - Function Return

    A chaque couche, on rajoute du traitement. HTTP devra gérer (décoder) le header, et générer le header de la réponse. SOAP devra en plus décoder l'enveloppe, et encode l'enveloppe de retour.

    Le plus efficace pour la transmission de données est donc TCP.

    Ensuite si tu veux un peu plus de "maitrise" quant aux données renvoyées, HTTP sera adapté car permet d'effectuer des requetes.

    SOAP est une surcouche qui ne fait que décrire l'enveloppe que doit avoir les paramètres d'un appel de fonction, et les valeurs de retour de la fonction.
    [y a aussi la description du web service, mais bof]
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pas de confusion , j'avais bien compris
    Ce qui m'intéresse dans SOAP c'est justement de n'avoir qu'a appeler les fonctions serveur sans avoir a gérer les connexion (socket tcp actuellement) coté client.

    En gros coté client je veux pouvoir faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $image = $client->getImage();
    Alors que actuellement , j'envoi un ordre , je reçois , je vérifie que j'ai bien tt mes paquets , j'affiche mon image.

    SOAP est forcément plus gourmand en ressource que du TCP pur c'est pour cela que je cherchais des retour d'infos sur le transfert de donnée (en l'occurence d'image) avec SOAP à fréquence relativement rapide.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Faudrait que je vois le code de ton client/server

    Mais il me semble que:

    1. Utiliser SOAP nécessite d'avoir à disposition un serveur HTTP.
    2. Utiliser HTTP nécessite d'avoir à disposition un serveur ligne de commande TCP.

    Si tu veux faire du SOAP, ca veut dire que tu as du HTTP (ce qui est largement suffisant et même bien plus adapté pour l'envoi d'images). L'envoi d'images par HTTP est vraiment simple.

    A noter que si tu fais du HTTP, c'est que tu as aussi du TCP en ligne de commande (ce qui est suffisant *aussi* à mon avis).

    Et nul besoin en TCP de s'assurer que tous les paquets sont bien là, TCP garanti l'existence et le bon ordre de tous les paquets.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Faudrait que je vois le code de ton client/server
    Actuellement coté serveur j'ai quelque chose comme ceci :

    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
    31
    32
    33
     
    void emissionImage(SOCKET socket_client,BYTE* PImJPGintel, int tailleJPG)
     
    {
     
    		/* Emission taille de l'image */
     
    		unsigned char poidFortFort = (tailleJPG&0x00FF0000) >> 16;
     
    		unsigned char poidFort     = (tailleJPG&0x0000FF00) >> 8;
     
    		unsigned char poidFaible   = (tailleJPG&0x000000FF) ;
     
     
     
    		int retVal;
     
    		retVal = send(socket_client,(const char*)&poidFortFort,sizeof(char),0);
     
    		retVal = send(socket_client,(const char*)&poidFort,sizeof(char),0);
     
    		retVal = send(socket_client,(const char*)&poidFaible,sizeof(char),0);
     
     
    /
     
    		if(tailleJPG>0)	retVal = send(socket_client,(const char*)PImJPGintel,tailleJPG,0);
     
     
     
    		//closesocket(socket_client);
     
    }
    Et coté client (PHP)
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    public function getUneImage($ticket,$idCam,$pocket=0)
     
    	{
     
     
                   // Partie gérant la demande d'image
                   /*if(!isset($_SESSION['S_NUMTICKET']) || empty($_SESSION['S_NUMTICKET']))
     
    			$_SESSION['S_NUMTICKET'] = $ticket;
     
     
     
    		$this->emissionOrdre(Dp_Communication::ORDRE_VISU_DIRECT);
     
    		$resolution = $_SESSION['resolution'];
     
    		$this->writeChar($resolution); //Résolution
     
    		$this->writeChar($pocket); 
     
     
    		for ($i=0 ; $i<$resolution; $i++)
     
    		{
     
    			if($resolution==1)
     
    				$this->writeChar($idCam);
     
    			else
     
    				$this->writeChar($_SESSION['camera'][$i]);
     
    		}
    */
     
     
                   // PArtie de réception à proprement parlé
    		$tailleImageTab[0] = $this->readChar();
     
    		$tailleImageTab[1] = $this->readChar();
     
    		$tailleImageTab[2] = $this->readChar();
     
    		$tailleImage       = $tailleImageTab[0]*65536 + $tailleImageTab[1]*256+ $tailleImageTab[2];
     
     
     
     
     
    		if ($tailleImage>0)
     
    		{
     
    			$imageData = $this->socket_read_complet($tailleImage);
     
    			$image = imagecreatefromstring($imageData);
     
    		}
     
    		else
     
    		{
     
    			$image = imagecreatefromjpeg('struct/images/no_camera_black.jpg');
     
    		}
     
     
     
    		return $image;
     
    	}
    Toutes les méthode du type readChar() , ne sont pas native à PHP et sont donc du code supplémentaire.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [WEBSERVICE+THREAD] Pas d'accès
    Par ghost942 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 14/10/2008, 00h44
  2. Mon WebService n'est pas interopérable
    Par verbose dans le forum Services Web
    Réponses: 6
    Dernier message: 04/09/2008, 10h16
  3. Réponses: 3
    Dernier message: 11/02/2008, 16h19
  4. Réponses: 4
    Dernier message: 22/01/2008, 13h03
  5. [EJB3] [WEBLOGIC] Injection dans WebService ne fonctionne pas
    Par pmartin8 dans le forum Java EE
    Réponses: 2
    Dernier message: 15/11/2007, 21h02

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