我一直在研究使用ZODB作为多人视频游戏的持久层。我非常喜欢它与任意面向对象的数据结构的无缝集成。但是,我在一个问题上磕磕绊绊,我无法弄明白,ZODB是否可以为我解决这个问题。
显然,可以使用ZEO的ClientStorage
来访问用于持久性的远程数据存储。虽然在受信任的本地网络中这很好,但如果没有在开放网络中进行适当的授权和身份验证,就无法做到这一点。
所以我想知道,如果有机会用ZODB实现以下概念:
在服务器端,我希望运行ZEO服务器以及可能作为ZEO服务器上的完全授权客户端运行的游戏世界模拟(或使用与ZEO服务器相同的文件存储)。 / p>
在客户端,我需要对ZEO服务器进行非常有限的读/写访问,以便客户端只能查看其用户应该知道的信息(例如,他们的角色的周围区域),并且只能修改与角色可以执行的动作相关的信息。
服务器必须使用某种细粒度的授权方案强加这些限制。因此,我需要能够告诉服务器用户A是否具有读/写对象B的权限。
现在有办法在ZODB或第三方解决方案中解决这类问题吗?或者有没有办法以这种方式扩展ZEO?
答案 0 :(得分:1)
不,ZEO从未被设计用于此类用途。
它旨在用于跨多个进程扩展ZODB访问,而对数据之上的应用程序进行身份验证和授权。
无论如何,我不会将ZEO用于本地网络之外的任何事情。使用不同的协议来处理游戏客户端和游戏服务器之间的通信,而只保留ZODB服务器端。