服务器/延迟触发超时

时间:2011-08-17 19:59:17

标签: c# sql-server asp.net-mvc-3

我正在开发asp.net游戏,我需要像延迟触发器(它不存在)或在服务器端运行线程。

二手工具: mssql 2008快递 asp.net mvc3(razor)

简单地说我试图像travian或其他一些网络浏览器游戏那样做游戏,但我坚持攻击。第一个球员需要训练单位。然后他可以挑选敌方玩家并分配攻击单位。然后攻击开始,并且应该评估一段时间后(当单位到达地图上的敌方玩家位置时)。 我不知道如何在这段时间之后调用该方法,即使用户在声明攻击后关闭浏览器也必须调用它。

我发现mssql WAITFOR但它不合适,因为可能存在多个进程(攻击)。

最好的解决方案是,如果我可以在服务器端制作类似工作线程的东西。这将检查是否有任何攻击单位到达敌方玩家并且应该计算战斗。

感谢你的回复

1 个答案:

答案 0 :(得分:0)

我认为您希望安排将在到期时跟踪和执行的作业或任务。您可以从头开始提供解决方案,但这是一个非常常见的问题,因此您可以寻找适合您需求的调度库。例如。看看http://quartznet.sourceforge.net/

要确定具体案例的最佳解决方案,请尝试考虑以下要求:

  • 您是否要保留预定的作业(如果您的服务器重新启动,作业是否能够在重新启动后继续存在)?我认为是的。
  • 您是否需要一个活动的“代理”(进程,线程等)来在到期时自动执行作业(例如,立即发送通知电子邮件),或者是否足以在任何时候执行/评估作业受影响的用户返回并轮询他们的状态(当您为用户执行某些操作时按需执行)。
  • 如果你需要一个活跃的代理,你必须找到一个托管的好地方。它可以是SQL Server代理,也可以是Windows服务。 “代理”也可以存在于Web应用程序中,如果您可以认为Web应用程序始终被玩家“使用”并因此保持活着,或者无论如何这些作业“立即”执行并不重要他们到期了。