Pergunta

Alguém já usou o ADO.NET Data Services como fonte de dados para aplicativos Adobe Flex?Em caso afirmativo, alguma história de sucesso ou tragédia a evitar?Se você o usou, como lidou com a segurança?

Foi útil?

Solução

Eu uso o WebORB para .NET para fazer a comunicação remota Flex e, em seguida, uso o DLINQ no servidor.Uma coisa complicada sobre o uso do LINQ com WebORB é que o WebORB usa o Reflection para recuperar automaticamente todos os relacionamentos do(s) objeto(s) que você retorna ao Flex.Isso causa severas penalidades de tempo, pois o LINQ usa carregamento lento para carregar relacionamentos.Para evitar que isso aconteça, faço algo como o seguinte:

Substitua o construtor do seu DataContext e adicione o seguinte código:

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

Isso informa ao DataContext para desabilitar o carregamento adiado de relacionamentos e o instrui especificamente a carregar apenas os relacionamentos desejados, sem carregamento lento.Dessa forma, o WebORB não causa nenhum carregamento lento por meio do Reflection e o número de relacionamentos transferidos para o Flex é mantido no mínimo.

Espero que isso ajude você de alguma forma.É definitivamente uma daquelas pequenas "pegadinhas" ao trabalhar com Flex/WebORB e LINQ.

Outras dicas

Sim, usamos extensivamente o Flex com serviços da web .Net.

O Flex não consegue lidar com DataSets .Net, ou mesmo com tipos xml complexos.Descobrimos que era melhor manter uma saída XML relativamente simples.

No entanto, se você fizer isso, ele poderá lidar bem com a saída do serviço da 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;
    ...

Ele perguntou sobre o ADO.NET Data Services, não sobre o serviço da web

O Flex só pode fazer e postar o Flex não entende as mensagens de resposta HTTP

Portanto, para que o Flex converse com os serviços de dados ADO.NET, você precisa;
1.use um servidor proxy, mas você mesmo precisa encontrar ou construir um
2.modifique as solicitações recebidas e use $method=MERGE e assim por diante (o mesmo que proxy)
3.use outro cliente httpService as3, existem algumas iniciativas de código aberto

Aí você tem que descobrir como postar dados, e custa muito tempo quando você quer criar um novo registro com JSON e especificar um Id que tenha um link para outra tabela.Isso porque você não pode simplesmente atualizar o número inteiro, mas em vez disso, precisa criar uma string de link, o que não parece muito fácil.

Então é claro que isso pode ser feito, mas você realmente precisa fazer isso sozinho.Eu sei que o Flash Builder 4 virá com uma importação REST, isso pode acelerar as coisas, mas não tenho experiência nisso

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top