我是Realm Xamarin团队的开发人员,所以我可以向您介绍一下Xamarin产品的工作原理。Realm有一个C++核心,适用于所有产品。这就是为什么我们为每个平台发布而不仅仅是一种语言 - 我们需要包括本地核心。虽然我们支持PCL代码的构建,但我们没有类似于“PCL库”的东西 - 在构建时,您的PCL代码将链接到匹配的IOS或Android库。所有Realm产品都是单独开发的,以提供一个特定编程语言的语言习惯接口,并在您的代码和数据之间提供尽可能薄的层次。这意味着,例如,C#产品提供LINQ查询并使用C#对象来定义数据模型。在构建时,运行Fody代码生成器以添加属性setter和getter,因此您的C#对象将直接与核心C++数据交互。与典型的ORM产品不同,没有将数据从数据库复制到缓冲区,再从缓冲区复制到您的对象中。Realm数据是内存映射的,因此它直接从您的代码到存储器。我们生成访问器方法来替换自动属性的getter和setter。我们使用术语"零拷贝"来描述这一点。相比之下,大多数其他系统都将具有支持其属性的字段的C#对象。这些对象通常是通过从已从磁盘存储读取的SQLite缓冲区进行复制而填充的。那就是两个级别的复制。