是否有人将 ADO.NET 数据服务用作 Adobe Flex 应用程序的数据源?如果是这样,有什么成功的故事或悲剧要避免吗?如果你确实使用了它,你是如何处理安全性的?
4 回答
我使用 WebORB for .NET 进行 Flex 远程处理,然后在服务器上使用 LINQ。将 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 只能执行 GET 和 POST Flex 不理解 HTTP 响应消息
因此,为了让 Flex 与 ADO.NET 数据服务对话,您必须这样做;
1.使用代理服务器,但要自己找或搭建
2.修改传入的请求,使用$method=MERGE等(与代理相同)
3.使用另外一个as3 httpService客户端,有一些开源举措
然后你必须找出如何发布数据,当你想用 JSON 创建一条新记录并指定一个 Id 到另一个表的链接时,它会花费很多时间。这是因为您不能只更新整数,而是必须创建一个链接字符串,感觉并不容易。
所以当然可以,但是开箱即用,你真的必须自己做。我知道 Flash Builder 4 将附带 REST 导入,这可以加快速度,但没有这方面的经验