1

我正在尝试将逻辑从基于实时 .NET 的套接字服务器迁移到基于 RESTful 的 ASP.net Web api。原因是我们的游戏设计发生了变化,我们不再需要对套接字服务器进行任何实时处理。

为了迁移,我需要做以下事情,但我没有使用 Asp.net 的经验,所以希望有人能指出我正确的方向:

1) 在套接字服务器中,当玩家建立连接时,我们将该玩家的所有数据从数据库加载到 Player 类的实例中,例如玩家的库存。我们在服务器端的连接对象上保持这个实例处于活动状态,这样只要 tcp 套接字连接处于活动状态,这个 Player 对象就相当于在内存中保存玩家数据的缓存。但是我不知道将这个 Player 实例放在 Asp.net Web API 中的等效位置,这会是会话状态吗?

2) 游戏有所有连接的客户端都可以使用的静态数据,例如武器造成的伤害。我们将这些数据从数据库加载到服务器应用程序实例上的 StaticData 对象中。在 Asp.net web api 中保存应用程序范围数据的地方是什么?

3)我们不使用 MVC 架构,目前我们在客户端和服务器之间进行通信的方式是我们发出请求(例如出售商品),服务器验证并处理请求,并通过序列化将更新的状态发送回客户端更新后的数据到 object[] 数组中。似乎对于 asp.net MVC,很多事情都是“自动的”,相当于在 asp.net 中执行“向服务器发送请求 -> 服务器进程并发送回更新的状态 -> 客户端反序列化状态” Web API 世界?

4

1 回答 1

0

1)是的,您可以将其存储在Session.

2) 与SessionASP类似Application

3)对不起,但这个问题有点太宽泛了,无法回答。MVC 模式并不神奇,您仍然需要编写代码。您向服务器发送请求。它由控制器处理,控制器可以操作模型,模型进而更新视图,即整个过程的输出。尝试本教程以开始并更好地了解 ASP.net 中的 MVC 模式。

最后但同样重要的是,您应该意识到,如果您将数据存储在Application. 随着您的用户数量级越来越大,您可能希望使用多个 IIS 工作进程运行您的应用程序。这些工作进程中的每一个都有自己的 Application 对象。根据静态数据占用的内存量,您可能会遇到内存问题。您应该考虑使用 memcached、redis 等作为共享缓存。会话数据也是如此。

于 2015-05-29T23:26:06.413 回答