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

Windows Communication Foundation .NET Discussion :

WCF et attachment


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut WCF et attachment
    Bonjour,

    débutant en .NET, je cherche à créer un webservices qui reçoit une commande en entrée, et qui la renvoie en sortie.

    La commande (probablement au format .xml) est accompagnée d'une liste de produits que je souhaiterai mettre en pièce jointe. D'après quelques recherches, il faudrait que j'utilise MTOM & WCF pour encapsuler ma pièce jointe dans SOAP.

    Avez-vous plus de précisions à m'apporter, ou idéalement un lien?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Tu as le choix entre MTOM ou un encodage binaire pour transmettre de grosses données (fichier par exemple).

    Tu as des infos ici;
    http://msdn.microsoft.com/fr-fr/libr...42(VS.90).aspx
    http://msdn.microsoft.com/fr-fr/libr...89(VS.90).aspx
    http://msdn.microsoft.com/fr-fr/libr...09(VS.90).aspx
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Y'a un truc que je capte pas avec certaines personnes qui veulent faire du WCF (j'ai un collègue comme ca au boulot), c'est pourquoi vouloir envoyer du xml? Y'a t il une réelle utilité? Si c'est pour sérialiser manuellement avant, utiliser wcf, et déserialiser manuellement après, je dirais presque que c'est contre productif! WCF le fait tout seul comme un grand et le gère peut-être mieux que toi. Alors après effectivement, y'a peut-être des contraintes que je ne connais pas!

  4. #4
    Membre actif
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut
    Merci pour vos réponses rapides

    Je n'ai pas de contraintes particulières, je veux envoyer une pièce jointe (probablement au format xml) à partir d'un web service. Je vais donc me retrouver un flux SOAP XML avec un champ qui encapsule des données XML entre autres champs.

    D'après mes recherches on peut utiliser des DIME attachment avec WSE. Sauf que ce dernier a été remplacé par WCF, d'où mon idée de faire du WCF...

    Pour le moment j'ai réussi à créer un web service qui renvoie un objet commande, avec notamment un champ qui contient un fichier XML encodé en binaire. Sauf que je n'ai pas trouvé de commande pour décoder ce contenu binaire et retrouver mon fichier XML.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <HelloWorldResponse xmlns="http://tempuri.org/">
          <HelloWorldResult>
            <id_commande>int</id_commande>
            <id_client>int</id_client>
            <commande_attachment>base64Binary</commande_attachment>
          </HelloWorldResult>
        </HelloWorldResponse>
      </soap:Body>
    </soap:Envelope>

  5. #5
    Membre actif
    Inscrit en
    Mai 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 47
    Par défaut
    Citation Envoyé par miboo Voir le message
    Merci pour vos réponses rapides

    Je n'ai pas de contraintes particulières, je veux envoyer une pièce jointe (probablement au format xml) à partir d'un web service. Je vais donc me retrouver un flux SOAP XML avec un champ qui encapsule des données XML entre autres champs.

    D'après mes recherches on peut utiliser des DIME attachment avec WSE. Sauf que ce dernier a été remplacé par WCF, d'où mon idée de faire du WCF...

    Pour le moment j'ai réussi à créer un web service qui renvoie un objet commande, avec notamment un champ qui contient un fichier XML encodé en binaire. Sauf que je n'ai pas trouvé de commande pour décoder ce contenu binaire et retrouver mon fichier XML.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <HelloWorldResponse xmlns="http://tempuri.org/">
          <HelloWorldResult>
            <id_commande>int</id_commande>
            <id_client>int</id_client>
            <commande_attachment>base64Binary</commande_attachment>
          </HelloWorldResult>
        </HelloWorldResponse>
      </soap:Body>
    </soap:Envelope>

    A priori l'encodage marche. Savez-vous comment je peux récupérer mon fichier XML qui à l'intérieur de commande_attachment et qui a été encodé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] data = File.ReadAllBytes(Server.MapPath(@"test2.xml"));

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par miboo Voir le message
    A priori l'encodage marche. Savez-vous comment je peux récupérer mon fichier XML qui à l'intérieur de commande_attachment et qui a été encodé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] data = File.ReadAllBytes(Server.MapPath(@"test2.xml"));
    Euh? Si d'un coté t'as un objet avec trois champs dont un byte[] de l'autre côté t'auras le même (pour peu qu'il soit datamember)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PitMaverick78 Voir le message
    Y'a un truc que je capte pas avec certaines personnes qui veulent faire du WCF (j'ai un collègue comme ca au boulot), c'est pourquoi vouloir envoyer du xml? Y'a t il une réelle utilité? Si c'est pour sérialiser manuellement avant, utiliser wcf, et déserialiser manuellement après, je dirais presque que c'est contre productif! WCF le fait tout seul comme un grand et le gère peut-être mieux que toi. Alors après effectivement, y'a peut-être des contraintes que je ne connais pas!
    Ben Pit à totalement raison. Pourquoi réinventer la roue.
    Eclaires nos lanternes pour qu'on sache qu'elles sont les contraintes qui te poussent à serialiser et désérialiser du contenu manuellement alors que WCF est fait pour ?


    Au risque de faire du troll !!! mais je ne peux m'empêcher d'expliquer ce qui m'ait arrivé dans ma boîte actuelle :
    Personnellement, j'ai eu affaire à ce genre de problème dans mon job actuel (que je quitte bientôt).

    Le développeur précédent qui avait mis en place le service web WCF, ne connaissait pas l'existence des DataContract et des FautContract. Du coup ce qu'il faisait est que toutes les méthodes exposées par le service recevaient des string et renvoyaient des string . Les strings en entrée étaient des structures XML qu'il généraient manuellement et les strings en retour de fonction étaient aussi du contenu XML mais auquel il ajoutait un noeud Succes pour dire que la fonction s'est bien déroulée ou un noeud Exception pour dire qu'une exception a été interceptée lors de l'exécution. Vu que ce développeur (qui n'est plus dans la boîte et en plus de cela était un stagiaire) était le seul de la boîte et qu'on lui faisait total confiance, j'ai pas pu obtenir la décision de tout refaire parce que d'après la boîte tant que ça marche il n'y pas de problème.

    Mis à part la conception mal faite de WCF, s'y ajoute une interface WEB très mal architecturée. Dans l'interface si tu touches à un truc ça entraîne des bugs en cascade. Mais là c'est une autre histoire.

    J'ai voulu quitter la boîte durant la période d'essai, mais vu que j'avais commencé la procédure de changement de statut et que je dois rester au minimum un an sinon je perd mon changement de statut.

    Enfin dans 2 mois, je quitte la boîte et du coup je rigole quand je pense à la personne qui me remplacera et j'imagine sa tête devant l'application que j'ai beau essayée de remettre en droit chemin mais rien à cause de la fameuse phrase : tant que ça marche on perd du temps à tout refaire.

Discussions similaires

  1. WCF image attachement
    Par olibara dans le forum Services Web
    Réponses: 1
    Dernier message: 08/03/2010, 12h55
  2. Réponses: 12
    Dernier message: 12/12/2004, 14h25
  3. Réponses: 2
    Dernier message: 30/01/2004, 14h07
  4. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22
  5. Scanner des mails et récupérer le fichier attaché
    Par delphim dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/04/2003, 09h35

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