2010-03-12 4 views
5
  1. est-il nécessaire d'utiliser un service RESTful pour être en mesure de faire un ajax appel à un service WCF (par exemple: en utilisant WebInvoke attribut sur l'opération contrats)
  2. Une fois qu'un service est rendu RESTful en ajoutant une liaison webHttp sur l'hôte de service, l'hôte peut-il également avoir d'autres points de terminaison? (wsHttp ou netTcp)
  3. Est-il nécessaire que le aspNetCompatibilityEnabled être défini sur true pour un service qui a webHttp la liaison (et cela peut coexiste de réglage pour d'autres paramètres)
  4. Je comprends que je peux utiliser les deux JQuery et ScriptManager pour faire des appels WCF sur le client. Pourquoi devrais-je utiliser l'un sur l'autre?

Répondre

4

Réponses

  1. n °
    AJAX est généralement utilisé pour envoyer des requêtes GET HTTP simple ("REST"). Cela n'a pas à être ainsi. Vous pouvez également formater une charge utile à l'aide d'une enveloppe SOAP et l'envoyer au point de terminaison. Dans ce cas, le service WCF doit être au moins wsHttp ou basicHttpBinding. Voici an example of using VBScript to create and send a SOAP request, mais vous pourriez faire la même chose en Javascript. Vous ne pouvez pas utiliser les extensions SOAP plus avancées, telles que WS-Security, XML DigSig, etc. Eh bien, vous pourrait mais ce serait impraticable. Par exemple, je ne connais pas de bibliothèque de canonisation XML en Javascript, ce qui est essentiel pour faire des signatures WS-Security ou numériques. Il y a 17 obstacles similaires. Résultat: vous ne pouvez pas utiliser les extensions SOAP plus avancées lors de l'appel à partir de Javascript.
    .
    Si vous utilisez jQuery ajax, vous devrez utiliser le rappel beforeSend sur la requête ajax pour définir l'en-tête SOAPAction.
    . Cela dit, il est beaucoup plus facile de traiter json dans un programme Javascript que de parcourir le DOM d'un document XML. En d'autres termes, il vaut mieux utiliser JSON/REST lors de la connexion de Javascript à WCF, au lieu de SOAP. Parfois, ce n'est pas une option, je suppose.

  2. Oui
    Un service WCF peut avoir plusieurs points d'extrémité et ils peuvent écouter sur les transports identiques ou différents, tels que HTTP, net.tcp, net.pipe ou net.msmq.

  3. Le numéro aspNetCompatibilityEnabled permet simplement certaines fonctions de type ASMX sur le serveur. Cela affecte la conception du service et est indépendant de la signature du message. Cela empêche l'utilisation de protocoles non HTTP. Pour plus à ce sujet, voir Wenlong Dong's article.

  4. comme cadre à utiliser sur le client - ce qui est plus facile? Je n'ai pas d'expérience avec ScriptManager, mais les critères de décision sont assez simples. jQuery fonctionne très bien et est approprié si vous utilisez déjà jQuery. Si vous n'avez pas ou ne voulez pas jQuery, vous pouvez utiliser XmlHttpRequest pour envoyer des requêtes SOAP ou REST. Si ceux-ci sont inappropriés, utilisez autre chose.

+0

@Cheeso - Si je JQuery sur le client pour faire un appel AJAX, je suppose que la réponse pour (1) sera oui, puisque je dois maintenant utiliser JSON comme la réponse et cela peut être fait être en appliquant l'attribut WebGet et en modifiant RequestFormat à Json?Cela ne ferait-il pas essentiellement de ce service un service RESTful? – DotnetDude

+0

Non, vous pouvez utiliser jQuery ajax et spécifier dataType = 'xml', pour indiquer le type de données que vous attendez du serveur. S'il s'agit de XML, la réponse ne sera pas automatiquement évaluée en json par jQuery. – Cheeso

Questions connexes