每分钟从API获取数据到我的服务器
本文关键字:我的 服务器 数据 获取 API 每分钟 | 更新日期: 2023-09-27 18:25:42
这里有一个API服务器,它可以给我实时的消息:每分钟都会有新的东西要检索。还有我的网页,里面有一个Javascript,它会要求API每分钟获取一次新闻。
这不好。。。除非我的网页是为一个用户制作的,并且一次只能在一台机器上打开(互联网不是这样)。API实际上限制了我每分钟可以调用的次数:假设如果我每分钟调用超过1次,API将禁止我。如果100个用户将加载我的网页,API每分钟将收到100个调用(!!!)。
由于流程是我的网页>>调用>>API,我认为如果不插入另一个从API服务器惰性加载的节点,就没有解决方案。
我的网页>>呼叫>>我的服务器>>每分钟呼叫>>API
由于我的网页实例可能很多,而我的服务器只是一个,我认为这就是解决方案。
然而,我不知道是否:
a) 这是正确的解决方案吗?或者,我可以在不需要中介服务器的情况下以某种方式使我的网页正常运行吗?
b) 如何在ASP.NET MVC4中实现此功能?是否支持服务器端计时器?
c) 即使我可以让IIS每分钟检索一次数据,我是否应该将其存储在数据库中以提供给我的网页?
d) 我所说的api服务器是时报新闻通讯社api。如果有人使用过类似的API,你真的创建了一个域模型、一个数据库表、一个服务和一个例程来从中检索数据吗?还是你只是在我的网页上写了一些javascript代码?如果你有数以百万计的用户怎么办?
您可以为此目的使用SignalR,这是一个通过使用套接字工作的推送服务,因此可以配置为向1000000个侦听器发送一条消息(或者更明显)。
我在去年创建一个小原型游戏时使用了这个功能,并发现它非常可靠。您可以在vs2010和vs2012中使用NuGet获取包。
请参阅Asp.net SignalR,查看示例或简单地搜索SignalR即可找到大量示例。
如果我每分钟呼叫次数超过1次,API将禁止我使用
然后你需要一个解决方案,每分钟为你调用API并将其存储在你的服务器上。有很多方法可以做到这一点,这取决于许多要求。您甚至可以编写一个静态HTML文件,然后将其显示给客户端。
您应该从服务器端调用API。每分钟提取一次到您的数据库中。然后通过示例中的restful服务将其从数据库中提供给用户。ASP.NET MVC 4可以实现这一切。
是的,它确实有一个定时器。您可以签出Timer类。
使用此解决方案,您不必与API限制作斗争。
A)最好的解决方案可能是使用web服务器作为API 的中间
B) 有很多可能性可供选择。最简单的方法是在web应用程序启动时(即在Global.asax OnApplicationStarted
事件中)启动一个新线程,并让该线程轮询外部API并存储结果以供客户端获取。如果你想完全控制这个后台进程的生命周期,另一个选择是创建一个windows服务,并在其中托管一个WebAPI,你的客户端可以连接到它
当然,这些只是建议。
C) 这取决于您是否希望您的客户端能够访问最新的提取数据,即使后台进程失败并且数据很旧。否则,您可以将其存储在某个静态字段中。只要应用程序没有终止,静态字段就会保持其值。