#.net #performance #file-io
#.net #Производительность #file-io
Вопрос:
Допустим, у меня есть консольное приложение, которое работает на Machine1. Что происходит в фоновом режиме, если это приложение копирует файл из общего сетевого ресурса на компьютере 2 в общий сетевой ресурс на компьютере 3?
Передается ли это непосредственно из Machine2 в Machine3 или должно проходить через Machine1, поскольку именно оттуда запускается приложение?
Причина, по которой я спрашиваю, заключается в том, что я недавно написал приложение, которое делает это, и для завершения требуется около часа (огромный файл). Когда я разговаривал с человеком, задачу которого я автоматизировал, они сказали, что это завершится примерно через 15 минут, когда они войдут в Machine2 и скопируют в Machine3.
Я использую файл.Метод копирования.
Комментарии:
1. Я скучаю по старым временам Netware с командой
ncopy
, которая копировала файлы непосредственно на сервер или между разными серверами, без передачи данных через клиент … это были времена…
Ответ №1:
Если вы используете Machine1, любая стандартная операция копирования файла должна будет получить данные из Machine2 и отправить их на Machine3 (дважды пройдя по сети). FTP — это единственный известный мне протокол, в котором предусмотрены условия для копирования файлов между двумя серверами с третьего сервера без необходимости третьему серверу отправлять и получать данные.
Ответ №2:
Файл загружается на ваш компьютер, а затем снова загружается на конечный компьютер, да.
Ответ №3:
Я сам этого не пробовал, но одним из способов может быть использование Powershell для вызова небольшого скрипта на Machine1, который копирует файл непосредственно в Machine2.
Существует блог msdn о том, как вызвать PS-скрипт из C #. Если вы объедините это с этой статьей WindowsITPro о том, как вызывать команды удаленно, это может сработать.