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

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

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

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

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

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

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

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

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

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


person dolzenko    schedule 13.03.2009    source источник


Ответы (3)


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

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

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

person vartec    schedule 13.03.2009
comment
Спасибо за ваше исправление, я на самом деле имел в виду SFTP, который SharpSSH, безусловно, поддерживает, и это бесплатно :) - person dolzenko; 13.03.2009
comment
Что касается конфигурации сервера - я думаю, что возиться с учетными записями пользователей, закрытыми / открытыми ключами на сервере / клиенте не намного проще, чем настроить, скажем, WebDAV или какую-либо веб-службу. - person dolzenko; 13.03.2009
comment
@dolzenko Верно. Я предположил, что у вас уже есть учетные записи. Если нет, WebDAV может быть хорошим вариантом. - person vartec; 13.03.2009

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

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

person David Grayson    schedule 14.03.2009

putty и winscp - это все, что вам нужно.

person dicroce    schedule 14.03.2009