2009-12-10 5 views
1

Je suis nouveau à WCF.Net WCF - Réception et envoi XML

Je dois créer un service WCF qui reçoit XML simple (non SOAP), fait un peu de traitement envoie alors un message de réponse de retour en XML simple. Je n'ai pas de problème pour envoyer du XML, j'ai juste besoin de quelques conseils pour commencer. Je suis familier avec la création de services web dans .Net avec SOAP ... avec les services web Je définirais la fonction à appeler en fonction de la requête SOAP.

Si j'envoie du XML pur à un service WCF (sans définir de fonction particulière comme je le fais avec SOAP) ... quelle fonction touche-t-il? Je dois configurer ceci pour que toutes les demandes XML envoyées à mon WCF atteignent une fonction particulière ... mais comment? Est-ce que ce sont de bons exemples pour faire cela? (J'ai recherché des liens pour recevoir du code XML dans WCF, mais je n'ai rien trouvé pour un débutant dans WCF)

Répondre

4

Il y a vraiment deux parties distinctes à cette question.

  1. Sur quel protocole souhaitez-vous exposer votre service? HTTP? Si oui, vous devriez jeter un coup d'oeil à WebHttpBinding, qui a été construit pour les services REST (ou au moins, POX). Pour les scénarios plus complexes, vous devrez peut-être utiliser une liaison personnalisée qui ne force pas SOAP sur le message.

  2. Comment vous voulez représenter ce XML du côté de votre service. Par exemple, avec WebHttpBinding, les scénarios les plus simples consistent à toujours utiliser DataContracts et à laisser à WCF s'occuper de la sérialisation vers/depuis la représentation de texte XML. Cependant, il se peut que vous souhaitiez fournir le XML brut d'une manière ou d'une autre, et dans ce cas, vous pouvez certainement utiliser un contrat plus brut en utilisant uniquement les objets System.ServiceModel.Channels.Message et gérer vous-même le processus de sérialisation.

+0

Nous exposerons le service sur HTTPS. Je pense que ce que je veux utiliser est WebHttpBinding avec un contrat de message –

0

Vous pouvez créer un contrat d'opération qui reçoit et retourne une chaîne. une fois que vous obtenez la chaîne - utilisez la fonction dot net xml régulière pour l'analyser et faire tout ce qui est nécessaire.

Bon Le point de départ est la lecture du livre de Juval Lowey sur WCF. Pour répondre à la 2ème moitié - vous ne "envoyez" pas de XML au Service - vous devez créer un contrat (fonction) si c'est un général (méthode unique "function") ou beaucoup de "fonctions" (méthodes).

+0

Solution horrible. Oui, facile à mettre en œuvre, mais très inefficace. – tomasr

+0

Dot net est inefficace, mais prend 30% moins de temps à coder que C++, donc tout le monde l'utilise. Si vous voulez obtenir des résultats rapidement, commencez par quelque chose de simple, puis améliorez-le. – Dani

+0

Vous pouvez toujours le garder simple et ne pas le faire dans WCF. Aucune raison de le pirater de cette façon. – tomasr

1

Vous pouvez consulter des exemples qui utilisent WebHttpBinding (ou d'autres liaisons avec non-SOAP/WS-types de messages de messagerie) et par exemple Attribut WebGet avec WebMessageFormal.Xml comme types de requête/réponse.

+0

Ils vont être affichés donc je ne pense pas que Webget fonctionnera –

+0

Dans ce cas, WebInvokeAttribute peut être ce que vous voulez. http://msdn.microsoft.com/fr-fr/library/system.servicemodel.web.webinvokeattribute.aspx – Brian

Questions connexes