#wcf
#wcf
Вопрос:
Интересно, есть ли лучший вариант, чем обратный вызов wcf.
При обработке некоторых счетов-фактур данных и их печати мне нужно постоянно показывать пользователю в winform -«Счет-фактура 1 напечатан» счет-фактура 2 напечатан и т.д…. Я собрал механизм обратного вызова, и все работает, но интересно, есть ли лучший способ сделать это.
Думал о том, будут ли 2 службы лучше, чем обратный вызов. Тот, который перебирает счета на стороне сервера и сохраняет в базе данных status =»Printed», а другой запрашивает его и проверяет, было ли оно напечатано, и возвращает пользователю.
Будет ли это лучше, чем обратный вызов, быстрее и избежать тайм-аутов и т. Д.?
Просто подумав в качестве альтернативы, как коллега, который широко использовал обратный вызов, сказал: «Не используйте обратный вызов, используйте 2 службы».
Что бы вы сделали, если бы вам пришлось обрабатывать 2000 счетов-фактур и уведомлять пользователя о каждом из них
Есть предложения?
Комментарии:
1. Не уверен, что вы подразумеваете под «лучше». Я не уверен, почему вы считаете, что две службы лучше, чем использование обратного вызова. Под прикрытием используются в значительной степени идентичные механизмы, просто проще подключить конечные точки. Насколько мне известно, нет фундаментальной причины, по которой он мог бы работать быстрее или вести себя как-то иначе в отношении тайм-аутов. Можете ли вы уточнить? 2000 обратных вызовов были бы довольно тривиальными.
Ответ №1:
В одном проекте мы сделали следующее:
- Все клиенты Windows также размещают службу WCF
- При запуске клиента Windows он регистрируется на сервере, что этот пользователь входит в систему с этим IP-адресом.
- Сервер хранит информацию о том, кто и где вошел в систему
- Тогда мы можем отправить сообщение пользователю, когда захотим
Когда клиент получает сообщение, мы запускаем событие, тогда любая затронутая часть пользовательского интерфейса может обновиться или отобразить сообщение.
Комментарии:
1. Это в значительной степени то, как работает WCF Duplex (обратные вызовы), но с гораздо большим количеством крайних случаев и конкретных деталей. Зачем изобретать велосипед? (и хуже)
2. Нет, это не дуплекс, кроме как по вызову утром, клиенту не нужно совершать никаких звонков.