Предоставлять данные как виртуальные файлы в C# / Виртуальная файловая система / Прокси файловой системы в.NET/C#
Я бы хотел, чтобы данные из моего приложения на C#/.NET были доступны как "виртуальные" (только для чтения) файлы другим приложениям. Возможные варианты использования включают в себя:
- данные должны быть экспортированы (по требованию / по времени) в файл всякий раз, когда клиент получает доступ к файлу. Это исключит ручной или временный экспорт и не даст клиентам увидеть устаревшую информацию
- данные хранятся в виде зашифрованных файлов, и другие приложения должны иметь возможность доступа к простому тексту, который расшифровывается при доступе, при этом клиент не знает об этом или явно не расшифровывает данные заранее. Очевидно, что это будет дополнено соответствующими средствами контроля доступа
Могут быть и другие случаи, но это мои главные триггеры. Обратите внимание, что было бы неплохо, если бы к таким виртуальным файлам также можно было получить доступ / поделиться ими по сети, но это не обязательно.
Другое ограничение (которое, по-видимому, исключает некоторые решения) заключается в том, что для этого не нужно устанавливать какие-либо драйверы устройств - только само приложение, которое работает как служба Windows.
Я посмотрел на несколько вариантов:
- FUSE-подобные реализации, такие как WinFsp и Dokany, которые можно использовать для создания виртуальной файловой системы. Тем не менее, оба решения требуют установки драйвера устройства (например, dokan1.sys) - но я могу ошибаться здесь
- встроенный FTP-сервер (на пользовательском порту), который предоставляет виртуальные файлы. Однако сопоставление ftp-сервера с общим диском в Windows кажется неуклюжим
- встроенный сервер WebDAV, который предоставляет виртуальные файлы. Я не видел простой библиотеки, которая бы мне здесь помогала, библиотеки вроде WebDAV# кажутся слишком большими. Кроме того, отображение WebDAV для управления общими ресурсами в Windows кажется неуклюжим
- встроенный SMB-сервер (например, SMBLibrary) работает, только если "нормальный" общий доступ к файлам отключен, что недопустимо
Ни один из них, кажется, не решает мою просьбу. Я открыт для любых предложений. Обратите внимание, что важно, чтобы другие приложения (например, Блокнот) имели доступ к данным, как если бы это был обычный файл.