Оптимальный метод.NET для передачи больших файлов в клиент-серверном приложении с возможностью приостановки и возобновления
Я пишу клиент-серверное приложение.NET WINFORMS, где клиент должен будет иметь возможность передавать большие файлы на клиент, которые размещены на сервере. Я пишу оба конца программного обеспечения, поэтому у меня есть полный контроль над тем, как сделать передачу, но я не знаю, каков наилучший подход.NET.
Сервер будет обслуживать файлы со своего жесткого диска, и он будет знать размер файла. Сервер будет обслуживать только один файл за раз и только одному пользователю за раз. Клиенту нужно будет отобразить скорость и прогресс перевода. Также потребуется возможность приостановить и возобновить передачу. Я также хочу иметь возможность приостанавливать и возобновлять между сеансами - например, я делаю паузу и закрываю клиент, и когда я снова открываю клиент, я могу возобновить передачу.
Мой план состоял в том, чтобы использовать.NET WebClient
( MSDN), но я не знаю, есть ли лучшие способы сделать это. Я знаю, что я не первый человек с такими требованиями, поэтому я не хочу изобретать велосипед. Какие-либо предложения?