Con un proyecto reciente, nuestro equipo de desarrollo basado en .Net tiene la tarea de integrarse con una gran cantidad de servicios web basados en Java en todo el mundo, y realmente hemos tenido una gran cantidad de problemas (bueno, ya no nos sorprende). porque el XML generado por WCF no es aceptado por los servicios de Java.
También parece que en realidad no hay tanta buena información para encontrar sobre el tema, hemos recibido algunos buenos consejos del excelente blog WCF de Yaron Nave, http://webservices20.blogspot.com , y también en el foro MSDN WCF http: //social.msdn.microsoft.com/Forums/en-US/wcf/threads .
¿Hay alguien aquí que realmente sienta que entendió esto y conoce el recurso definitivo sobre el tema? Estaría interesado en consejos sobre libros, blogs o cualquier sitio web.
Editar:
No estoy seguro de configurar la respuesta aceptada en este hilo, porque cada una de las dos mejores respuestas tiene algún valor:
1. Probablemente terminemos haciendo más implementaciones de HTTP Webrequest en lugar de luchar contra WCF.
2. Pero el WCF Express Interop Bindings 1.0 también fue un consejo muy sensato.
Respuestas:
Ah sí ... SOAP, el alardeado santo grial de la informática. Una lingua franca que prometía interoperabilidad entre sistemas de todo el mundo.
Y luego entras en las diferencias entre las implementaciones SOAP en Java y PHP y .NET. O incluso entre el servicio SOAP de WebSphere y el cliente SOAP de Apache. No importa tratar con diferentes estándares de compatibilidad WS-I. Ahora, por favor, dígame por qué necesita un estándar de compatibilidad para un protocolo creado para compatibilidad , hablemos de ironía (y me refiero a la verdadera ironía, no a la marca de ironía Alanis Morrissette ).
El único momento en que no se encontrará con problemas para que dos puntos finales SOAP se comuniquen es cuando ambos están en la misma plataforma y, en la mayoría de los casos, la plataforma tendrá un protocolo de operación remota más eficiente.
Lo que digo aquí es que, en su mayor parte, SOAP es inútil. Ahora jabón en minúsculas, lo uso todos los días y estoy agradecido de que la mayoría de la gente haga lo mismo.
Dicho esto, si insistes en golpearte la cabeza contra una pared de ladrillos. Aquí es un buen lugar para comenzar Microsoft tiene un conjunto de enlaces para permitir la interoperabilidad con la mayoría de los principales servidores Java. La parte divertida, por supuesto, es descubrir cuáles funcionan con cuáles de los servicios que está integrando.
fuente
En mi opinión, su observación es bastante precisa. Las implementaciones de alto nivel de comunicación basada en XML es por lo general no es compatible con diferentes plataformas, incluso si son ambos llamados "jabón". Las diferencias sutiles en la implementación, probablemente tanto dentro del alcance del estándar implementado, crean problemas en el uso de la vida real.
Mi recomendación para los proveedores de servicios: use una implementación simple en lugar de una implementación muy compleja y teóricamente mejor. Por ejemplo, no incluya esquemas de autenticación extremadamente complejos si no los necesita.
Mi recomendación para los consumidores de servicios (usted, supongo): cuando se comunique con una implementación de alto nivel en una plataforma diferente a la suya, degrada a una implementación de nivel inferior. De repente, se vuelve bastante simple si simplemente averigua cuál es el XML real para enviar y luego utiliza buenas prácticas de codificación normales para lograrlo, como una alternativa a insistir en usar la implementación de alto nivel de su propia plataforma.
Espero que no haya sido demasiado abstracto. En resumen , cuando está en la plataforma .NET que se conecta a una plataforma Java, es posible que desee simplemente ensamblar los encabezados y xml en una HttpWebRequest y enviarlo de esa manera.
fuente
También tendrá los mismos problemas al consumir servicios web PHP.
Nuestra única respuesta a esto fue cambiar el tipo de protocolo a REST en lugar de SOAP. Nunca conseguimos que SOAP interoperara, ¡tanto por Simple!
fuente