2009-03-26 8 views
4

Aujourd'hui, je fais la majeure partie de mon travail sur les technologies Microsoft, donc, naturellement, je vérifie ce que WCF a à offrir. Il semble très flexible et une grande prochaine étape à partir de remoting .Net, mais il semble très lié aux messages SOAP et un peu maladroit pour une application de service web agnostique de la plate-forme. Je ne suis pas un expert de la technologie, mais j'imagine que toute cette flexibilité dont ils se vantent signifie que vous pouvez rompre avec les messages SOAP et renvoyer toutes les structures/formats de données que vous voulez. Est-ce vrai ou faux?WCF en tant que service Web avec la charge utile la plus faible possible

La raison pour laquelle je dis cela est que si je voulais vraiment créer une application en tant que service REST, l'une de mes plates-formes cibles serait mobile. Non seulement cela, un objectif important de tout service basé sur le Web est de garder la charge de données faible, que ce soit pour un téléphone mobile à des vitesses d'appel ou une application de bureau complet. Donc, si vous prenez l'API de Twitter par exemple, cela a été incroyablement réussi car vous pouvez demander les données comme JSON sans enveloppes SOAP sophistiquées pesant les données et recevant le plus petit nombre d'octets pour représenter les données que vous voulez . Ainsi, une application mobile s'exécutant sur un périphérique peu connecté consommant les données de Twitter peut utiliser le moins de bande passante possible. En plus de cela, le modèle de Twitter, Facebook, ou l'une des api publiques les plus réussies est une structure de données personnalisée en JSON et/ou XML et non enveloppée dans une enveloppe SOAP (bien que je puisse me tromper ... c'est juste mon impression).

Comment le feriez-vous en WCF? Avez-vous à sauter à travers des cerceaux pour dire à WCF de "retourner ce texte ... ne vous inquiétez pas de l'enveloppe SOAP", ou est-ce une simple option de configuration?

Répondre

2

Il y a plusieurs options de configuration que vous pouvez définir pour enlever le savon de WCF. La solution la plus simple consiste à utiliser WebServiceHost plutôt que la classe ServiceHost habituelle pour héberger vos services. Il définit la plupart des options que vous souhaitez. Justin Smith a un good post that contrasts WebServiceHost and ServiceHost. Bien qu'il semble que vous soyez plus inquiet à propos de l'envoi d'une charge utile POX (plain old XML) que certains principes REST (mappage d'URL et méthodes HTTP), vous trouverez peut-être utile le livre de Jon Flander RESTful .NET. Voici un overview of Chapter 1.

Consultez également le REST Starter Kit de Microsoft, qui contient de nombreux exemples de tâches Web courantes avec WCF.

Et pour répondre à l'autre partie de votre question, j'ai trouvé que l'utilisation de JSON entraîne une charge utile beaucoup plus petite que XML, tout en ayant un support décent au sein de WCF.

+0

Merci ... Je vais probablement prendre une copie du livre que vous avez lié. – Rich

Questions connexes