WPF和Flex的区别

3

我是一名WPF开发人员,几天前我了解到了Flex。现在,我有以下问题。

  1. 它们都用于创建丰富的GUI应用程序。那么,它们互为竞争对手吗?

  2. 如果两者可用于相同的目的,则应优先选择哪一个。

  3. 此外,我还想知道WPF基于DirectX进行呈现,因为它执行矢量呈现,但同时我也很想知道Flex是如何呈现的,Flex基于什么?

  4. Flex是否也可以使用基于GPU的渲染...是否有任何方法在Flex中使用着色器。

我对Flex非常困惑,因为我对Flex非常陌生........所以,请帮我解决疑惑,因为我可能对Flex的看法完全错误。

2个回答

3

1 两者均可用于创建丰富的GUI应用程序。因此,它们是否彼此竞争。

只有在一定程度上。据我所知,WPF只能用于创建基于Windows的应用程序。Flex最初的主要目标是Web,并且大多数Flex应用程序都是所谓的“富Internet应用程序”。

后来Adobe创建了AIR,这是一个虚拟机,可以让您在操作系统本身上运行相同的应用程序,通常通过重用编写为Web应用程序的99%的代码来实现。添加了一些API以访问操作系统的本地功能(客户端数据库,文件I / O,运行/访问本地进程等)。AIR应用程序可以在Windows,Mac和Linux上部署,尽管已停止开发适用于Linux的AIR vm。

这个故事的最后一步是,AIR应用程序现在也可以打包为可在移动操作系统上部署的应用程序。再次因为它在VM中运行,这提供了“编写一次,部署到任何地方”的解决方案。支持Android和iOS(不确定BlackBerry但谁在乎)。在Flex方面,一些专门针对移动设备的UI组件被添加到框架中。

2 如果两者用于相同的目的,那么应该选择哪一个。

选择完全由您决定,取决于诸如对框架的了解、您可能具有的特定要求等因素。

3 此外,我也想知道 WPF 是基于 DirectX 进行渲染的,因为它进行基于矢量的渲染,但同时我也很想知道 Flex 是如何渲染的,Flex 基于什么?

Flex 是一个编译成 ActionScript 的框架,然后再编译成 abc 字节码。该字节码将由 Flash VM 解释和运行。
Flash 的根源在于基于矢量的渲染(它是在过去两个十年中在 Web 上呈现矢量图形的解决方案)。因此,Flex UI 组件的所有库存图形都是基于矢量的。

4 Flex 是否也可以使用基于 GPU 的渲染……是否有任何方式在 Flex 中使用 Shader。

在过去的五年中,Flash/ActionScript API 增加了 GPU 加速功能,但由于 Flex 框架在此之前就被创建,将其移植到新的 GPU 加速系统将会太复杂,因此Flex不能从这种进化中受益。
但是您可以在GPU加速的组件旁边使用Flex UI。例如,您可以创建一个普通的Flex应用程序,只需一个组件即可呈现一个生存在Flex显示列表之外的3D模型。

通常,只有为Flash虚拟机编写的游戏才会利用GPU加速。其中大多数使用Starling框架。对于移动UI,您还可以使用FeathersUI框架,它在Starling的基础上提供了一个GPU加速的移动端组件集。


请注意,@Vinodharajan的回答并不完全正确,因为Flex框架不再是Adobe公司的财产。大约两年前,Adobe将其捐赠给Apache基金会,并自那以后一直在那里发展。

0

Flex是Adobe基于前端的产品。它内部使用Flash在浏览器上呈现其内容或使用Adobe Air作为独立应用程序。它可以使用硬件渲染。您可以将其视为Adobe对WPF的替代方案。


Vinod,你说的我已经知道了,但我想要更深入、更清晰的理解。 - Yogesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接