Comunidad de diseño web y desarrollo en internet online

RemoteObject con endpoint dinámico

Citar            
MensajeEscrito el 19 Nov 2009 05:06 pm
Hola, he buscado esto por muchos lados y son muy pocas las respuestas, y las que hay no me funcionan.

Tengo en mi aplicación hecha en flex, un remoteobject especificado con la etiqueta <mx:RemoteObject> y le puse el endpoint y todo lo demás ahí mismo, que para el caso da la misma que hacerlo en el xml, igual no se puede cambiar después de compilada la app.

Lo que busco es poder decirle que el endpoint está en la misma carpeta, no importa en que dominio se encuentre ni nada, leí que con AS3 se podía, creo el remoteObject en AS3 pero cuando trato de crear los métodos me salen montones de errores.

Alguien me puede ayudar con este problema? es muy cansón tener que especificar eso en la compilación, acostumbrado a que en php se pueden llamar archivos con ruta relativa, incluso en flex los httpservice soportan ruta relativa, el remoting también debería aceptarlo.

Gracias.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 20 Nov 2009 01:15 pm
Lo puedes crear y asignar completamente en AS, de hecho es el argumento del constructor que tiene esta signatura:

public function RemoteObject(destination:String = null)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Nov 2009 06:09 pm
mmm creas el RemoteObject como XML.

Código Flex :

<mx:RemoteObject id="remoteObjectPhp"/>


Luego instancias en tu método:

Ejemplo:

Código ActionScript :

private function listadoClientes(responder:IResponder = null):void
{
   var asyncToken:AsyncToken;
   remoteObjectPhp.destination = "phpServiceCliente"; //El nombre que asigas en tu remoting-config.xml
   remoteObjectPhp.endpoint = "http://localhost:8080/MyProyect/..../weborb.php"; //Varias tu endpoint.
   
   asyncToken = remoteObjectPhp.listadoCliente();//Metodo dentro de la clase
   asyncToken.addResponder(new ItemResponder(fn_data,onFault));
}

function fn_data(e:ResultEvent, r:IResponder = null):void
{
   //Recibes con e.result = Array si es un listado.
}



Tan solomante haces la llamada como : listadoClientes();

Saludos.

Por ciberdrago

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Nov 2009 10:31 pm
Osea que debo hacer un remoteObject para cada uno de los métodos en mi clase php?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 20 Nov 2009 10:51 pm
Un RemoteObject puede tener muchos métodos que invocas, ¿has revisado la ayuda?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Nov 2009 12:04 am
eso seria una locura, piensa en solamamente 10 metodos por cada clase..10 remonting??
mmm...algo anda mal

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Nov 2009 01:10 am
es que no hay mucha documentacion acerca de eso y no manejo AS3 a un nivel tan alto, a eso sumarle que los únicos ejemplos que he visto solo incluyen un método, traté de enunciar varios métodos ahí mismo pero me salen errores.

Estoy usando Zend, por si acaso, como se modificaría el código de arriba para declarar por lo menos 2 métodos?
gracias, perdonar la insistencia, pero es que aprendo mejor por ejemplos.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 21 Nov 2009 12:48 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Nov 2009 05:33 pm
Poner varios métodos en mxml es obvio, no tengo problema alguno con eso, el problema que tengo es cuando trato de hacerlo en AS puro, y más abajo en AS3 está UN SOLO METODO.
Desearía que leyeran bien la pregunta antes de insinuar que no he leido nada, como dije antes, la documentación NO incluye algún ejemplo con varios métodos y los errores que salen tampoco están documentados.

Se de sobra que un remoteObject puede tener varios métodos, los uso desde hace algún tiempo, y he buscado la solución a mi problema en muchas partes, hago la pregunta en el foro como último recurso, no intento que me hagan las cosas, solo solucionar una duda,y la pregunta de si he leido no ayuda en lo absoluto, como tampoco decir :

xcom escribió:

eso seria una locura, piensa en solamamente 10 metodos por cada clase..10 remonting??
mmm...algo anda mal


Además, el comentario de:

Código :

public function RemoteObject(destination:String = null) 
está a la mitad, es ahí donde YO debo preguntar si has leido la ayuda, leiste esto?

