Альтернатива обратному вызову wcf.Есть ли она?

#wcf

#wcf

Вопрос:

Интересно, есть ли лучший вариант, чем обратный вызов wcf.

При обработке некоторых счетов-фактур данных и их печати мне нужно постоянно показывать пользователю в winform -«Счет-фактура 1 напечатан» счет-фактура 2 напечатан и т.д…. Я собрал механизм обратного вызова, и все работает, но интересно, есть ли лучший способ сделать это.

Думал о том, будут ли 2 службы лучше, чем обратный вызов. Тот, который перебирает счета на стороне сервера и сохраняет в базе данных status =»Printed», а другой запрашивает его и проверяет, было ли оно напечатано, и возвращает пользователю.

Будет ли это лучше, чем обратный вызов, быстрее и избежать тайм-аутов и т. Д.?

Просто подумав в качестве альтернативы, как коллега, который широко использовал обратный вызов, сказал: «Не используйте обратный вызов, используйте 2 службы».

Что бы вы сделали, если бы вам пришлось обрабатывать 2000 счетов-фактур и уведомлять пользователя о каждом из них

Есть предложения?

Комментарии:

1. Не уверен, что вы подразумеваете под «лучше». Я не уверен, почему вы считаете, что две службы лучше, чем использование обратного вызова. Под прикрытием используются в значительной степени идентичные механизмы, просто проще подключить конечные точки. Насколько мне известно, нет фундаментальной причины, по которой он мог бы работать быстрее или вести себя как-то иначе в отношении тайм-аутов. Можете ли вы уточнить? 2000 обратных вызовов были бы довольно тривиальными.

Ответ №1:

В одном проекте мы сделали следующее:

  • Все клиенты Windows также размещают службу WCF
  • При запуске клиента Windows он регистрируется на сервере, что этот пользователь входит в систему с этим IP-адресом.
  • Сервер хранит информацию о том, кто и где вошел в систему
  • Тогда мы можем отправить сообщение пользователю, когда захотим

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

Комментарии:

1. Это в значительной степени то, как работает WCF Duplex (обратные вызовы), но с гораздо большим количеством крайних случаев и конкретных деталей. Зачем изобретать велосипед? (и хуже)

2. Нет, это не дуплекс, кроме как по вызову утром, клиенту не нужно совершать никаких звонков.