0

通过 GAE 在 Android 应用程序(本机应用程序)和桌面应用程序(C#/Java 客户端)之间进行通信的最佳方式是什么?我发现的一种方法是 Channel API。不幸的是,我发现除了 Javascript 之外没有客户端脚本支持 Channel API。另一种方法是创建一个静态类并通过这些静态变量进行通信。

这就是我想要实现的目标:

  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,在应用引擎端创建一个 http servlet。以及 c#/java 上的标准 http 请求。

这是一篇关于 servlet 方面的博客:

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 秒重复多次。它更有效,但如果库不存在,实现起来会更困难。

我不能向您推荐特定的库,因为我不使用 C# 或 Java 编写代码,但您只需要一个可以发出 http 请求的库,以及一个可以以您选择的格式编码和解码数据的库。我的示例中使用了 JSON 数据编码。

于 2012-01-05T11:47:24.327 回答