【发布时间】:2015-05-29 21:54:30
【问题描述】:
我正在尝试将逻辑从基于 .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 世界?
【问题讨论】:
-
如果您尝试更新旧的基于套接字的应用程序,而不是 WebAPI,您实际上可能正在寻找 SignalR。
-
感谢您的建议-我们之所以要使用web api是因为我们不再需要实时通信的功能,所以我们认为RESTful是最好的方式?
-
在处理 REST 时要记住的是,它是有目的的无状态的。这不仅仅是在 Microsoft 实现中,它是适当 REST API 的核心属性。在正确开发的 REST API 中,
PUT和POST将是幂等的,GET将是无效的,根本不做任何更改。
标签: c# asp.net asp.net-mvc sockets photon