我可以在 Linux 上使用 Perfect 上的 Realm 吗?

Will I be able to use Realm on Linux, with Perfect?

Perfect - https://www.perfect.org - 是一种新的 Web 服务器,它允许您在服务器端使用与在设备上相同的语言。它将在今年年底前发布时与 Swift 的 Linux 版本兼容 - 大概是因为它只使用 Swift 的标准库,

它有 MongoDB、MySQL、PostgreSQL 的连接器。

目前,我正在 Swift 中使用 Realm 数据库开发应用程序。我也可以在服务器端使用 Realm 吗?它只使用 Swift 标准库吗?

到目前为止,Realm 为 Cocoa 相关开发提供了两个绑定:Realm Objective-C 和 Realm Swift。后者基于前者和围绕 Objective-C API 的浅层包装器,采用 Swift 标准库中的类型和协议并公开更方便的 API。使用该架构而不是纯 Swift 绑定的原因是 Swift 不允许接口 C++ 代码,但 Realm 的底层存储引擎基于此。 这意味着即使使用 Realm Swift,你也有 Foundation 作为传递依赖,因为我们依赖它,例如RLMObject 使用键值编码,与 KVO 互操作,使用 Foundation 的值类型(NSNumberNSArray、…)。

所以假设 Linux 版本的 Swift 不会有 Linux 兼容的 Foundation 发行版,在 Linux 上使用 Realm 将需要"pure" Swift Realm 的绑定,这还不可能,一个替代的 Objective-C 绑定,它避免了 Foundation,或者 Foundation 的一个成熟的替代实现,其中 GNUstep 可能是候选人,但这完全没有经过我们这边的测试。

更新#1

Swift 与基金会 API 的 Swift 实现存根一起开源,作为 OS API 的垫片,因此它可以在 Linux 以及 Apple Foundation 不可用的其他平台。从那时起,这个存根就被项目贡献者的实际实现所填充,并且是 Swift 3 版本的一部分,因此它可以用于 纯 Swift 项目 .

然而,这并没有解决领域 Swift 是 不纯 Swift 并且基于领域 Objective-C 的一般问题.所以它依赖于Objective-C运行时间和基金会的可用性。

更新#2

我们最近宣布了 Realm Mobile Platform,您可以 运行 本地或 public 云端。所以这使得在 Linux 上使用 Realm 成为可能。但是到目前为止,服务器端访问仅在具有 Node.js 绑定的企业版上受支持。