Re: Мобильный SOAP через JSON-шлюз Emission-Framework
От: henson Россия http://www.njt-rails.com
Дата: 30.09.10 16:19
Оценка: +1
Здравствуйте, emission-framework, Вы писали:

EF>Всем доброе время суток.


EF>Вопрос довольно актуален — как достучаться к SOAP веб-службе (например WCF) с мобильного клиента?

EF>Тот, кто писал под iPhone, знает, что проблема не простая. На JaveME — тем более. На других платформах типа Bada — не знаю. Android — не особо полезная вещь (там есть Apache Axis), но может пригодиться.

EF>Лично мне пришлось написать собственное решение. И я включил его в состав своей PHP библиотеки.


EF>Если кто знает другое решение, которое действительно работает — пишите в ветку.


EF>Вот моя статья на тему.

EF>http://emission-framework.com/article/vitche.wordpress.com/php-framework/iphone-json-soap-client-vitche-emission-php-framework.html

Идея конечно интересная тем более что существенно сокращает служебный трафик.
Сомнения только в совместимости всего этого с конкретной инфраструктурой.
Мобильный SOAP через JSON-шлюз Emission-Framework
От: emission-framework  
Дата: 30.09.10 15:37
Оценка:
Всем доброе время суток.

Вопрос довольно актуален — как достучаться к SOAP веб-службе (например WCF) с мобильного клиента?
Тот, кто писал под iPhone, знает, что проблема не простая. На JaveME — тем более. На других платформах типа Bada — не знаю. Android — не особо полезная вещь (там есть Apache Axis), но может пригодиться.

Лично мне пришлось написать собственное решение. И я включил его в состав своей PHP библиотеки.

Если кто знает другое решение, которое действительно работает — пишите в ветку.

Вот моя статья на тему.
http://emission-framework.com/article/vitche.wordpress.com/php-framework/iphone-json-soap-client-vitche-emission-php-framework.html

Общий алгоритм работы следующий:
1. Мобильный клиент обращается на PHP сервер через REST интерфейс посредством самого обыкновенного HTTP запроса;
2. Веб-служба на стороне Emission-Framework получает REST запрос и шлюз превращает его в SOAP-запрос;
3. SOAP-запрос выполняется с помощью SoapClient — встроенного класса PHP;
4. Результат сериализуется в JSON и возвращается назад клиенту.

Предполагаем, что разобрать JSON для мобильного клиента — не проблема.

Вот код шлюза из моей библиотеки:

<?php
/**
 * PHP Framework Integration HTTP-to-SOAP Gateway Web Service class
 * This service makes SOAP services available to callers through the usual
 * HTTP REST interface
 **/

/**
 * Description of HTTPSOAPGatewayWebService
 *
 * @author Andrew <andrew@vitche.com>
 * @author Frozen Rain <frozenrain@mail.ru>
 **/
class HTTPSOAPGatewayWebService extends HTTPWebService {

    function __construct() {
        parent::__construct('');
    }

    function onMethodCall($strClassName, $strMethodName, $arRequest) {

        // Parse request
        $url = null;
        $arguments = array();
        foreach ($arRequest as $key => $value) {
            if ('url' == $key) {
                $url = $value;
            } else {
                $arguments[$key] = $value;
            }
        }

        $reference = new SOAPWebServiceReference($url);
        return JSONSerializer::toString($reference->execute($strMethodName, $arguments));
    }
}
?>


Всех, кого эта тема заинтересовала, просьба писать мне или на .

И, на последок, REST веб-службы в библиотеке Vitche Emission Framework запускаются на выполнение так:

new HTTPSOAPGatewayWebService();


Это пригодится в экспериментах с кодом!

Всем удачи! Жду фидбеков!
Re[2]: Мобильный SOAP через JSON-шлюз Emission-Framework
От: emission-framework  
Дата: 30.09.10 16:56
Оценка:
Здравствуйте, henson, Вы писали:

H>Здравствуйте, emission-framework, Вы писали:


EF>>Всем доброе время суток.


EF>>Вопрос довольно актуален — как достучаться к SOAP веб-службе (например WCF) с мобильного клиента?

EF>>Тот, кто писал под iPhone, знает, что проблема не простая. На JaveME — тем более. На других платформах типа Bada — не знаю. Android — не особо полезная вещь (там есть Apache Axis), но может пригодиться.

EF>>Лично мне пришлось написать собственное решение. И я включил его в состав своей PHP библиотеки.


EF>>Если кто знает другое решение, которое действительно работает — пишите в ветку.


EF>>Вот моя статья на тему.

EF>>http://emission-framework.com/article/vitche.wordpress.com/php-framework/iphone-json-soap-client-vitche-emission-php-framework.html

H>Идея конечно интересная тем более что существенно сокращает служебный трафик.

H>Сомнения только в совместимости всего этого с конкретной инфраструктурой.

Да, если, например, у заказчика отсутствует желание ставить для этого PHP сервер со шлюзом — то это становится большой проблемой.
Давайте обдумаем:
1. Можно написать аналогичный шлюз для платформы заказчика;
2. А что если мы на сайте добавим поддомен, на котором всегда есть работающий шлюз. Кто-то будет этим пользоваться? Хотя, идея прогонять данные через сторонний сервер не очень хороша. Ни для владельца сервера (траффик), ни для клиента (безопасность данных).

Вариант №2 мне нравится. Интересно, что скажут потенциальные пользователи?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.