Как получить данные по частям из сервиса WCF

Я создал приложение.Net, которое позволяет запрашивать журналы IIS некоторых веб-серверов. Приложение вызывает сервис WCF для получения данных. Расположение службы WCF содержит журналы IIS. Служба WCF внутренне вызывает Logparser для файлов журнала IIS и возвращает результат. Есть несколько файлов журнала IIS. Если я запускаю logparser на всех из них за один раз, для возврата требуется много времени, поскольку запрашивается около 30 огромных файлов журнала IIS. Я хочу запустить logparser для каждого из этих журналов IIS один за другим и возвращать результат один за другим.

Я ищу структуру, которая работает над WCF и позволяет извлекать данные по частям из службы WCF. Поэтому я хочу получить результат IISlogfile1, затем IISlogfile2 и так далее. В противном случае пользовательский интерфейс должен будет ждать очень долго, чтобы получить полный результат за один раз.

Знаете ли вы о какой-либо существующей структуре, которая позволяет по частям извлекать данные из службы WCF?

PS: Обходной путь, который я имею, состоит в том, чтобы вызвать службу несколько раз, один раз для каждого файла журнала IIS, пока он не ответит, что все данные отправлены. Но я ищу более чистое решение.

2 ответа

Решение

Этот вопрос кажется очень связанным с вашим сценарием, посмотрите, поможет ли вам ответ Стивена Чена. Суть его ответа в том, что вы можете попробовать дуплексные службы, где сервер может вызвать клиента, когда он завершит обработку каждого файла журнала.

Редактировать:

Также взгляните на платформу SignalR, чтобы установить постоянное соединение между сервером и клиентом, чтобы вы могли отправлять уведомления (в файле журнала вашего дела) с сервера, когда он заканчивает обработку. Пример здесь.

Ну и Сувик басу,

Я не уверен, помогает ли это или нет, но вы можете сделать это так.

Сначала вызовите службу WCF, чтобы узнать количество имеющихся у вас файлов.

Затем внутри цикла вы вызываете службу WCF с именем файла и связываете их с помощью gridview+jqgrid или некоторой асинхронно вызывающей магии.

Таким образом, вы можете прогрессировать и показывать данные асинхронно, и ваша задержка будет меньше. Ваш сервис WCF также будет менее загружен.

Надеюсь, я разъясню свою точку зрения.

Другие вопросы по тегам