Файловая система на основе http с поддержкой поиска и блокировки
-
13-09-2019 - |
Вопрос
Я создаю приложение, которое должно использовать веб-сервер как файловую систему.В частности, идеальным решением было бы:
- Серверный компонент, который позволяет через HTTP открывать (блокировать), читать, записывать, искать и усекать один файл.Мне нужно иметь возможность блокировать несколько файлов одновременно.Мне нужно, чтобы это работало на любом из стандартных веб-хостов, поэтому оно должно работать поверх IIS или Apache, используя сценарии на стороне сервера (веб-службы, PHP и т. д.).
- Клиентский интерфейс, которому я передаю URI, и он открывается и действует как файл.Мое клиентское приложение создано на .NET, поэтому в идеале клиентский API должен реализовывать подкласс FileSteam.
Причина, по которой мне это нужно, заключается в том, что у меня есть довольно большие файлы, которые будут храниться на веб-хостинге.Мне нужно прочитать части файлов (с помощью поиска), обрезать и добавить в конец.Загрузка и выгрузка всего файла требует слишком много трафика.Кроме того, мне нужно заблокировать несколько файлов одновременно.
Мои вопросы:
- Существует ли такое?
- Если нет, то почему?Вам не кажется, что это очень полезная услуга?
Похоже, что такой компонент позволит мне использовать любую веб-хостинговую компанию в качестве сетевого файлового сервера.Это кажется полезным, не так ли?
Спасибо за вашу помощь!
Эрик
Решение
Кажется, то, что вы ищете, это ВебДАВ сервер.
Другие советы
Длинная версия
Веб-хосты изначально были предназначены для отправки контента пользователю по индивидуальному соединению.Сама концепция сессий – относительно современное явление (ключевое слово:относительно) — большинство из которых представляют собой просто методы отслеживания отдельных соединений одного и того же пользователя.Чаще всего это просто дает впечатление что вы по-прежнему подключены к серверу, хотя на самом деле вы подключались, загружали, отключались — и делаете одно и то же подключение/загрузку/отключение каждый раз, когда выполняете какое-либо действие.
Такие вещи, как WebDav, которые являются дополнениями к стандартному диалоговому окну HTTP, которые позволяют специально разработанному программному обеспечению осуществлять более сложную связь через HTTP с сервером.Очень часто WebDav используется в Subversion, iCal (поддержка календаря) и т. д. — они позволяют одиночное соединение выгрузка данных.
Вы говорите о службе файловой системы на основе сеансов.Хотя кажется, что это была бы хорошая услуга, я подозреваю, что она не была реализована из-за явной сложности и опасности, перевешивающей преимущества.Например, такому сервису придется не только беспокоиться о стандартных проблемах файловой системы (авторизация, права доступа к файлам, блокировка, тайм-ауты и т. д.), но теперь также придется беспокоиться о сложностях пребывания в сети (аутентификация, отслеживание сеансов, отключения, повторные атаки, DDoS и т. д.).Например, что произойдет, если клиент заблокирует файл, а затем отключится от сети?Файл остается заблокированным до перезагрузки сервера?Если нет, то когда вы автоматически разблокируете файл?Что произойдет, если сработает автоматическая разблокировка и исходный шкафчик снова появится в сети?Вы заставляете все делать в одном соединении, чтобы компенсировать это?Что произойдет, если они отключатся в середине сеанса?
Это всего лишь несколько вещей, о которых вам следует беспокоиться.Я болтал гораздо дольше, чем собирался, но суть в том, что...
Укороченная версия
Вы, конечно, можете использовать WebDav для реализации этого, что потребует от вас создания серверной библиотеки.Однако, хотя это и не невозможно, вас ждет мир страданий, как и было задумано.Я бы предложил упростить его конструкцию, чтобы вам не требовалось, чтобы он действовал как файловая система.