Подходы к управлению файлами на удаленном *NIX сервере из клиентских приложений Windows
Мое клиентское приложение Windows (написанное на C#) работает с удаленной базой данных MySQL, развернутой на сервере *NIX.
Я собираюсь добавить возможность хранить файлы на сервере. Я никогда не любил хранить файлы в БД, поэтому файлы будут храниться в файловой системе. Приложение должно будет загружать, скачивать и удалять файлы с сервера.
Любой подход, который я могу придумать, требует развертывания дополнительного сервиса на сервере. Пока что мой фаворит - SFTP*, но есть и другие решения, которые уступают IMO:
Веб-сервис - есть ли? не проводил никаких исследований в этом направлении.
FTP сервер - приносит как минимум все проблемы, связанные с самим протоколом
WebDAV - интересный вариант, учитывая наличие модуля Apache и библиотек.NET
Какой-то специальный скрипт (явно худшее решение)
* Я намерен использовать библиотеку SharpSSH и аутентификацию с открытым ключом для доступа к специальной учетной записи на сервере, которая будет ограничена только операциями SSH
Редактировать: исправил некоторые термины путаницы, благодаря @vartec
3 ответа
Я бы использовал vsftpd на стороне сервера *NIX: он небольшой и простой в настройке, и у меня не было никаких проблем с ним, так как я изначально настроил его около 6 месяцев назад, поэтому он также надежен. Я просто использую обычный FTP, но вы можете использовать SSL с vsftpd, если вы беспокоитесь о безопасности.
На стороне клиента есть эта бесплатная клиентская библиотека FTP с открытым исходным кодом для C#, созданная Дэном на C-SharpCorner.com. Это работает, и его функциональность легко расширить, чтобы делать больше вещей. Например, я добавил функцию для изменения прав доступа к файлам на удаленном сервере.