Código :

destination:String (default = null) — the destination of the RemoteObject, should match a destination name in the services-config.xml file. 

y el services-config.xml se lee en el momento de la compilación, lo que hace completamente INUTIL el comentario.

Así que aunque agradezco el tiempo que se toman para responder, por favor háganlo solo si no tienen la intención de pretender que saben mucho porque saben el link de la documentación, o si de verdad saben la respuesta Y HAN LEIDO BIEN LA PREGUNTA, los intentos de humillación déjenlos para los verdaderos trolls.

Por último: "Si este no es su caso, haga caso omiso o por lo menos replantee su forma de comunicar sus ideas para que no sean mal interpretadas, si este SI es su caso, hay muchos trolls allá afuera, diviértase, pero no conmigo"

Por ahora estoy haciendo pruebas con la única respuesta útil que he recibido, agradecería si alguien tiene tan buenas intenciones de ayudar como ciberdrago

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 21 Nov 2009 10:01 pm
no quieres que vaya jorge a tu casa y te haga el trabajo , pillin jajaja :cool:

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2009 12:44 am
Tienes razón Xyrer, me abstendré de responderte e intentaré que todo el mundo haga lo mismo a menos que lo tome con la seriedad que mereces. Disculpa mi liviandad.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Nov 2009 04:28 pm
Mucha veces un link es de mucha ayuda.. aveces uno tiene que ser autodidacta.. atenriormente tan solo diciendome un link o un nombre me sirvio de mucho... tomaba como punto de referencia y encontraba la respuesta.. y no soy una persona que tiene mucha experencia apenas tengo 20 años recien cumplidos >_<!

bueno, sobre el tema que plantee lo considero un poco fastidioso por lo que trabaja de manera Asincrona y es un problema... porque tienes que esperar con otra clase para recién obtener una respuesta.

Pero tiene sus mañas, yo maneje de este problema en un tiempo de una manera quizas te ayude aunque no me gusto xD por último declare 6 RemoteObjects.. pero igual la dejare :

Código Flex :

<mx:RemoteObject id="remoteObjectPhp"/>


Ahora como verás la funcion de la data la introdusco dentro de mi clase invocadora

Código ActionScript :


private function iniApp():void
{
   listadoClientes();
}

private function listadoClientes(responder:IResponder = null):void 
{ 
   var asyncToken:AsyncToken; 
   remoteObjectPhp.destination = "phpServiceCliente"; //El nombre que asigas en tu remoting-config.xml 
   remoteObjectPhp.endpoint = "http://localhost:8080/MyProyect/..../weborb.php"; //Varias tu endpoint. 
    
   asyncToken = remoteObjectPhp.listadoCliente();//Metodo dentro de la clase 
   asyncToken.addResponder(new ItemResponder(fn_data,onFault)); 

   function fn_data(e:ResultEvent, r:IResponder = null):void 
   {  
     //Recibes con e.result = Array si es un listado. 
     remoteObjectPhp.disconnect();
     listadoCuenta(); //INVOCO EL OTRO MÉTODO
   }  
} 
 
private function listadoCuenta(responder:IResponder = null):void 
{ 
   var asyncToken:AsyncToken; 
   remoteObjectPhp.destination = "phpServiceCuenta"; 
   remoteObjectPhp.endpoint = "http://localhost:8080/MyProyect/..../weborb.php"; //Varias tu endpoint. 
    
   asyncToken = remoteObjectPhp.listadoCuenta();//Metodo dentro de la clase 
   asyncToken.addResponder(new ItemResponder(fn_data,onFault)); 

   function fn_data(e:ResultEvent, r:IResponder = null):void 
   {  
     //Recibes con e.result = Array si es un listado. 
     remoteObjectPhp.disconnect();
     listadoCaja();
  }  
} 


