Самый простой способ подумать о моей проблеме - это показать клиенту индикатор выполнения с кнопкой отмены.Мы делаем это сегодня для интеллектуальных клиентов, использующих SignalR, но теперь нам нужно нечто подобное для толстого клиента.
У меня длительный процесс (обычно минута или две, но может занять до часа) намой сервер.Я хочу, чтобы мой толстый клиент мог взаимодействовать с ним двумя способами: 1) я хочу, чтобы сервер отправлял обновления прогресса клиенту, 2) я хочу, чтобы клиент мог отменить процесс.Есть, конечно, несколько способов сделать это.На самом деле, я сделал это несколькими способами сам.Так что я не ищу конкретно решение.Я пытаюсь понять, какой из них будет лучшим выбором технологии, зная направление Microsoft (и отрасли) в будущем.
Вот три возможности, которые приходят на ум (не стесняйтесь добавлять больше):
- Традиционный WCF (эмуляция даже более старого «Remoting»): хороший выбор (и, вероятно, мой выбор по умолчанию), за исключением того, что похоже, что MS не будет поддерживать WCF в .NET Core на сервере (кроме открытогоисходные библиотеки сообщества).
- Azure Service Bus с использованием очередей или тем: работоспособный и отказоустойчивый, но, возможно, немного более сложный / трудоемкий для реализации.
- gRPC: кажется, этоВ каком направлении MS нам следует заменить WCF / Remoting, но это все еще только в превью?
Мысли?Мнения?
Спасибо!
PS Если вы можете придумать какие-нибудь другие хорошие места, чтобы задать этот вопрос, пожалуйста, дайте мне знать.