Я разрабатываю сервер API, используя библиотеку ServiceStack для .NET 3.5 (новый опыт для меня), предназначенный для доступа к толстым клиентским приложениям Windows Forms. Когда пользователь нажимает кнопку, которая приводит к запросу REST на сервер, я хотел бы отобразить индикатор выполнения, который показывает ход вызова RPC.Отчет о прогрессе вызова RPC
Мои услуги обычно следуют одна из следующих моделей:
- Клиент посылает в списке идентификаторов, и рассчитывает получить список объектов, один объект за ID. В этом случае процент прогресса можно было бы рассчитать как
(number of objects received so far)/(total number of objects requested)
- Клиент отправляет запрос и ожидает получить список неизвестной длины. На стороне обслуживания мы извлекаем список объектов (из кеша, базы данных, вычисления, что угодно), сериализуем его, а затем записываем сериализованные данные в поток ответов HTTP. В этом случае процент прогресс может быть оценен как
(number of bytes received so far)/(Content-Length of the HTTP response)
В обоих случаях эти списки могут быть довольно долго, и, таким образом, я ожидаю, что они принять нетривиальное количество времени для отправки по сети.
Есть ли способ сделать это, используя ServiceStack's JsonServiceClient
, XmlServiceClient
или любой подкласс ServiceClientBase
в целом? Если нет, то что было бы хорошим способом добиться того, чего я хочу, без лишней дополнительной работы? Я понимаю, что я мог бы написать свою собственную реализацию клиента REST с нуля, но я бы предпочел избежать этого, если смогу.
Похоже, что это будет работать только для Redis, в то время как мне нужно, в общем, применимое решение. – Bugmaster
Речь идет не о работе «за» Redis, а в том, что Redis используется для создания прочных очередей. Как сказал мифц выше, я считаю, что его ответ более тесно связан с тем, что вы описали. – CodeMonkeyKing