Estoy tratando de comprender cómo puedo usar SOAP o XML-RPC para crear una API abierta y remota para mi producto. El problema es que parte de mi API requerirá que pueda enviar eventos desde mi servidor al cliente. Tendré que poder "enviar una devolución de llamada" y no solo "llamar a una función" como parte de mi API . ¿Hay una buena manera de hacerlo en SOAP o XML-RPC?Implementación de una devolución de llamada en XML-RPC o SOAP
Respuesta
Hay dos formas de hacer notificaciones en un sistema RPC: el modelo push y el modelo pull. En el modelo de extracción, el cliente consultará periódicamente al servidor si hay notificaciones disponibles. El servidor necesita almacenarlos hasta que el cliente los recupere (o hasta que caduquen). Como una variante, el cliente puede tener una llamada RPC de bloqueo que bloquea hasta que el próximo evento esté disponible, y luego regresa de inmediato. Eso funciona bien con CORBA, pero no funciona tan bien con SOAP o XML-RPC, ya que las implementaciones HTTP generalmente no están preparadas para dejar una conexión abierta durante horas.
En el modelo push, el productor invocará un RPC en el consumidor, convirtiendo al consumidor en un servidor. Eso tampoco funciona muy bien con SOAP o XML-RPC, ya que el cliente normalmente no está preparado para asumir el rol de servidor, y los firewalls pueden evitar que la devolución de llamada se complete. Entonces, la atracción periódica es acerca del enfoque más realista.
P.S. Es posible que haya notado que no seguí su terminología: no puede presionar eventos. Un evento es algo que sucede. Solo puede presionar la notificación, que es información de que ocurrió un evento.
Puede hacerlo con WCF. Sin embargo, no sé si puedes hacerlo de una manera interoperable. Mire en Duplex Services.
Ok, finalmente, la decisión tomada fue tratar las devoluciones de llamadas como API que no regresan de inmediato.
Básicamente, se enviará una solicitud RPC-XML, pidiendo que se le notifique en una lista dada de eventos. Nuestro servidor esperaría hasta que ocurriera uno de los eventos y luego lo informaría como respuesta o tiempo de espera después de un período de tiempo determinado, notificando que no sucedió nada. La persona que llama podrá intentar enviar la solicitud nuevamente para continuar esperando.
- 1. Implementación de devolución de llamada de método en Android
- 2. Implementación de devolución de llamada del suscriptor Pubsubhubbub en PHP
- 3. Implementación de funciones de devolución de llamada en C
- 4. ¿Patrón de observador o devolución de llamada?
- 5. devolución de llamada en C#, orden de llamada y devolución
- 6. DropDownListPara devolución de llamada o declaración if
- 7. $ envío (este) en una devolución de llamada
- 8. Android BroadcastReceiver o método simple de devolución de llamada?
- 9. Implementación de una llamada ajax en clojurescript
- 10. ¿Cómo hacer una llamada SOAP en Go?
- 11. Cómo hacer una llamada SOAP en Java
- 12. Devolución de llamada asincrónica
- 13. Devolución de llamada en C#
- 14. devolución de llamada en android?
- 15. Devolución de llamada polimórfica en Emacs/Elisp
- 16. Depurar llamada SOAP de PHP
- 17. Devolución de llamada en C#
- 18. ¿Cómo debo PHPDoc una devolución de llamada?
- 19. SDK de Dropbox - linkFromController: ¿delegado o devolución de llamada?
- 20. ¿Hay una devolución de llamada para History.pushstate?
- 21. TPL Cómo realizar una 'devolución de llamada'
- 22. Prueba de devolución de llamada http o webhooks
- 23. Capturando una excepción lanzada en una devolución de llamada asíncrona
- 24. Devolución de llamada asíncrona concurrente
- 25. Observadores vs. Devolución de llamada
- 26. Alternativa a Sun Implementación de SOAP SAAJ
- 27. ¿Cómo implemento una devolución de llamada en C++?
- 28. ¿cómo puedo activar la devolución de llamada de error ajax en la devolución de llamada exitosa?
- 29. jQuery remove() devolución de llamada?
- 30. control del repetidor que causa devolución de datos inválida o argumento de devolución de llamada
Esto significa que, esencialmente, me quedan actualizaciones periódicas, lo que es un poco derrochador en términos de recursos. Gracias por la respuesta –