Как сделать быстрый запрос к файловой системе?

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

До сих пор я использую класс DirectoryInfo в .NET. Что-то вроде этого:

DirectoryInfo dir = new DirectoryInfo("c:\dir");
FileInfo[] files = dir.GetFiles("*.*");

Но этот запрос отвечает в среднем за 20/30 секунд. Иногда это длится 50 секунд. Это слишком. Я хочу его оптимизировать. После некоторого поиска в Google я обнаружил, что это можно сделать с помощью WMI. Но я не добиваюсь никакого успеха. Я получаю сообщения об ошибках, таких как «Сервер RPC недоступен», и у меня нет доступа для изменения разрешений или служб на этом компьютере.

У кого-нибудь есть другая идея?


person rguerreiro    schedule 18.02.2009    source источник


Ответы (2)


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

person Ken White    schedule 18.02.2009
comment
Если только это не очень большая папка, на которую приходится всего несколько секунд: уж точно меньше 10, а не 20-30+, на которые он жалуется. Если это очень большая папка, то может быть. - person Joel Coehoorn; 18.02.2009
comment
Проблема не в сети. как сказал Джоэл, это очень большая папка, и машина перегружена веб-службой, которая возвращает имена файлов для определенного каталога. Я хочу оптимизировать веб-службу (она не находится на той же машине, где находятся файлы), когда она запрашивает файловую систему. - person rguerreiro; 18.02.2009

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

Я понимаю, что это может не соответствовать вашей архитектуре, но если у вас есть контроль над обеими средами, это может быть шагом вперед?

person Neil Barnwell    schedule 18.02.2009
comment
это хорошая идея, но у меня нет контроля на удаленной машине :( - person rguerreiro; 18.02.2009
comment
Справедливости ради, в любом случае это было немного левое поле. В любом случае, это может быть полезно для тех, кто будет просматривать StackOverflow в будущем. - person Neil Barnwell; 18.02.2009