0

Android フォン用の天気アプリを作成したいのですが、アプリのバックエンド部分で行き詰まってしまいました。

Web サービスを通じて特定の場所に関する詳細情報を無料で取得できる気象サービスを見つけました。しかし、彼らは規則で、私が彼らのサービスを頻繁にポーリングすることは許可されていないと述べています. そこで、見つけたウェザーステーションから気象情報を取得し、それを自分の Web サービスで利用できるようにする Web サービスを自分で作成して、自分のアプリが自分のサービスだけを呼び出すようにできると考えました。

通信は以下のようになります

MyApp <--> MyWebService <--> 商用 Web サービス

Android アプリは MyWebService と通信します。そして、私の Web サービスは商用サービスと通信します。

だから私は MyWebService が物事をやりたいと思っています。

  1. 商用 Web サービスから 1 時間に 1 回情報を取得し、データベースを更新する
  2. 私のandroidAppからのリクエストを処理する

私の問題は、Web アプリケーションと Web サービスについてほとんど知らないことです。Web サービスにどの言語を選択すればよいかよくわかりません。PHP と SOAP または REST は、2 番目のタスクの有力な候補のようです。しかし、最初のタスクを処理する方法のサンプルが見つかりません。スクリプトを 1 時間に 1 回実行するようにサーバーに指示する簡単な方法はありますか? 私はC#にも少し慣れているので、C#にも少し適していると考えています。しかし、ここで同じ疑問が生じます。2 番目のタスクを処理するにはどうすればよいですか?

ずっと書きたかったのですが、ここで完全に道に迷ってしまいました。

4

1 に答える 1

1

Webのみのアプリケーションから「1時間に1回」(またはより一般的にはタスクをスケジュールする)ことを行うのは、いくつかの理由で注意が必要です。一般に、オペレーティングシステムの組み込みメカニズムを使用して、スケジュールされたタスク(Linuxではcron 、Windowsではスケジュールされたタスクなど)を実行するか、更新を処理するサービス/デーモンプロセスを作成することをお勧めします。

そうは言っても、要件を満たすにはかなり簡単な方法があります。商用Webサービスの結果を、最後に情報を取得したときのタイムスタンプとともに、Webアプリケーション層にキャッシュできます。アプリからウェブサービスにウェブリクエストが届いたら、まずキャッシュのタイムスタンプを確認します。タイムスタンプが1時間未満の場合は、キャッシュされた気象データを返します。タイムスタンプが1時間を超える場合は、そこから直接商用Webサービスを呼び出し、結果と現在の時刻をキャッシュに書き込んで、取得したデータをアプリに返します。

PHPは確かにこの種のタスクに適しています。それを行う方法の詳細な手順は、StackOverflowの質問の範囲を超えています。Google for PHPとキャッシング、いくつかの例を試してみて、行き詰まった場合は詳細なフォローアップの質問をしてください。

于 2013-03-04T00:44:06.330 に答える