Próbuję zrozumieć, w jaki sposób mogę użyć protokołu SOAP lub XML-RPC do utworzenia zdalnego, otwartego interfejsu API dla mojego produktu. Problem polega na tym, że część mojego API będzie wymagać ode mnie przesyłania zdarzeń z serwera do klienta - będę musiał "wysyłać wywołania zwrotne", a nie tylko "wywoływać funkcję" jako część mojego API . Czy można to zrobić w SOAP lub XML-RPC?Implementowanie wywołania zwrotnego w XML-RPC lub SOAP
Odpowiedz
Istnieją dwa sposoby tworzenia powiadomień w systemie RPC: model wypychania i model wyciągania. W modelu pull klient okresowo wysyła zapytanie do serwera, czy są dostępne powiadomienia. Serwer musi je przechowywać, dopóki klient ich nie pobierze (lub do momentu wygaśnięcia). W wariancie klient może mieć blokujące wywołanie RPC, które blokuje dostęp do następnego zdarzenia, a następnie natychmiast je zwraca. Działa to dobrze z CORBA, ale nie działa tak dobrze z SOAP lub XML-RPC, ponieważ implementacje HTTP zazwyczaj nie są przygotowane na pozostawienie otwartego połączenia przez wiele godzin.
W modelu wypychanym producent wywoła RPC na kliencie, czyniąc konsumenta serwerem. To też nie działa zbyt dobrze z SOAP lub XML-RPC, ponieważ klient zazwyczaj nie jest przygotowany do przejęcia roli serwera, a zapory mogą uniemożliwić uzyskanie połączenia zwrotnego. Okresowe przyciąganie jest zatem najbardziej realistycznym podejściem.
P.S. być może zauważyłeś, że nie podążałem za twoją terminologią: nie możesz wcisnąć zdarzeń. Wydarzenie to coś, co się dzieje. Możesz przesłać tylko powiadomienie, które jest informacją, że zdarzenie miało miejsce.
Możesz to zrobić za pomocą WCF. Jednak nie wiem, czy można to zrobić w sposób interoperacyjny. Zajrzyj do Duplex Services.
OK, w końcu podjęto decyzję, aby oddzwonić do funkcji API, które nie powracają natychmiast.
Zasadniczo zostanie wysłane żądanie RPC-XML z prośbą o powiadomienie o podanej liście zdarzeń. Nasz serwer będzie czekał, aż dojdzie do jednego z wydarzeń, a następnie zgłosi go z powrotem jako odpowiedź lub limit czasu po określonym czasie, powiadamiając, że nic się nie stało. Dzwoniący będzie mógł spróbować wysłać żądanie ponownie, aby kontynuować czekanie.
- 1. Architektura wywołania zwrotnego usługi SOAP w sieci Web?
- 2. Testowanie wywołania zwrotnego http lub webhooków
- 3. Uzyskiwanie wywołania zwrotnego w Clojure
- 4. AttributeError w funkcji wywołania zwrotnego
- 5. Jak uniknąć piekła wywołania zwrotnego w Javie?
- 6. Funkcja wywołania zwrotnego ajax timeout
- 7. SOAP wywołania MTOM z Python
- 8. Brak wycieku pamięci wywołania zwrotnego w javascript
- 9. Wyznaczanie obiektu wywołania zwrotnego w stylu C?
- 10. Lepsze zrozumienie funkcji wywołania zwrotnego w JavaScript
- 11. Jak przekazywać funkcje wywołania zwrotnego w Swift
- 12. Obserwowalne dla wywołania zwrotnego w Rx
- 13. Interfejs wywołania zwrotnego WCF - kto zamyka kanał
- 14. jak używać XMLRPC w C#
- 15. Jquery lazyload funkcja wtyczki i wywołania zwrotnego
- 16. Czy źle jest śledzić zmienne wywołania zwrotnego?
- 17. Funkcja wywołania zwrotnego Asio nie jest wywoływana
- 18. Jak samodzielnie przetestować metodę wywołania zwrotnego modelu?
- 19. jQuery AJAX lub wyzwalacz wywołania żądania XHR fail callback z wykonanego wywołania zwrotnego
- 20. Wywołanie funkcji wywołania zwrotnego po zingChart.render()
- 21. Jak zaimplementować funkcje wywołania zwrotnego wielokrotnego użytku
- 22. DotNetOpenAuth.WebServerClient.XSRF-Zmiany sesji podczas wywołania zwrotnego
- 23. Github oauth wielokrotnej autoryzacji wywołania zwrotnego URL
- 24. Korzystanie z funkcji wywołania zwrotnego anonimowego funkcji
- 25. node.js, metoda wywołania zwrotnego setTimeout i "to"
- 26. Jak przekazać argument do wywołania zwrotnego child_process.exec
- 27. Podkreślenie _.dla wywołania zwrotnego po zakończeniu?
- 28. Kotlin używa interfejsu wywołania zwrotnego Java
- 29. ustawienie argumentu dla funkcji wywołania zwrotnego Pythona
- 30. notification.confirm funkcja wywołania zwrotnego o nazwie zawsze
Oznacza to, że w zasadzie pozostaje mi okresowa aktualizacja, która jest nieco marnotrawna pod względem zasobów. Dzięki za odpowiedź –