Подходы к управлению файлами на удаленном *NIX сервере из клиентских приложений Windows

Мое клиентское приложение Windows (написанное на C#) работает с удаленной базой данных MySQL, развернутой на сервере *NIX.

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

Любой подход, который я могу придумать, требует развертывания дополнительного сервиса на сервере. Пока что мой фаворит - SFTP*, но есть и другие решения, которые уступают IMO:

  1. Веб-сервис - есть ли? не проводил никаких исследований в этом направлении.

  2. FTP сервер - приносит как минимум все проблемы, связанные с самим протоколом

  3. WebDAV - интересный вариант, учитывая наличие модуля Apache и библиотек.NET

  4. Какой-то специальный скрипт (явно худшее решение)

* Я намерен использовать библиотеку SharpSSH и аутентификацию с открытым ключом для доступа к специальной учетной записи на сервере, которая будет ограничена только операциями SSH

Редактировать: исправил некоторые термины путаницы, благодаря @vartec

3 ответа

Я бы использовал vsftpd на стороне сервера *NIX: он небольшой и простой в настройке, и у меня не было никаких проблем с ним, так как я изначально настроил его около 6 месяцев назад, поэтому он также надежен. Я просто использую обычный FTP, но вы можете использовать SSL с vsftpd, если вы беспокоитесь о безопасности.

На стороне клиента есть эта бесплатная клиентская библиотека FTP с открытым исходным кодом для C#, созданная Дэном на C-SharpCorner.com. Это работает, и его функциональность легко расширить, чтобы делать больше вещей. Например, я добавил функцию для изменения прав доступа к файлам на удаленном сервере.

У SCP довольно ограниченная функциональность. SFTP и FISH дают вам намного больше, чем простой SCP. (обратите внимание, что SFTP не следует путать с FTPS)

Пример реализации SFTP C#.

Преимущество перед другими параметрами - не требуется дополнительная настройка на стороне сервера.

Шпатлевка и Winscp - это все, что вам нужно.

Другие вопросы по тегам