领域平台
当我们首先开始谈论Realm Platform时,我们需要关注Realm数据库提供的功能,realm是我们可以在本地存储和获取数据的地方,当记录被更改并需要手动更新到服务器时,这是一项繁琐的工作。
由于每个人都需要实时数据,因此Realm Platform进入解决方案,因为即使一秒钟的延迟数据也被标记为过时,Realm Platform是实时同步的解决方案,并提供身份验证和更多功能。
让我们开始吧…
Realm平台是基于noSQL的服务器和客户端组件的组合,这些组件通过快速高效的同步协议进行连接,以启用实时的,已连接的应用程序,响应迅速且性能与网络状态无关的服务。
领域平台具有两个主要组件。
- 领域数据库
- 领域对象服务器
这两个组件协同工作以自动同步数据。
领域数据库
Realm数据库嵌入在客户端上,是一个功能齐全的,面向对象的跨平台数据库,可将数据持久存储在设备上
Realm数据库是轻量级且高性能的,能够处理非常大的数据负载并在几分之一秒内运行查询。 它基于共享的活动对象,无需编写网络,序列化或对象关系映射代码,即可与Realm Object Server无缝无缝地实时同步数据。
领域对象服务器
Realm的统一数据模型扩展到Realm对象服务器,该服务器在设备上镜像Realm数据库。 它充当移动应用程序体系结构中的中间件组件,并管理数据同步,事件处理以及与旧系统的集成。 Realm Object Server可以实时高效地同时在许多设备上同步数据,并自动解决冲突。
首先,我们需要安装Realm Object Server
要托管Realm对象服务器,这些是受支持的操作系统
- macOS 10以上
- Ubuntu 16.04以上
- RHEL 6+
- CentOS 7以上
端口要求
领域对象服务器利用TCP上的Web套接字连接来同步数据。 这意味着您将需要确保防火墙允许通过ROS配置为使用的任何端口进行TCP通信。 默认情况下,这是用于HTTP流量的端口9080 。
快速开始安装
curl-s https://raw.githubusercontent.com/realm/realm-object-server/master/install.sh | bash
手动安装
// Ubuntu 16.04(64位;不支持32位)
//建议您以普通用户身份安装服务器。
sudoapt获取更新
sudoapt-get install build-essential libssl-dev
sudoapt-get安装python
curl-o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash
//强制当前会话知道更改或注销并重新登录
来源〜/ .profile
nvm安装--lts
npm install-g node-gyp
npm install-g领域对象服务器
启动服务器
首先通过执行以下命令行工具创建新的ros实例
ros init我的应用
这将为您创建一个基于Typescript的Node项目。 稍后,您可以探索对其进行自定义,但是现在,只需通过以下方式使用默认值启动服务器即可:
从项目文件夹的内部,您需要打开索引文件,该文件可以在src/index.ts
找到。您需要粘贴功能标记,如下所示:
- 在此处添加您的功能令牌
您需要注册Realm对象服务器后,将在电子邮件ID上获得Feature令牌 。
从'realm-object-server'导入{BasicServer,FileConsoleLogger}
从“路径”导入*作为路径
constserver =新的BasicServer()
server.start({
// ..
featureToken:'',
// ....
})
2.启动服务器
cd my-app /
npm开始
升级开发中的服务器
#在@之后指定特定版本
npm install realm-object-server @ latest
什么是境界?
领域是领域移动数据库容器的实例。 领域可以是本地的,同步的或内存中的。 实际上,您的应用程序可以以任何相同方式与任何Realm一起使用。 内存领域没有持久性机制,只能用于临时存储。 同步的Realm使用Realm Object Server透明地将其内容与其他设备同步。 当您的应用程序继续像本地文件一样继续使用同步的Realm时,该Realm中的数据可能会被具有对该Realm写入权限的任何设备更新-因此,该Realm可能代表聊天应用程序中的一个频道,例如,由该频道中的任何用户更新。 或者,它可能是购物车,只能由您拥有的设备访问。
领域对象服务器提供身份验证
认证方式
领域对象服务器中的中心对象是领域用户( SyncUser
)。 领域用户标识应用程序最终用户,并与服务器的访问控制功能一起使用,以安全地控制同步哪些数据。
Realm平台提供了内置的身份验证提供程序,该身份验证提供程序支持用户名/密码 , 昵称和匿名登录进行开发。
用户名/密码认证
为了协商用户名/密码认证,必须在服务器中定义一个有效的用户名/密码对,或者如果要注册用户,请将注册标志设置为true。
服务器网址
要进行身份验证,您必须提供服务器URL。 这是服务器的基本URL,例如
https://myinstance.cloud.realm.io
或http://127.0.0.1:9080
让auth_url = URL(string:“ https://myinstance.cloud.realm.io”)!
let creds = SyncCredentials.usernamePassword(用户名:“用户名”,密码:“密码”,注册:false)
SyncUser.logIn(with:creds,server:auth_url,onCompletion:{[weakself](user,err)in
如果让_ =用户{
//用户已登录
} if let error = err {
fatalError(error.localizedDescription)
}
}
更改密码
let newPassword =“ ”
user.changePassword(newPassword){(错误)在
如果让错误=错误{
// 有些不对劲
}
//否则,密码已成功更改。
}
管理员用户可以更改其他用户密码
let newPassword =“箭鱼”
adminUser.changePassword(newPassword,forUserID:“ ”){(错误)在
如果让错误=错误{
// 有些不对劲
}
//否则,密码已成功更改。
}
现在该使用领域对象服务器了
打开一个领域
打开领域时,您向构造函数传递了一个配置对象 ,该对象定义了如何访问它。 配置对象指定Realm数据库的位置:
- 设备本地文件系统上的路径
- 具有适当访问凭证(用户/密码,认证令牌)的Realm Object Server的URL
- 内存领域的标识符
- 同步类型的可选标识符(如果未指定,Realm将使用基于查询的同步)
因此,打开一个同步的领域可能看起来像这样。 在此示例中,我们假设领域被命名为"settings"
。
//创建配置
让syncServerURL = URL(字符串:“ realms://myinstance.cloud.realm.io/~/Contacts”)!
让config = user.configuration(realmURL:syncServerURL);
//打开远程领域
让境界=尝试! 领域(配置:配置)
//对这个领域所做的任何更改都将在所有设备上同步!
对于安全服务器领域,端点是从领域开始的;对于非安全领域,端点是从领域开始的
每个用户都可以在领域对象服务器中拥有自己的数据库,无论用户指定哪个领域端点,都基于该领域对象服务器对其进行配置。
//针对特定的用户服务器端点
领域:// server_end_point /〜/联系人
//`〜`->这指定登录的用户唯一标识符
//创建gLobal领域端点
realms:// server_end_point / Contacts //非管理员用户无法创建全球范围
领域模型
@objc成员
类联系人:对象{
动态var名称:字符串?
动态var phoneNumber:字符串?
}
func insertNewContact(){
保护让用户= SyncUser.current else {return}
let config = user.configuration(realmURL:“ realm:// localhost /〜/ Contacts”,fullSynchronization:true)
//使用现有的配置对象打开Realm
让境界=尝试! 领域(配置:配置)
//将对象插入领域
尝试! realm.write {
让contact = Contact()
contact.name =“ abc”
contact.phoneNumber =“ 123456789”
realm.add(联系)
}
//获取所有Contact对象
让contactsList = realm.objects(Contact.self)
}
现在已将数据插入本地,现在该检查数据是否已同步到服务器了
查看Realm数据已同步
步骤1:安装Realm Studio工具以查看数据
步骤2:通过提供服务器端点和凭据连接到服务器
步骤3:现在,用户可以查看其数据库端点和所有Realm Object服务器用户。
步骤4:选择用户数据库,然后您可以看到数据已同步到服务器。
现在,您可以从服务器更改数据,它将立即反映在应用程序中。
具有同步功能和授权以及Realm Sync Workers的Realm平台是一个有状态的节点应用程序,用于存储领域,提供数据以同步客户端以及合并更改。