从多人游戏中获取数据库结果

本文关键字:获取 数据库 结果 游戏 | 更新日期: 2023-09-27 18:09:56

我希望你能帮助我,或者至少给我指个方向。所有程序都是用c#编写的,但客户端应用程序可以用任何语言编写,只需要知道用于与服务器通信的tcp协议。

我做了一个服务器应用程序,它包括一个大厅和一个游戏服务器。你可以安装任意多的游戏服务器(实际上,我有三个,只是为了测试,每一个都有不同类型的游戏)。

客户端应用程序连接到大厅进行身份验证和其他小事,并请求游戏…在此之后,它被重定向到适当的游戏服务器。

在游戏过程中处理的所有信息,统计,聊天,…在PostgreSQL数据库中保存(你可以在MySQL, MS SQL中配置)。

现在,玩家想要做一些查询,以获得过去的信息,或统计数据,或任何…我的问题是

我是否应该让玩家直接查询数据库,我的意思是从数据库服务器获取结果(发送相应的存储过程命令来获取结果)?

或者(由于他们通过套接字与大厅服务器保持活跃的连接(另一个与游戏服务器))

我是否接收请求并通过大厅服务器使用永久活动连接套接字发送每个查询的结果?

¿哪一个是最性能甚至是安全的?你能再推荐一个建议吗?

很高兴地说,所有游戏服务器的并发连接数预计在5000 - 10000之间,甚至更多。


。-我忘了提到一些查询可以有很大的结果,我的意思是,500/2000条记录(行)与一些列。-忘了说我在考虑通过套接字设置查询,在服务器中处理和打包查询,并将结果压缩(压缩)发送给播放器。

Thanks in advance

E/R

从多人游戏中获取数据库结果

你绝对不应该让玩家客户端直接向你的数据库服务器提交查询;对于客户端提交的查询,你的游戏服务器应该有自己的协议,"游戏查询服务器"应该在构建实际的SQL之前检查这些查询的安全性。

在任何情况下都不应该直接从用户提交的信息构建查询。

显然,最安全的解决方案是用户不知道SQL-Server,即大厅服务器处理所有连接和通信(假设两个服务器都没有可利用的错误)。此外,您还可以更好地控制安全性的实现,让一个用户(大厅服务器)(很可能在同一域中)只获得他需要的数据库的读取和执行权限。性能& lt;安全性,因此,有关性能的问题实际上并不重要,但性能实际上也是您的实现的问题。