Могу ли я реализовать обратный вызов из службы HTTP на основе WCF для клиента gSOAP c / Linux? - PullRequest
1 голос
/ 19 февраля 2010

У меня есть клиентское приложение Linux / c, которое подключается к веб-службе WCF через HTTP / SOAP (BasicHTTPBinding).Я использую gSOAP.Могу ли я осуществить звонки в веб-сервис с помощью обратного вызова?Я хочу получить данные асинхронно при обратном вызове.

Обновление: я обновил заголовок вопроса.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

WCF поддерживает дуплексные службы или те, которые имеют возможность перезвонить запрашивающему клиенту. Дуплексные услуги могут быть очень сложными, поскольку они не только отслеживают состояние, но и накладывают требование на выполнение контракта для своих клиентов.

Дуплексные службы требуют использования WSDuplexHttpBinding. Вам нужно будет использовать OperationContext, чтобы получить ссылку на канал обратного вызова. Ваши клиенты ДОЛЖНЫ реализовывать контракт обратного вызова в некотором классе и предоставлять InstanceContext, который содержит экземпляр класса обратного вызова для клиентского прокси. Связь в обоих направлениях должна поддерживаться, и, если клиент находится за собственным брандмауэром или через Интернет, решить эту проблему может быть сложно. Будьте внимательны при написании дуплексных служб ... они часто доставляют больше хлопот, чем стоят ... поэтому убедитесь, что они действительно вам нужны. ; -)

Может пригодиться следующая страница:

http://msdn.microsoft.com/en-us/library/ms731064.aspx

1 голос
/ 02 октября 2013

У меня такая же проблема, и я пытаюсь использовать пару серверов / клиентов gsoap. По сути, каждый процесс будет прослушивать порт для мыльных вызовов и делать клиентские вызовы на другой сервер. Таким образом, я избегаю опроса или других сложных подходов. Код должен быть явно ориентирован на многопотоковое исполнение для любой бизнес-логики, но комбо-пара клиент / сервер - самое простое решение, о котором я до сих пор думал.

Очевидно, что нужно контролировать обе стороны решений упомянутого сервера и упомянутого клиента.

1 голос
/ 25 февраля 2010

BasicHttpBinding не поддерживает обратные вызовы.Другой подход может заключаться в том, чтобы иметь другой метод, с помощью которого клиент может запросить ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...