Как да направя бърза заявка към файловата система?

Опитвам се да направя запитване до файловата система на отдалечена машина, за да получа списък с имена на файлове в конкретна директория.

Досега използвам класа 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)


Няма да получите по-бърза производителност в мрежата. Вие се борите с латентността на мрежата, както и с всичко, което се случва, за да повлияе на производителността на отдалечената машина (напр. диск io или високо използване на процесора).

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