BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
15 stars 4 forks source link

我们的 Application 如何更好地实现 file.std.dweb 这样的子协议? #112

Open Gaubee opened 8 months ago

Gaubee commented 8 months ago

能不能做到在不启动窗口的基础上,让程序能实现 file.std.dweb 这样的子协议?

这里给出一些问题以及相关的解决方案推理过程:

  1. 如果让一个 jmm 实现 file.std.dweb 这样的子协议,那么就唤醒了 jmm 这个程序,且不说这个 jmm 会不会作恶。本身启动它对用户的设备来说就是一个不小的资源消耗。
  2. 我们假设任何一个 mm 都是一个独立的程序沙盒,存在静态资源和动态资源两部分, 那么 file.std.dweb 就是针对所有注册模块静态资源的存在,即便这个模块是远程模块(以后简称 rmm)。
  3. 那么就意味着任何一个 mm,背后都有一个两个网关(gateway):
    1. dns.std.dweb 作为动态资源的网关
    2. file.std.dweb 作为静态资源的网关
  4. file.std.dweb 作为静态资源的网关,它与 file.sys.dweb 做深度的联动
    1. file.std.dweb 可以直接使用某一个 token 来获得一些文件、文件夹的读取能力,这样就可以不走动态网关去启动 mm 就能读取静态资源的内容
    2. file.sys.dweb 是直接面向具体实现的模块,每一个模块,除了向 dns.std.dweb 进行注册,还需要向 file.sys.dweb 注册
    3. 如果是本地模块(以后简称 lmm),向 file.sys.dweb 注册的路径往往是本地操作系统的路径
    4. 如果是远程模块(以后简称 rmm),向 file.sys.dweb 注册的路径往往是 WebDAV/SMB/SFTP 等协议