private function listadoCaja(responder:IResponder = null):void 
{ 
   var asyncToken:AsyncToken; 
   remoteObjectPhp.destination = "phpServiceCaja"; 
   remoteObjectPhp.endpoint = "http://localhost:8080/MyProyect/..../weborb.php"; //Varias tu endpoint. 
    
   asyncToken = remoteObjectPhp.listadoCaja();//Metodo dentro de la clase 
   asyncToken.addResponder(new ItemResponder(fn_data,onFault)); 

   function fn_data(e:ResultEvent, r:IResponder = null):void 
   {  
     //Recibes con e.result = Array si es un listado. 
     remoteObjectPhp.disconnect();
  }  
} 


Como verás no se crea 3 RemoteObject, tan solamente 1 que se referencía como 3 ... pero tienes que terminar de utilizar uno y esto se da cuando recibes la información. Porque es asincrono =/ (cosa jodida). Luego desconecto e invoco otro método que hace referencia a otro. xD

El problema es que tendrias que esperar que termine una invocación para utilizar otra :S quizas haga falta algunas cosas por ai pero no ivestigue a fondo.. quizas existe algunos trucos pero tmpc tengo nivel avanzado de AS3.

Lo que si existe de manera síncrona es cuando te conectas a la base de datos por ejemplo SQLite.

Saludos xD

Por ciberdrago

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2009 05:30 pm
debes aprender poo lo que haces esta como el orto

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2009 05:42 pm
Por eso cito palabras que utilize:

"aunque no me gusto"!

se que esta mal y no aplique en mi proyecto :s pero era una alternativa de que se utilize o no depende de cada uno.... pero en vez de utilizar una típica palabra "esta mal","no me gusta"

Seria más productivo decir:
"Eso esta mal deberias hacerlo de tal manera...", así uno aprende y demuestras que tienes un mejor conocimiento para ayudar a otras personas.

Saludos

Por ciberdrago

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2009 05:45 pm
flex capa interfaz
java php o cualquier otra cosa para logica empresarial
mysql oracle o cualquier otra para la bd

la integracion muchas maneras , la mejor depende de lo que quieras

aprende poo
arprende reglas de negocios
aprende eventos personaliazados
aprende vistas
aprende modulos
aprend componetes
aprede sql
y con eso estaras listo

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2009 06:02 pm
Si en realidad uno debe aprender todo eso, pero estas cojiendo una ruta diferente a la que se queria llegar.

El problema aca era como remoteobject puede reutilizarse para no crear varios.

Tu me das un listado sobre todo eso, lo único relevante de todo sería eventos personalizados y manejo de componentes (Sirve como que no sirve de nada, porque seria como decir "Lee un libro de Flex3".. y eso no ayuda en este caso ) ... porque lo demas son el esquema general.

Es más las reglas del negocio, que tenga entendido se da dependiendo del proyecto o.O!..
modulos,vistas no viene al caso...
manejo de bds fuera total del tema...

Yo quiero una mejor manera de compilar la si ineficiente solución que di por una eficiente... o por último caso "no se puede" .. que tenga entendido con los RemoteObject solo trabajan de manera asíncrona..
no un índice de "que saber para tener conocimientos de programación"..

Saludos

Por ciberdrago

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Nov 2009 07:03 pm
XCom: aunque pueda ser formalmente objetable el code de cyberdrago, no merece ese tipo de contestación ...
Al utilizar remoteobjects y en general cualquier recurso externo, es bastante común llamar a muchos métodos y necesitar un orden para procesar las llamadas (dependiendo de lo que tarden el servidor no las procesará en el orden que las hicimos)
Hace unos años había hecho estas clases donde por ejemplo usaba un pool para disparar N llamadas de remoting simultáneas: http://flash-db.com/Tutorials/lclasses/
Está en AS2, pero la clase de Remoting se pasa fácil a AS3

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 23 Nov 2009 07:36 pm
bien ahora ciberdrago con esas clases que te envia jorge estai listo suerte

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2009 02:52 am
Siempre he visto remoting de forma asíncrona, pero como dice ciberdrago, las técnicas se usan dependiendo del proyecto y pues quería ahorrarme el compilar varias veces dependiendo del servidor y otras cositas, pero la solución, al parecer, es peor que el problema en mi caso particular, aunque es bueno saber que se puede realizar algo así en caso de que si sea viable.

Muchas gracias.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 03 Dic 2009 09:18 pm

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.