2010-07-02 3 views
1

Le WCF de Microsoft est facile à utiliser lorsque vous créez des services Web où chaque message possède sa propre méthode Web. WCF génère tout le WSDL et tout est facile. Ce que je veux faire est d'avoir une méthode Web qui accepte plusieurs messages différents (je ne veux pas ajouter une méthode de mew chaque fois que j'ajoute un nouveau type de message). Les messages eux-mêmes auront des informations d'en-tête qui identifieront le type de message. Une fois que je connaîtrai le type de message, je connaîtrai la structure du reste du message. La seule façon que j'ai trouvé pour faire cela avec WCF est de faire accepter une chaîne par la méthode, que j'analyse 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; Ainsi, l'ensemble du service est essentiellement sans papiers. Quelqu'un sait-il une technique à utiliser dans WCF?Méthode Web WCF acceptant différents types de message

Répondre

2

Vous pouvez écrire un contrat d'exploitation qui accepte tout message en sélectionnant l'action * et ayant-il dans un objet Message:

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

L'objet du message vous donne accès aux en-têtes et a des méthodes pour deserialize le corps.

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

Questions connexes