ネットワーク経由でフォルダーをマウントするアプリケーションを開発しています。SMB によってマウントされたフォルダーと同様に表示されるはずですが、サーバーが SMB プロトコルを使用していないことだけが異なります。これに似ています: サーバー A はファイルを含む HTTP サーバーであり、クライアント B はそれらのファイルをマウントして、最初にダウンロード (ストリーミング) せずに直接アクセスできるようにする必要があります。したがって、クライアントはファイルをストリーミングできる必要があります。つまり、任意の位置でファイルにアクセスできます。また、サーバー A に保存されているファイルは、特定の方法でエンコード、圧縮、暗号化、およびパケット化されているため、仮想ファイル システムに提示する前に、それらをデコードする (内部処理を行う) 必要があります。クライアントには読み取り専用アクセスが必要です。Windows と Linux でクライアントを利用できるようにしたい。次のようになります。
クライアントはフォルダーをマウントし、1248989 の位置にある /virtualfolder/data.file にアクセスしようとしています。サーバーに保存されているデータは、任意の長さのブロックに分割されます (1 メガバイトとしましょう)。次に、バイト 1000000 ~ 1999999 に対応するファイルの一部をダウンロードし、デコードしてキャッシュし、ユーザーがこのデータにアクセスできるようにする必要があります。
もちろん、デコード プロセスは内部で行われます。必要なのは、ファイルの名前とサイズを表示し、ユーザーがアクセスできるようにする仮想フォルダー (またはファイル システム) を OS 上に作成するための API だけです。
次のようになります: [OS] <-virtual filesystem API-> [Client] <-some protocol-> [Server]
ファイルへのアクセスは次のようになります。
[OS] /vfs/somefile.tar ファイルから 0-255 バイトを取得したい
[クライアント] サーバーのファイル /vfs/somefile.tar からブロック 0 ~ 999999 を取得しています。これはブロック B5F997084DC8687 に対応します。B5F997084DC8687 をダウンロードしてデコードします。
[クライアント] 0 ~ 255 の /vfs/somefile.tar です。
[OS] /vfs/somefile.tar ファイルから 256 ~ 511 バイトを取得したい
【クライアント】B5F997084DC8687に該当します。このファイルは既にダウンロードされ、キャッシュされています。
[クライアント] 256-511 の /vfs/somefile.tar です。
かなり簡単だと思います。そのようなもののための簡単な API はありますか?