Flex和ADO.NET数据服务...有人做到了吗?

时间:2020-03-05 18:47:55  来源:igfitidea点击:

有没有人使用ADO.NET数据服务作为Adobe Flex应用程序的数据源?如果是这样,应该避免任何成功的故事或者悲剧吗?如果我们确实使用过它,我们将如何处理安全性?

解决方案

回答

我使用WebORB for .NET进行Flex远程处理,然后在服务器上使用DLINQ。关于将LINQ与WebORB一起使用的一件棘手的事情是,WebORB使用Reflection来自动检索我们返回Flex的对象的所有关系。由于LINQ使用延迟加载来加载关系,因此会导致严重的时间损失。为了防止这种情况的发生,我执行以下操作:

重写DataContext的构造函数,并添加以下代码:

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

这告诉DataContext禁用延迟的关系加载,并特别指示它仅加载所需的关系,而无需延迟加载。这样,WebORB不会通过反射导致任何延迟加载,并且将转移到Flex的关系的数量保持在最少。

希望这对我们有所帮助。在使用Flex / WebORB和LINQ时,它绝对是其中的"小难题"之一。

回答

是的,我们广泛使用Flex与.Net Web服务。

Flex无法处理.Net DataSet,或者实际上无法处理复杂的xml类型。我们发现最好保持相对简单的xml输出。

但是,如果这样做,它可以很好地处理.Net Web服务输出:

<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;
    ...

回答

他问有关ADO.NET数据服务而不是Web服务的问题

回答

Flex只能执行GET和POST
Flex无法理解HTTP响应消息