2010-03-12 14 views
5
  1. Es requerido utilizar un servicio REST para poder hacer una llamada ajax a un servicio WCF (por ejemplo: mediante el uso de WebInvoke atributo en la Operación contratos)
  2. Una vez que se realiza un servicio RESTful agregando un enlace webHttp en el host de servicio, ¿puede el host tener otros puntos finales también? (wsHttp o netTcp)
  3. ¿Es requerido que el aspNetCompatibilityEnabled establecer en cierto para un servicio que tiene la unión webHttp (y puede esta coexisten escenario de otros criterios de valoración)
  4. entiendo que puedo utilizar tanto jQuery y ScriptManager de hacer llamadas WCF en el cliente. ¿Por qué debería usar uno sobre el otro?

Respuesta

4

Respuestas


  1. AJAX se utiliza normalmente para el envío de GET HTTP sencilla ("descanso") peticiones. No tiene que ser así. También puede formatear una carga utilizando un sobre SOAP y POST al punto final. En ese caso, el servicio WCF tendría que ser wsHttp o BasicHttpBinding, al menos. Aquí está an example of using VBScript to create and send a SOAP request, pero podría hacer lo mismo en Javascript. No puede usar las extensiones SOAP más avanzadas, como WS-Security, XML DigSig, etc. Bueno, podría, pero sería poco práctico. Por ejemplo, no conozco ninguna biblioteca de canonicalización XML en Javascript, que es esencial para hacer WS-Security o firmas digitales. Hay 17 obstáculos similares. Resultado: no puede usar las extensiones SOAP más avanzadas cuando llama desde JavaScript.
    .
    Si usa jQuery ajax, necesitará usar la devolución de llamada beforeSend en la solicitud ajax para establecer el encabezado SOAPAction.
    .
    Habiendo dicho eso, es mucho más fácil procesar json en un programa de Javascript, que recorrer el DOM de un documento XML. En otras palabras, es mejor que uses JSON/REST cuando te conectes de Javascript a WCF, en lugar de SOAP. A veces no es una opción, supongo.


  2. servicio Un WCF puede tener varios puntos finales y se puede escuchar en el mismo o diferentes transportes como HTTP, net.tcp, net.pipe o net.msmq.

  3. No. aspNetCompatibilityEnabled solo habilita algunas características similares a ASMX en el servidor. Afecta la forma en que se diseña el servicio, y es independiente de la firma del mensaje. Impide el uso de protocolos que no sean HTTP. Para más información sobre esto, vea Wenlong Dong's article.

  4. en cuanto a qué marco usar en el cliente, ¿cuál es más fácil? No tengo experiencia con ScriptManager, pero el criterio de decisión es bastante simple. jQuery funciona bien, y es apropiado si ya usas jQuery. Si no tiene o no quiere jQuery, puede usar XmlHttpRequest para enviar solicitudes SOAP o REST. Si esos son de alguna manera inapropiados, use algo más.

+0

@Cheeso - Si utilizo jQuery en el cliente para hacer una llamada AJAX, supongo que la respuesta para (1) será sí, ya que ahora tengo de usar JSON como la respuesta y esto puede hacerse al aplicar el atributo WebGet y cambiar RequestFormat a Json?¿No sería esto esencialmente convertir este servicio en uno RESTful? – DotnetDude

+0

No. puede usar jQuery ajax y especificar dataType = 'xml', para indicar el tipo de datos que espera del servidor. Si se trata de XML, jQuery no evaluará automáticamente la respuesta como un valor json. – Cheeso

Cuestiones relacionadas