2012-01-04 3 views
0

Каков наилучший способ для общения между Android-приложением (родным приложением) & настольным приложением (C#/Java Client) через GAE? Один из способов, который я нашел, это Channel API. К сожалению, я не нашел сценариев на стороне клиента, кроме Javascript, поддерживающих Channel API. Другим способом было создание статического класса и связь через эти статические переменные.Клиентская связь по GAE

Это то, что я хотел бы достичь:

  1. Я хочу Android приложение, чтобы отправить сообщение на GAE.
  2. Это сообщение должно быть retreived мой PC App (C#/Java-клиент)
  3. PC App должна возвращать ответ на это сообщение
  4. ответ ПК должен отправить на Mobile App.

На самом деле я пытаюсь выполнить команды в командной строке Windows с моего мобильного устройства.

+0

Что вы имеете в виду * статический класс связи * ??? Существуют разные машины: gae, desctop и mobile. Как вы можете запускать ту же виртуальную машину (= один экземпляр) в такой (= распределенной) среде? –

+0

Значит, сообщение от ClientA будет храниться в статической строковой переменной, которая позже может быть получена клиентом B. Я ищу лучшее решение, чем это. – Vivek

+0

И как это может быть связано с «Channel API»? static var/memcached/database - это опция хранения. канал api/xmpp/http/email - это опция связи. Вы можете (и даже вам это нужно) использовать оба варианта одновременно. –

ответ

0

В основном это, как это работает:

  • GAE обработчик получает сообщения от мобильного устройства через HTTP, и сохраняет его в хранилище данных , Ниже приведен пример запроса, который выполняется movile устройством через HTTP:

    POST http://myapp.appspot.com/messages 
    Content-type: application/json 
    
    {"message":"Message from mobile device","userid":"myuserid",[other data..]} 
    
  • Desktop приложение делает повторные запросы (каждые 10 секунд или около того), чтобы GAE над HTTP. Обработчик 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}] 
    

с канальными API, можно сделать один длинный запрос (длительный опрос), а не много повторений каждые 10 секунд. Он более эффективен, но его будет сложнее реализовать, если библиотеки не существуют.

Я не могу рекомендовать вам конкретные библиотеки, потому что я не кодирую на C# или Java, но все, что вам нужно, это библиотека, которая может обрабатывать HTTP-запросы, а также библиотеку, которая кодирует и декодирует данные в выбранном вами формате. Кодирование данных JSON используется в моем примере.