如何将 .net 套接字服务器中的现有代码迁移到 Asp.net REST web api?

How do I migrate existing code inside a .net socket server into Asp.net REST web api?

我正在尝试将逻辑从基于实时 .NET 的套接字服务器迁移到基于 RESTful 的 ASP.net 网络 api。原因是因为我们的游戏设计改变了,我们不再需要用套接字服务器做任何实时的事情。

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

1) 在套接字服务器中,当玩家建立连接时,我们将该玩家的所有数据从数据库加载到玩家 class 的实例中,例如玩家的物品栏。我们在服务器端的连接对象上保持此实例处于活动状态,以便只要 tcp 套接字连接处于活动状态,此 Player 对象就可以充当内存中保存玩家数据的缓存。但是我无法弄清楚将这个 Player 实例放在 Asp.net Web API 中的等效位置,这会在会话状态吗?

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

3) 我们不使用 MVC 架构,目前我们在客户端和服务器之间通信的方式是我们发出请求(比如销售商品),服务器验证并处理请求,然后将更新后的状态发回通过将更新后的数据序列化到一个对象 [] 数组来发送给客户端。 asp.net MVC 似乎有很多东西是 "automatic",而在 asp.net 网络 api 世界中做 "send request to server -> server process and sends back updated state -> client deserializes the state" 有什么等价物?

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

2) 类似于Session,ASP有Application.

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

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