0

我想为我的 android 手机创建一个天气应用程序,但现在我被困在应用程序的后端部分。

我找到了一个气象服务,我可以通过他们的网络服务免费获取某个位置的详细信息。但是他们在他们的规则中已经声明不允许我频繁地轮询他们的服务。所以我想我可以自己创建一个网络服务,从我找到的气象站检索天气信息,然后通过我的网络服务使其可用,这样我的应用程序就只调用我的服务。

沟通将如下所示

MyApp <--> MyWebService <--> 商业网络服务

android 应用程序与 MyWebService 对话。我的网络服务与商业服务对话。

所以我想让 MyWebService 做一些事情。

  1. 每小时从商业网络服务中检索一次信息并更新我的数据库
  2. 处理来自我的 androidApp 的请求

我的问题是我对 Web 应用程序和 Web 服务知之甚少。我真的不知道为网络服务选择什么语言。带有soap 或REST 的PHP 看起来是第二个任务的不错选择。但我找不到任何关于如何处理第一个任务的样本。有没有简单的方法告诉服务器每小时运行一次我的脚本?我也一直在研究 C#,这会更适合我,因为我更习惯 C#。但同样的问题出现在这里。我如何处理第二个任务?

这是我想写很久的东西,但在这里我完全迷失了。

4

1 回答 1

1

出于多种原因,从纯 Web 应用程序“每小时一次”(或更一般地,调度任务)做事是很棘手的。一般来说,最好使用操作系统的内置机制来执行计划任务(例如,Linux 下的cron ,或 Windows 下的计划任务),或者编写一个服务/守护进程来处理更新。

话虽如此,有一种相当简单的方法可以满足您的要求。您可以在您的 Web 应用程序层中缓存商业 Web 服务的结果,以及您上次检索信息的时间戳。当 Web 请求从您的应用程序进入您的 Web 服务时,首先检查缓存的时间戳。如果时间戳小于一小时,则返回缓存的天气数据。如果时间戳超过一个小时,则直接从那里调用商业 Web 服务,将结果和当前时间写入缓存,并将刚刚获得的数据返回给应用程序。

PHP 当然非常适合这种任务。有关如何执行此操作的详细说明超出了 Stack Overflow 问题的范围。谷歌 PHP 和缓存,尝试一些示例,如果遇到困难,请询问详细的后续问题。

于 2013-03-04T00:44:06.330 回答