Flash Ripper RSS Readers

Куда подевался Flash Remoting в CS3? Никуда. Он стал еще проще

Вы любите Flash Remoting во Flash? Используете его простоту и скорость? Тогда вы наверняка заметили, что для Flash CS3 набора Remoting Components нет и не предвидится. Почему, я не знаю; зато знаю, как его вернуть. Оказывается, во Flash CS3 никакие специальные компоненты для ремоутинга вообще не нужны. Достаточно правильно использовать AS3-класс NetConnection, как подсказывает Оскар Трельес: создаем класс-обертку вокруг NetConnection и называем его RemotingService. В нем задаем кодировку ремоутинга (AMF0/AMF3) и устанавливаем соединение. Работает хоть с AMFPHP, хоть с Fluorine под .NET.

Далее - код, пример использования и одна проблема, с которой я столкнулся.

Исходный код класса RemotingService, устанавливающего remoting-соединение


package {
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
public class RemotingService extends NetConnection {
function RemotingService(url:String) {
// Set AMF version
objectEncoding=ObjectEncoding.AMF3;
// Connect to gateway
connect(url);
}
}
}


Исходный код класса RemotingGateway, вызывающего Remoting-методы


package {
import flash.net.Responder;
public class RemotingGateway {
private var gatewayURL:String;
private var rs:RemotingService;

function RemotingGateway(strServicePath:String = null) {
trace("Init remoting, path = " + strServicePath);
init(strServicePath);
}
private function init(strServicePath:String = null) {
gatewayURL = strServicePath;
rs=new RemotingService(gatewayURL);
}
public function testRemoting():void {
var responder:Responder=new Responder(onResult,onFault);
rs.call("Web.Services.FlashProxy.Test",responder, {array:new Array(0,1,2)});
}
private function onResult(result:Object):void {
trace("Remoting Result: " + result);
}
private function onFault(fault:Object):void {
trace
(
"Remoting fault type:\t" + fault.type
+ "\nFault code:\t" + fault.code
+ "\nFault level:\t" + fault.level
+ "\nDescription:\n\t" + fault.description
+ "\nDetails:\n\t" + fault.details
);
}
}
}

Пример использования AS3 Remoting


var remotingGateway:RemotingGateway = new RemotingGateway("URL — ПУТЬ К СЕРВИСУ");
remotingGateway.testRemoting();

Работает!

Помогите разобраться: не могу передать удаленному методу более одного параметра

Все вроде бы шоколадно: ремоутинг стал еще проще, чем был. Но есть одна проблема, которую я пока не смог решить. Я не могу при вызове удаленного метода передать более 1 переменной. Если я в последнем примере, где вызывается rs.call("Web.Services.FlashProxy.Test",responder, {array:new Array(0,1,2)}) вместо одного объекта {array:new Array(0,1,2)} пытаюсь передать несколько чисел: rs.call("Web.Services.FlashProxy.Test",responder, 0, 1, 2), то получаю от Fluorine ошибку типа "com.TheSilentGroup.Fluorine.Exceptions.FluorineException" с таким описанием:
Could not find a suitable method with name Test.
Details:
at com.TheSilentGroup.Fluorine.MethodHandler.GetMethod(IApplicationContext applicationContext, Type type, String methodName, IList arguments)

at com.TheSilentGroup.Fluorine.Filter.LibraryAdapter.Invoke(IApplicationContext applicationContext, AMFBody amfBody)

Ошибка выдается, хотя серверный метод ждет несколько чисел, а не одну переменную.

В чем причина такого поеведения? Может, я что-то делаю не так? Не та версия ремоутинга? Бьюсь второй день.

UPD: Похоже, мне удалось обойти проблему, используя AMF0 в настройке класса RemotingService: objectEncoding=ObjectEncoding.AMF0;. Но ведь Fluorine умеет работать с более производительным AMF3! Как склонить его к нормальной работе с AMF3?

Писал Rost, 3 Ноябрь 2007 15:04

Найдены баги:

хммм.. во флеше не пробовал, но во флексе было все ок. на работе буду гляну скажу ) заодно и сходим кофею попьём :)

Reijii - 3 Ноябрь 2007 20:38

Интересно будет с тобой поболтать.

Я вот подумал - в принципе, когда используешь главную фишку Flash Remoting, а именно объект Value Object'ами, передавать несколько переменных и не особо нужно — зачем это, если есть мощь типизации VO. Но кофейку попьем по-любому.

ЗЫ: добавил в линки тебя :)

Рост - 4 Ноябрь 2007 13:00

Я хотел сказать "а именно обмен Value Object'ами"

Рост - 4 Ноябрь 2007 13:02

хреново, что оно теперь не поддерживает метод setCredentials
пришлось полдня убить, чтобы нагуглить решение этого вопроса через запись в хедеры запросов

valyard - 6 Ноябрь 2007 10:16

А можно ли как нибудь из флеша смотреть в результате включен ли GZip и следить за процессом загрузки, сколько байт загружено и т.д.?

Vee - 6 Ноябрь 2007 18:59



Это запись из категории 'Remoting'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-30, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-25, Articles-26, AS3-52, Books-7, Business-3, Cairngorm-2, CI-1, Classes-10, Coding-30, Community-113, Components-19, Contests-28, Cool-Job-5, Debug-18, Design-26, Development-84, EMO-1, Events-13, Extensions-2, FAQ-8, FDS-1, Flash and html-5, Flash Player-35, Flash Updates-8, Flash-scene-1, flash10-4, FlashLite-2, Flex-30, Flex 2-80, Flickr-1, FMS-1, FPUG-46, frameworks-1, Games-11, Good Job!-35, HaXe-14, Health-2, Humor-10, Ideas-13, JavaScript-1, Job-26, JSFL-8, Links-2, Linux-1, Maps-1, Math-8, Money-11, MXML-1, Open Source-15, Optimization-2, Patterns-2, Personalities-27, Politics-1, Preloading-3, Productivity-9, PureMVC-10, Pv3d-1, Rafpug-4, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-8, Silverlight-5, Sound-3, Strategy-120, Tamarin-1, Tools-113, Training-2, Trash-8, URAFPUG-13, Urgent-1, Usability-6, Video-6, VoIP-5, Wallop-1, Wishlist-2, Архив всех записей (большой)

За последние месяцы:

Июл 2008: Международная встреча разработчиков URAFPUG завершена, URAFPUG - трансляция студии Flex-фреймворка Mate, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн

Май 2008: Если 3D, то по-взрослому: официальный запрос в Adobe по поводу контроля над мип-маппингом. Нужна ваша поддержка!, В этом году «Russian Flash Awards» пройдет в «космическом стиле», весь Май

Апр 2008: Программирование под флэш платформу. Cтатья (местами спорная), Advanced Flash Components бесплатно раздает все свои AS2-компоненты, весь Апр

Мар 2008: Зарплаты программистов в 2007 году, FlashPhone как технология года? Технология года? В Рунете?, весь Мар

Фев 2008: ЙА ФПУГ — регистрация на первую встречу UAFPUG продолжается, Закулисы Flex и секрет успеха опенсорс-проекта, весь Фев





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)