Flex和;网页服务

时间:2011-01-31 12:08:34

标签: asp.net flex web-services flex4 e4x

我们有一个Flex应用程序,它严重依赖于通过asp.net提供的数据驱动内容。目前,大部分数据都是通过asp.net对象提供的,然后通过简单的ASHX处理程序进行XML序列化和发送。然后通过单例类中的e4x对其进行解析,以填充其自身或子类数组,然后可供应用程序的其余部分使用,而无需进行其他数据调用。

这有效,但这是最好的方法吗?我已经阅读了很多讨论这个主题的文章,但实际上找不到任何共识。

我应该考虑将这些转换为Web服务吗?如果是这样,我应该如何管理绑定,通过Flex自动导入它们或构建我自己的绑定?优缺点都有什么。这一决定的一个重要因素是速度,最低延迟和最高吞吐量是必不可少的

作为一个单独的问题,我们的应用程序不是位于域的根目录,而是在本地开发中对我们的开发服务器进行数据调用。因此,我们将flash变量添加到应用程序以指定appRoot,然后根据需要将其附加到服务URL。

MyService.url = GeneralData.ApplicationRootUrl + "Services/foobar.ashx";

这是最好的方法吗?我已经发现了rootURL属性,如果我使用它,它在这种情况下是如何工作的?如果我要将服务转换为Web服务,我将如何实现相同的功能以允许本地开发?

非常感谢

2 个答案:

答案 0 :(得分:1)

  

这有效,但这是最好的方法吗?

根据您的情况,Best是非常主观的。如果可能的话,我建议您使用AMF网关。这样,您的对象可以立即从服务器端对象(.NET类)转换为客户端对象(AS3类)。这节省了大量时间,因为您不必在后端手动创建XML,也不必在前端手动处理XML。此外,AMF的二进制格式将提供比XML或SOAP WebService更小的数据包。

对于.NET AMF选项,我会调查WebORBFlourineFX

答案 1 :(得分:0)

Flex应用程序始终在浏览器中加载,您可以使用相对URL,以便您的应用程序将连接到加载它的同一服务器。

MyService.url = "/Services/foobar.ashx";

“/”肯定会追加它来自的主机。并且最好连接到加载闪存的同一主机。

其次,SOAP Web服务使用xml序列化,因此如果您使用处理程序执行e4x序列化或使用Flash Builder的SOAP Web服务生成器,速度将几乎相同。 SOAP Web服务肯定会慢一些,但差异将在微秒到毫秒之间。

但是,使用Web服务,您的开发速度会提高,因为您不必创建代理类。