1 votes

Méthode Web de WCF qui accepte différents types de messages

Le WCF de Microsoft est facile à utiliser lorsque vous créez des services Web où chaque message a sa propre méthode Web. Le WCF génère tout le WSDL et tout est facile.

Ce que je veux faire, c'est avoir une seule méthode Web qui accepte plusieurs messages différents (je ne veux pas ajouter une nouvelle méthode à chaque fois que j'ajoute un nouveau type de message). Les messages eux-mêmes auront des informations d'en-tête qui identifient le type de message. Une fois que je connais le type de message, je saurai la structure du reste du message.

La seule façon que j'ai trouvée pour faire cela avec le WCF est d'avoir la méthode qui accepte une chaîne de caractères, que je pars en XML et que j'utilise. Cependant, je ne vois pas de moyen clair de publier les différents types de messages dans le WSDL ; donc, tout le service est essentiellement non documenté.

Quelqu'un connaît-il une technique à utiliser dans le WCF ?

1voto

Quartermeister Points 24729

Vous pouvez écrire un contrat d'opération qui accepte n'importe quel message en définissant l'Action sur * et en lui faisant prendre un objet Message :

[ServiceContract]
public interface IMessageContract
{
    [OperationContract(Action = "*", ReplyAction = "*")]
    Message ProcessRequest(Message request);
}

L'objet Message vous donne accès aux en-têtes et dispose de méthodes pour désérialiser le corps.

Pour exporter votre propre WSDL, vous devrez implémenter IWsdlExportExtension sur un comportement de contrat ou un comportement d'opération et le rattacher à votre service. Cela vous donnera accès à un WsdlExporter, et vous pourrez créer une ContractDescription vous-même et appeler ExportContract pour qu'elle apparaisse dans le WSDL généré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X