有人使用 ADO.NET Data Services 作为 Adob​​e Flex 应用程序的数据源吗?如果是这样,有什么成功故事或悲剧需要避免吗?如果您确实使用过它,您是如何处理安全性的?

有帮助吗?

解决方案

我使用 WebORB for .NET 进行 Flex 远程处理,然后在服务器上使用 DLINQ。将 LINQ 与 WebORB 结合使用的一件棘手的事情是,WebORB 使用反射来自动检索您返回到 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 数据集,或者实际上无法处理复杂的 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只能获得并发布Flex不了解HTTP响应消息

因此,为了让 Flex 与 ADO.NET 数据服务对话,您必须:
1.使用代理服务器,但您必须自己寻找或构建一个
2.修改传入的请求并使用 $method=MERGE 等(与代理相同)
3.使用另一个as3 httpService客户端,有一些开源举措

然后你必须找出如何发布数据,当你想用 JSON 创建一条新记录并指定一个具有另一个表链接的 Id 时,这会花费大量时间。这是因为你不能只更新整数,而是必须创建一个链接字符串,这感觉并不容易。

所以当然可以做到,但是开箱即用,你真的必须自己制作。我知道 Flash Builder 4 将附带 REST 导入,这可以加快速度,但我没有这方面的经验

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top