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的值类型(NSNumber,NSArray,…).
因此,假设Linux版本的Swift不会出现Linux兼容的Foundation发行版,在Linux上使用Realm需要Realm的“纯粹”Swift绑定,这是不可能的,另一种是Objective-C绑定,这避免了基金会,或基金会的成熟替代实施,其中GNUstep可能是候选人,但这完全未经我们的测试.
更新#1
Swift与Open的API的Swift实现存根一起开源,作为OS API的垫片,因此它可以在Linux和其他没有Apple Foundation的平台上可移植地使用.从那时起,该存根被项目的贡献者实际实现,并且是Swift 3版本的一部分,因此它可以用于纯Swift项目.
然而,这并不能解决一般问题,即Realm Swift不是纯粹的Swift,而是基于Realm Objective-C.所以它依赖于Objective-C运行时和Foundation的可用性.
更新#2
我们最近宣布了Realm Mobile Platform,您可以在本地或公共云上运行.因此,这确实可以在Linux上使用Realm.但到目前为止,Enterprise Edition上的服务器端访问仅受Node.js绑定的支持.