Всякие разные штуки сомнительной полезности сделанные в свободное от работы время.
Добавлены TXTService, AMFService.
Запись от wvxvw размещена 24.04.2009 в 22:18
Для начала пример:
<?xml version="1.0" encoding="utf-8"?> <e4xu:Control xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:e4xu="http://e4xu.googlecode.com" width="800" height="600" initialized="testMe()" > <mx:Script> <![CDATA[ import org.wvxvws.xmlutils.XUtils; private function serviceSuccess(value:Object):void { var xml:XML = <data>{XUtils.arrayToList(value as Array)}</data>; trace(xml.toXMLString()); testTable.dataProvider = xml; } private function serviceFault(value:Object):void { testInput = value.toString(); } private function testMe():void { testService.send(testMethod.fullName); } ]]> </mx:Script> <e4xu:Input id="testInput" text="Test text" align="center" background="true" backgroundColor="0xAAAAAA" width="700" height="25" x="50" y="20" /> <e4xu:AMFService id="testService" resultCallBack="serviceSuccess" faultCallBack="serviceFault" baseURL="http://localhost/amfphp/gateway.php" > <e4xu:ServiceMethod id="testMethod" name="SimpleService" operation="getTable" > <e4xu:ServiceArguments> <mx:String>firstColumn</mx:String> <mx:String>secondColumn</mx:String> </e4xu:ServiceArguments> </e4xu:ServiceMethod> </e4xu:AMFService> <e4xu:Table id="testTable" width="700" height="500" backgroundAlpha="1" x="50" y="50" > <e4xu:columns> <e4xu:Column id="firtsColumn" filter="@firstColumn" /> <e4xu:Column id="secondColumn" filter="@secondColumn" /> </e4xu:columns> </e4xu:Table> </e4xu:Control>
Код:
<?php class SimpleService { public function __construct(){ } /** * Returns 2D array containing test values. */ public function getTable($rowName0, $rowName1) { $response = array( array( $rowName0 => 'Foo0', $rowName1 => 'Bar0' ), array( $rowName0 => 'Foo1', $rowName1 => 'Bar1' ), array( $rowName0 => 'Foo2', $rowName1 => 'Bar2' ), array( $rowName0 => 'Foo3', $rowName1 => 'Bar3' ), array( $rowName0 => 'Foo4', $rowName1 => 'Bar4' ) ); return $response; } } ?>
TXTService: По сути MXML обертка для URLLoadera. Позволяет общаться с серверным скриптом используя GET запрос и передавая ему аргументы в виде пар имя=значение.
AMFService: MXML обертка для NetConnection. Позволяет общаться с AMF сервером.
Основная идея заключается в том, что методы вызываемые на сервере а так же параметры, которые им передаются можно "забиндить" ну и кроме этого, для обоих сервисов используется один и тот же тип объекта для хранения ссылки на удаленный метод, что так же верно и для аргументов. Кроме этого, добавлен механизм синхронизации предотвращающий возможность одновременного обращения к удаленным методам.
Параметры:
- дебаг билд: 23К.
- релиз билд: 13К.
- всего использовано классов: 20.
Чего еще нужно доделать:
- Не хватает механизма сериализации пользовательских классов (надеюсь, что в скором будущем сделаю).
- Нужно подумать об отимизации контейнеров (вынести общие методы в один над-класс).
- Возможно разбить утилиты на группы. Вряд ли нужен такой большой класс утилит "одним куском".
- Добавить возможность "связывания" некоторым свойствам (на данный момент большинство свойств визуальных компонентов не являются [Bindable]).
Что будет в следующем примере:
- Простой механизм аутентификации с использованием сессии.
- Создание двукадрового SWF с прелоадером.
- Тест еще одного (а может и больше) визуальных компонентов.
Всего комментариев 0
Комментарии
Последние записи от wvxvw
- Dired - текстовый проводник по файловой системе (29.06.2013)
- Навигация по HTML с WASD (09.06.2012)
- JavaScript, все не так плохо (07.06.2012)
- Что такое tarball и чем его пакуют (11.04.2012)
- Критика Presentation Model (18.02.2012)