Pregunta

¿Alguien ha utilizado ADO.NET Data Services como fuente de datos para aplicaciones Adobe Flex?Si es así, ¿alguna historia de éxito o tragedia que deba evitarse?Si lo usaste, ¿cómo manejaste la seguridad?

¿Fue útil?

Solución

Utilizo WebORB para .NET para realizar comunicación remota Flex y luego uso DLINQ en el servidor.Una cosa complicada de usar LINQ con WebORB es que WebORB usa Reflection para recuperar automáticamente todas las relaciones de los objetos que devuelve a Flex.Esto provoca graves penalizaciones de tiempo ya que LINQ utiliza carga diferida para cargar relaciones.Para evitar que esto suceda, hago algo como lo siguiente:

Anula el constructor de tu DataContext y agrega el siguiente código:

this.DeferredLoadingEnabled = false;
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Order>(q => q.Payments);
dlo.LoadWith<Order>(q => q.Customer);
this.LoadOptions = dlo;

Esto le indica al DataContext que deshabilite la carga diferida de relaciones y le indica específicamente que cargue solo las relaciones que desea, sin carga diferida.De esa manera, WebORB no provoca ninguna carga diferida a través de Reflection y la cantidad de relaciones que se transfieren a Flex se mantiene al mínimo.

Espero que esto te ayude de alguna manera.Definitivamente es uno de esos pequeños "errores" cuando se trabaja con Flex/WebORB y LINQ.

Otros consejos

Sí, utilizamos ampliamente los servicios web Flex con .Net.

Flex no puede manejar .Net DataSets, ni mucho menos mediante tipos xml complejos.Descubrimos que era mejor mantener una salida xml relativamente simple.

Sin embargo, si hace eso, puede manejar bien la salida del servicio web .Net:

<mx:WebService id="myDataService" showBusyCursor="true">
    <mx:operation name="WebMethodName" 
                  resultFormat="object" 
                  result="functionFiredOnComplete();">
</mx:operation>
</mx:WebService>

public function load():void
{
    myDataService.loadWSDL( "web method's wsdl" );
    myDataService.WebMethodName.send( params );
}

public function functionFiredOnComplete():void
{           
    // get data
    var myData:Object = myDataService.WebMethodName.lastResult;
    ...

Preguntó sobre los servicios de datos ADO.NET, no sobre el servicio web.

Flex solo puede hacer y publicar flex no entiende los mensajes de respuesta HTTP

Entonces, para que Flex se comunique con los servicios de datos ADO.NET, debe hacerlo;
1.Utilice un servidor proxy, pero debe buscarlo o crearlo usted mismo.
2.modifique las solicitudes entrantes y use $method=MERGE y así sucesivamente (igual que proxy)
3.utilice otro cliente httpService as3, existen algunas iniciativas de código abierto

Luego tienes que descubrir cómo publicar datos, y cuesta mucho tiempo cuando quieres crear un nuevo registro con JSON y especificar un Id que tiene un enlace a otra tabla.Esto se debe a que no puedes simplemente actualizar el número entero, sino que tienes que crear una cadena de enlace, no parece realmente fácil.

Por supuesto que se puede hacer, pero desde el primer momento tienes que hacerlo tú mismo.Sé que Flash Builder 4 vendrá con una importación REST, esto podría acelerar las cosas, pero no tengo experiencia para eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top