![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Подскажите, пожалуйста, best practice по использованию RemoteObject
К примеру, у меня есть некоторый бин, с которым я буду связываться посредством RemoteObject. У этого бина куча методов, к примеру. Каждый раз создавать RemoteObject в каждой mxml как-то громоздким кажется. Нельзя ли вынести этот RemoteObject в отдельный mxml, прописать все существующие методы и не создавать этот объект каждый раз, а обращаться к статическим методам, например, созданным в объекте, который наследует RemoteObject То есть Что-то в этом роде... или как правильно, подскажите, пожалуйста? |
|
|||||
|
[+4 01.09.09]
Регистрация: Aug 2009
Сообщений: 27
|
Мб не "best practice", но я вижу так (на работоспособность после копи-паста не проверял):
package service { import mx.controls.Alert; import mx.messaging.ChannelSet; import mx.messaging.channels.AMFChannel; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.RemoteObject; public class MyService extends RemoteObject { private var amfChannel: AMFChannel; public function MyService(){ initRemoteObject(); } private function initRemoteObject():void{ channelSet = new ChannelSet(); amfChannel = new AMFChannel("Your destination", "Your uri"); channelSet.addChannel(amfChannel); destination = "Your destination"; source = "Your source"; getOperation("MethodName").addEventListener(ResultEvent.RESULT, rhMethodName); getOperation("MethodName").addEventListener(FaultEvent.FAULT, faultHandler); } public function callMethodName():void{ getOperation("MethodName").send(); } private function rhMethodName(event: ResultEvent):void{ // your code here } private function faultHandler(fault: FaultEvent):void{ // your code here Alert.show("Method name: " + fault.currentTarget.name + "\n \n" + fault.message.toString(), "Fault Message"); } } } package service { public class MyServiceSingleton { private static var ms: MyService; public static function getInstance():MyService{ if(ms == null){ ms = new MyService(); } return ms; } } } Последний раз редактировалось Alex_41; 23.09.2009 в 18:04. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Да, спасибо большое. Я это уже смотрел.. хотелось сделать вот такого рода штуку:
package remote { import mx.rpc.AbstractOperation; import mx.rpc.remoting.mxml.RemoteObject; public class MyRemoteObject extends RemoteObject{ private static var instance:MyRemoteObject = new MyRemoteObject(); public function MyRemoteObject() { super(); destination = "flexuserDaoService"; endpoint = "http://ausatov:8080/flexapp/springwraper/messagebroker/amf"; } public static function getAllFlexUsers(func:Function):void { instance.addEventListener("result", func); var op:AbstractOperation = instance["getAllFlexUsers"]; op.send(); } } } И надо слушателя удалять после того, как получили ответ.... Последний раз редактировалось Night_rainbow; 23.09.2009 в 18:13. |
|
|||||
|
Modus ponens
|
>> Подскажите, пожалуйста, best practice по использованию RemoteObject
Не использовать его Использовать NetConnection, у него и API вменяемые, и работать будет соответственно быстрее, да и вообще... если вы не используете MXML готовые решения, то смысла расширять фреймворковские классы нет. Фреймворк хорош когда нужно быстро из полуфабрикатов пожрать приготовить, но если вы уже решили по-настоящему готовить, то смысл покупать лапшу быстрого приготовления отсутствует ![]()
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Спасибо. А где можно почитать о том, как его использовать вместо RemoteObject?
|
|
|||||
|
Modus ponens
|
http://livedocs.adobe.com/flex/3/lan...onnection.html
Ну собственно, вот... Т.е. как вы сами понимаете, RemoteObject - это какя-то надцатая оболчка вокруг оболочки оболочки NetConnection.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 18
|
Большое спасибо за указание верного пути!
![]() public class MyNetConnection extends NetConnection{ public function MyNetConnection() { super(); var res:Responder = new Responder(onResult,onFault); connect("http://localhost:8080/flexapp/springwraper/messagebroker/amf"); call("flexuserDaoService.getAllFlexUsers",res); } protected function onResult(result:Object):void{ trace(""); } protected function onFault(result:Object):void{ trace(""); } } } Добавлено через 33 минуты Хочу уточнить... Подскажите, пожалуйста. Метод connect() по спецификации: Цитата:
К примеру, есть приложение. К примеру, за все время жизни приложения оно будет использовать NetConnection объект, вызывая метод getAllFlexUsers: public class MyNetConnection extends NetConnection{ private static var instance:MyNetConnection = new MyNetConnection(); public function MyNetConnection() { super(); var res:Responder = new Responder(onResult,onFault); connect("http://ausatov:8080/flexapp/springwraper/messagebroker/amf"); } public function getAllFlexUsers(responder:Responder):void{ instance.call("flexuserDaoService.getAllFlexUsers",responder); } protected function onResult(result:Object):void{ trace(""); } protected function onFault(result:Object):void{ trace(""); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|