2009-02-18 2 views
0

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

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

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

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

Есть ли у кого-нибудь другие идеи?

ответ

0

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

+0

Если это не очень большая папка, которая будет составлять всего несколько секунд: конечно, менее 10, а не 20-30 +, о которых он жалуется. Если это очень большая папка, то, может быть. –

+0

Проблема не в сети. как Джоэл сказал, что это очень большая папка, и машина перегружена веб-службой, которая возвращает имена файлов для определенного каталога. Я хочу оптимизировать веб-сервис (он не находится на том же компьютере, где находятся файлы), когда он запрашивает файловую систему – rguerreiro

0

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

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

+0

, что является хорошей идеей, но у меня нет контроля на удаленной машине :( – rguerreiro

+0

Достаточно честный, он в любом случае, было немного левого поля. Возможно, в будущем это будет полезно для тех, кто просматривает StackOverflow. –