2010-03-01 10 views
2

Je cherche un cadre approprié pour implémenter le niveau de service (web) dans .NET. Je suis un peu familier avec WCF et je me demande, si elle peut être personnalisée comme je le veux.Utiliser WCF pour implémenter des services selon les normes de l'industrie?

1) Il existe une norme de l'industrie pour les messages à envoyer/recevoir par le système, qui définit les opérations, les types utilisés, etc. Il est basé sur XML. Il exige que toutes les demandes/réponses à envelopper dans une enveloppe, .: par exemple

<xxx:Message> 
    <xxx:Header> 
    //some header data 
    </xxx:Header> 
    <xxx:Body> 
    <xxx:Command> 
     //request data 
    </xxx:Command> 
    <xxx:Command> 
     //request data 
    </xxx:Command> 
    <xxx:Body> 
</xxx:Message> 

L'élément xxx:Command identifie en fait l'opération à effectuer et les paramètres, ou contient le résultat de l'exécution de la commande.
Le WCF encapsule tout dans l'enveloppe SOAP. Peut-il être personnalisé pour envoyer toutes les demandes utilisant l'enveloppe dans l'exemple ci-dessus, au lieu de SOAP? Comment dois-je coder mes services, de sorte que tous les messages sortants et entrants sont correctement analysés. Dois-je regarder aux attributs [MessageContract] ou [DataContract] ou les deux?

2) Opérations unidirectionnelles. La norme de l'industrie stipule que les services doivent répondre avec le message "accusé de réception", que la demande a été reçue. Je regardais les opérations à sens unique, qui mettent en œuvre l'approche similaire - ils notifient le client dès que le message est reçu par le serveur. Je me demande, comment puis-je personnaliser le message "accusé de réception" envoyé pour se conformer à la norme de l'industrie.

Si WCF ne le permet pas, pouvez-vous me transmettre toute autre solution possible - Remoting, peut-être quelques autres bibliothèques de services Web?

+0

Cette «norme de l'industrie» sent bien le SOAP - a-t-elle un nom ?? WCF peut très certainement prendre en charge des appels à sens unique via, par ex. MSMQ - et votre interlocuteur recevra également un message de confirmation - alors pourquoi réinventer la roue encore et encore - pourquoi ne pas simplement utiliser la liaison MSMQ pour WCF? –

+0

Eh bien, c'est le cas, mais WCF génère beaucoup de choses dans le message SOAP envoyé, ce qui ne correspond pas à la documentation standard, donc je me demandais si je pouvais passer outre. Eh bien, WCF prend en charge les appels unilatéraux pour presque chaque liaison, mais ce dont j'ai besoin est de personnaliser le message "accusé de réception". – Warvick

+0

la norme est "GSA S2S Messaging protocole" http://www.gamingstandards.com/index.php?page=standards/free_downloads_standards – Warvick

Répondre

1

1) Aucun attribut ne vous aidera. Ces attributs sont interprétés par la liaison (par exemple, WS-HttpBinding) pour déterminer comment créer réellement vos messages. Vous allez devoir écrire une liaison personnalisée pour ce faire, et éventuellement un sérialiseur personnalisé en fonction de la structure des champs "request data".

2) Encore une fois, vous allez devoir écrire une liaison personnalisée.

Une recherche rapide n'a montré aucune implémentation existante d'une liaison GSA S2S pour WCF.

Il existe des moteurs pour S2S (par exemple S2SConnect). Les coûts de licence peuvent ou non valoir la peine d'avoir à développer votre propre implémentation.

+0

Merci, pour l'explication. D'après les études ultérieures, il a été révélé que la mise en œuvre devrait utiliser du savon comme moyen de transport, de sorte que les messages s2s sont enveloppés dans l'enveloppe de savon. Je n'aurai rien à faire avec la pile WCF - basicHttpBinding ira très bien. Implémenter le protocole s2s signifie alors créer toute la pile pour traiter le traitement des messages XML livrés. – Warvick