1 个不稳定版本
0.1.0 | 2023 年 9 月 28 日 |
---|
#22 在 #solid
7KB
曼纳斯 | Manas
Solid 是一种网页原生协议,旨在实现可互操作、可读写、协作和去中心化的网页,更符合网页的原始愿景。
Solid 在现有网页标准的基础上增加了功能,实现了一个个人可以保持自主性、控制自己的数据和隐私、并选择应用程序和服务来满足其需求的空间。
Manas 项目旨在创建一个模块化框架和生态系统,以创建符合 Rust 中的 Solid 协议 的正确、健壮的存储服务器。
因此,Manas 以模块化方式对 HTTP 和 Solid 协议的许多方面进行了稳健、明确的抽象,并通过良好的模块化方式提供它们。这有助于在领域中实现共享理解,并组装定制的服务器食谱。
⚠️ 注意:尽管大多数功能已实现,架构相对稳定,但其测试套件正在不断发展。许多 DevOps 钟声正在集成,API 正在完善。因此,项目被认为处于 alpha 阶段,直到达到至少 0.5 版本。
默认服务器食谱
对于最终用户,Manas 在 [manas_server] crate 中提供了官方支持的组装服务器。它们支持以下功能:
- 通过 OpenDAL 抽象层支持 Fs/S3/GCS 和其他对象存储作为后端。
- 使用 Solid-OIDC 协议进行身份验证
- 遵循 WAC/ACP 的访问控制
- 支持 n3-patch 的 PATCH 请求。
- 完全支持条件请求、范围请求、内容协商。
- 集成 solid-os 数据浏览器前端。
- 等等。
对于开发者
强烈建议阅读 书籍,以了解 Manas 的架构。
crate 概览
它提供以下 crate:
-
manas_http
:提供处理 HTTP 语义的扩展功能,集成到hyper
生态系统中。- 提供适用于 solid 生态系统的类型化头部的综合列表。
- 提供各种 HTTP URI 的不变量的类型(如绝对、规范等)。
- 定义了与 HTTP 表示相关的 trait 和实现。
- 提供相关算法的条件请求的实现。
- 等等。
-
manas_authentication
:定义了基于 http 挑战-响应认证方案的特质。提供了符合Solid-OIDC
的默认实现。 -
manas_space
:定义了抽象特质,这些特质共同定义了一个符合通用 solid 模型的 solid 服务器的资源空间。 -
manas_repo
:定义了后端存储库及其服务的特质。此特质是支持自定义后端存储库的插件点。 -
mans_repo_opendal
:在 OpenDAL 对象存储抽象层之上提供了默认的存储库实现。通过 OpenDAL,它支持如fs
、s3-compatible
、gcs
、azblob
等后端。同时,它还允许利用其层接口实现重试、跟踪等。通过实现 OpenDAL 的Accessor
,可以连接到任何对象存储后端,而不是重新实现整个存储库接口。 -
mans_repo_layers
:提供了几个分层存储库实现,可以将它们分层在任何存储库上以提供补丁、验证、内容协商等功能。 -
manas_access_control
:定义了与 solid 存储空间兼容的访问控制系统特质。提供了符合ACP
、WAC
授权系统的默认实现。还提供了一个授权分层存储库实现,以便在任意内部存储库上添加授权。 -
manas_storage
:提供了SolidStorage
和SolidStorageService
(存储上的 solid 协议兼容的 http 服务)的特质。还提供了符合 solid 协议的并发安全 http 方法服务的默认、模块化实现。 -
manas_podverse
:提供了定义、服务、配置 solid 容器和容器集的特质(如Pod
、PodSet
、ProvisionablePodSet
等)和默认实现。 -
manas_server
:提供了 solid 服务器的基本配方。 -
manas
:一个包含所有功能的 crate。
除了这些主要 crate 之外,Manas 项目还提供许多实用 crate,以帮助处理 solid 生态系统。
dpop
:Rust 用于 dpop 协议的 craterdf_dynsyn
:Rust 用于在 sophia 之上动态 rdf 解析器和序列化器的 craterdf_utils
:用于处理 Rust 中的 rdf 的实用工具webid
:Rust 用于 webid 的 crate- ...等等。