0

GAE を介した Android アプリ (ネイティブ アプリ) とデスクトップ アプリ (C#/Java クライアント) 間の通信に最適な方法は何ですか? 私が見つけた 1 つの方法は Channel API でした。残念ながら、Javascript 以外に Channel API をサポートするクライアント側スクリプトは見つかりませんでした。もう 1 つの方法は、静的クラスを作成し、これらの静的変数を介して通信することでした。

これは私が達成したいことです:

  1. Android アプリから GAE にメッセージを送信する必要があります。
  2. このメッセージは PC アプリ (C#/Java クライアント) で取得する必要があります。
  3. PC アプリはこのメッセージに対して応答を返す必要があります
  4. PC 応答はモバイル アプリに送信する必要があります。

実際、モバイルからWindowsコマンドプロンプトでコマンドを実行しようとしています。

4

2 に答える 2

1

どうですか:

Android <-> App Engine:C2DM

これはそれについての良いビデオです:

http://www.youtube.com/watch?v=M7SxNNC429U

C#/ Java <-> App Engine:Http Post / Get、AppEngine側でhttpサーブレットを作成します。そして、c#/javaでの標準のhttpリクエスト。

サーブレット側に関するブログは次のとおりです。

http://zawoad.blogspot.com/2010/04/how-to-call-servlet-in-gwt.html

于 2012-01-04T18:47:10.727 に答える
0

基本的には、これがどのように機能するかです:

  • GAE ハンドラは、http を介してモバイル デバイスからメッセージを受信し、データストアに保存します。http を介してモバイル デバイスによって行われる要求の例を次に示します。

    POST http://myapp.appspot.com/messages
    Content-type: application/json
    
    {"message":"Message from mobile device","userid":"myuserid",[other data..]}
    
  • デスクトップ アプリは、http 経由で GAE に繰り返し要求を (10 秒ごとに) 行います。新しいメッセージがない場合、GAE ハンドラーは空の応答を返しますが、メッセージが到着した場合、メッセージはデータストアから読み込まれ、http 経由で提供されるため、アプリケーションはそれを受信します。リクエストの例は次のとおりです。

    GET http://myapp.appspot.com/messages?last_message_id=...
    

    データベース クエリの例:

    SELECT * FROM messages WHERE message_id > LAST_MESSAGE_ID
    

    応答例:

    Content-type: application/json
    
    [{'id':1, 'message':'Message 1 from mobile device','userid':1},
     {'id':2, 'message':'Message 2 from mobile device','userid':1}]
    

Channel-API を使用すると、10 秒ごとに多くのリクエストを繰り返す代わりに、1 つの長いリクエスト (ロング ポーリング) を行うことができます。より効率的ですが、ライブラリが存在しない場合は実装が難しくなります。

私は C# や Java でコーディングしていないため、特定のライブラリをお勧めすることはできませんが、必要なのは http 要求を作成できるライブラリと、選択した形式でデータをエンコードおよびデコードするライブラリだけです。この例では、JSON データ エンコーディングが使用されています。

于 2012-01-05T11:47:24.327 に答える