Adobe Flex与Silverlight比较

14

这不是一个纯技术问题,但我相信答案会对RIA社区有所帮助。

我们是一家软件开发公司,致力于开发股票交易产品。由于Adobe Flex在浏览器普及度和成熟度方面相对于Silverlight更具优势,我们选择在2008年中期采用了它。我们已经开发出了系统,并且对其感到非常满意。

现在我们计划推出产品的第二个版本,它将具有更先进的用户界面——基本上是Visual Studio 2005及以后版本的可停靠窗口和面板框架等。我们在互联网上搜索发现,针对Adobe Flex的第三方组件市场仍然非常小,但是对于Microsoft的Silverlight,存在许多高级的第三方组件,例如数据网格、停靠框架等。

我们可以在何时期待在Adobe Flex中出现类似的组件?如果我们要从头开始开发一切,专业人士认为开发新版Silverlight有何优劣之处?(目前假设在Adobe Flex和Silverlight方面都有相同的能力)

下一个版本预计于2010年中期推出。非常感谢任何关于此事的反馈。

13个回答

12
我可以通过直接经历告诉你,Flex是一个更高效的平台。我在一家大型RIA咨询公司工作,使用Flex和Silverlight构建了大量的应用程序,我们发现,相当的功能在SL中开发所需的时间比Flex多10-20%。Flex中的数据绑定支持比SL容易得多。我还可以告诉您,有经验的Flex开发人员可以在几周的开发时间内轻松构建一个MDI工具包。因此,我建议您考虑雇用有经验的Flex开发人员,而不是为SL组件支付费用。
SL确实有一个很大的优势,即C#可以在客户端和服务器上使用,并且业务逻辑可以在两个层次重用。这是重要的,不应该被忽视。ActionScript没有服务器端对应物,缺乏这种能力,尽管Flex与许多不同的后端技术(特别是使用BlazeDS的Java)配合得很好。Silverlight服务集成在.NET方面有各种选项(请参见下面Bart的评论),而Flex可以在RPC和数据推送(消息传递)中使用非常高效的AMF。BlazeDS是免费且开源的。
我还认为,仅基于第三方组件的可用性来决定开发平台并不是一个好主意。暂且不谈这个问题,MS平台一直拥有大量的组件开发商店和各种不同的组件可供选择。即使市场份额较小,SL也可能会比Flex更有选择的第三方组件。
最后,我认为微软不会很快放弃Silverlight。他们正在积极开发SL4的新功能,Blend工具还提供了一些设计师/开发人员交互方面的创新,甚至Adobe使用他们的新的Catalyst工具也在努力追赶。
如果您今天必须做出决定,我会建议选择Flex,特别是对于公共面向应用程序,在这种情况下,您不想失去用户,因为他们不能或不愿安装SL插件。在12-18个月内,我相信SL将会给Flex带来更多的挑战,但我认为它还没有到那个地步。

6
Silverlight 不仅限于 XML-RPC 风格的服务。它可以与 REST 实现一起使用:例如 WCF REST、ADO.NET 数据服务甚至 ASP.NET MVC URLs。它还支持使用 WCF 和 sockets 进行消息传递类型的服务。我认为这是 Flash/Flex 在服务方面非常薄弱的地方。正如您所提到的,ActionScript 没有服务器等效项,因此您需要用“真实”的语言编程。然而,问题不仅如此。正如您所暗示的,企业 Flex/Flash 应用程序需要额外的附加组件。而使用 Silverlight,您可以在单个企业项目解决方案中获得所有内容。 - Bart Czernicki
我已经更新了我的帖子,删除了那些错误的信息;感谢您的纠正。然而,我不会把BlazeDS称为“附加组件”;它是基于Servlet的技术,遵循标准Java规范,并且是免费/开源的。 - cliff.meyers
1
Bart说得一点也没错!FLEX框架很糟糕,典型的Java环境,意味着你必须使用库、黑科技和第三方工具才能完成任何事情。Silverlight使用.NET框架,你可以轻松获得所需的一切。我发现FLEX需要我一直重新发明轮子!哦,你想要真正的日期对象?哈哈,在FLEX中没有。有些东西是基于零索引的,而其他东西在FLEX中是基于1索引的。非常非常hackish。 - D3vtr0n
3
顺便提一下,现在已经过去一年了。 FLEX并没有得到太大的改善,而Silverlight则有所改善。我最近听说了很多关于Silverlight的好消息。您是否仍然会建议使用FLEX而不是SL,仅仅因为它有更好的支持? - D3vtr0n
@Devtron,在你的评论一年后,Silverlight 可能甚至不再是微软自己的 Windows 平台的首选平台。而 Flex 则具有 Android 和 iOS 的可部署性。你必须钦佩 Adobe 对该平台的承诺 :) - basarat

5

虽然我不能给你想要的答案,但我希望能给你一些好问题和想法,也许可以在过程中帮助你:

City Coder:Flex 3与Silverlight 3在企业开发中的比较

Microsoft Silverlight vs. Adobe AIR/Flex辩论

我个人认为,由于即将推出的html 5.0标准中的新功能,Adobe Flash在不久的将来将失去明显的用户群。此外,我更喜欢工具(Visual Studio),插件和语言(C#)胜过Adobe的同等产品,并且我认为这些更优秀。然而,我必须强调这仅代表我的观点.. :)


感谢您的回复。我的问题并不直接涉及Flex与Silverlight在技术优劣方面的比较(因为对我来说,两者都可以),而是涉及第三方支持和未来浏览器渗透率方面的考虑。 即使今天我在Flex中找到了一些可比的停靠框架,我也可能会纯粹出于其浏览器渗透率因素而选择Flex而非Silverlight。 - Khurram Shakir
如何才能渗透浏览器? - D3vtr0n

2
一些人在这个帖子中认为你不能使用Visual Studio开发Flex或基于Flash的项目。从2010年8月30日起,这种说法不再正确。您可能想看看Amethyst,它是一个具有多进程调试器、智能感知和重构功能的VS可视化(拖放式)Flash平台IDE:http://www.sapphiresteel.com
祝一切顺利
胡克

1

一个词(或两个)--> “开源”

世界正在转向开源。想想安卓与苹果。

你将如何在Linux平台上为客户运行应用程序,并保持信心。目前,我不是netflix的客户,因为没有“Moonlight”的支持。

我家里有三台电脑,都在运行Linux(不能花钱购买Windows许可证)!

考虑目标市场(以及未来几年的发展方向)。


3
我认为市场份额不是反对Silverlight的强有力论据。这个链接是获取浏览器和操作系统市场份额数据的很好的来源。目前Windows市场份额为92%,如果您可以通过Silverlight更快、更便宜地服务于92%的潜在客户,那么基于开发成本,其他8%可能甚至不值得争取。还有更好的反对Silverlight的论据。 http://marketshare.hitslink.com/operating-system-market-share.aspx?qprid=8 - invertedSpear
2
因为没有Moonlight支持,你不使用NETFLIX?多么可怕而且毫无关联的论点。 - D3vtr0n

1

其实我也在两者之间犹豫。事实上,我仍然考虑Flash,但是因为它更适用于动画而不是RIA,所以我将其排除了。对于Flex,有AIR可以使应用程序在桌面和Web上部署,尽管我还没有尝试过,也不知道使用起来有多容易。而且我也不确定Silverlight是否可以用作桌面应用程序?

比较Flex和Silverlight,我认为我们不应该只基于现在更广泛使用的东西来判断。Silverlight可能是一件好东西!

我刚开始探索这两个工具,并发现Silverlight的XAML标记比Flex的MXML更直观。此外,Silverlight将与C#集成,后者在LINQ等方面变得越来越好。因此,数据绑定(任何RIA的重要组成部分)更好。对于Flex,可以使用类似PHP和AMF的东西进行链接,但从我看到的情况来看,这似乎有点困难。话虽如此,我对两者都不太熟悉。

更新:Flex现在是开源的,而Silverlight是封闭的,对吧?因此,可以说Flex的使用成本更低。


2
Silverlight 3可以在浏览器之外运行(即作为桌面应用程序)。使用Visual Studio Express Edition、Eclipse或Mono Develop开发Silverlight也是免费的。 - James Cadd
“开源”如何等同于“更便宜”?我肯定错过了什么。FLEX的授权费用为2000美元。而开源?更像是散乱的代码。每个新版本都会破坏以前的版本,需要各种各样的技巧和修复程序。至少.NET是向后兼容且足够稳定,您可以使用它来制作企业应用程序。我为任何试图将FLEX用作现实解决方案的人感到遗憾。 - D3vtr0n

1

需要考虑的一件事是微软对Silverlight的承诺。Silverlight并没有起飞。他们会坚持多久?如果下一个版本的Silverlight没有获得显着的市场渗透率,微软会继续支持它吗?

即使他们坚持下去,即使它真的起飞了,他们会像他们对待Internet Explorer一样吗:将其开发成当时最棒的浏览器之一,如IE6,并且在接下来的5年中停滞不前,成为开发人员的主要难题?

Silverlight与Windows没有太多关系。使用Silverlight的人并不能给微软带来太多收益。对于微软来说,推动Silverlight并没有特别引人注目的商业案例。

Silverlight没有提供任何Flash没有的东西给用户。正是用户将推动Silverlight的采用,但在我电脑上安装它还没有令人信服的理由(顺便说一句),所以我还没有安装它。

Flex是Flash的天然伴侣,Flash是Adobe旗舰产品之一。Adobe不会放弃Flex。即使他们这样做了,它完全是开源的,即使Adobe明天消失了,Flex开发也可以继续进行。(遗憾的是,Flash运行时不是开源的,但它是一个相当好的多平台实现大部分开放SWF标准的实现,有开源实现在不断进步)

我在一个.NET/Flash工作室工作。我们使用Flex与.NET后端通信。让它们互操作可能有点麻烦(虽然不是不可能)。我喜欢.NET。能够用C#开发我们的前端将是很棒的事情。我会很喜欢它。但考虑到微软的技术游行,我们不愿意把所有赌注都下在Silverlight上。


1
我已经阅读过关于桌面端Silverlight渗透率现在已经超过30%的报道。如果Silverlight在一年内超过Java,我不会感到惊讶(我看到很多没有安装Java的电脑)。我认为即使只是作为Adobe的眼中钉,微软也会继续推动Silverlight的发展。 - Nosredna
2
即使他们这样做了,它完全是开源的...实际上并不是这样。开发过程对外部贡献是封闭的,而Flex只是一个生成SWF文件的编译器。这个方程式中最重要的部分Flash不是开源的,也可能永远不会是。"Silverlight没有为用户提供任何Flash没有的东西。" - Silverlight提供了许多东西。多种语言、可插拔的编解码器API、.NET库重用和组件是设计师友好的(与Flex相比)。 - Alexandru Nedelcu
好的,但运行时很好,而且跨平台,不会消失。至于你列出的Silverlight提供的那些东西:除了一个之外,其他都只对开发人员可见,而且我非常确定Flash已经支持多种语言(除非你指的是开发语言,那么这肯定不会直接惠及用户)。 - David
使用Silverlight的人并不会给微软带来太多收益。需要记住,Silverlight是由微软销售的工具(Visual Studio/Blend)制作的。正如@Nosredna所说,这也是为了让竞争对手更加艰难。 - IsmailS
我认为需要指出的重要一点是,Adobe之所以在今天存在,仅仅是因为美国政府通过反垄断法干预了微软。如果美国允许,微软很容易就能拥有Adobe。Adobe就像是被微软踩在鞋底下的蟑螂。 - D3vtr0n
1
你的帖子在2011年证明了自己的正确性。 - basarat

1

在我们决定未来RIA技术的最重要因素之一是RTL支持(特别是阿拉伯语) 。听到Silverlight 3.0仍不支持阿拉伯语(RTL),我感到非常失望,而Adobe Flex 4现在已经支持。我不想再次应用我们在Flex 3版本中使用的所有非标准技巧。所以现在Flex中的一个问题得到了解决,但在Silverlight中仍然存在...而且Flex中仍然没有停靠框架,所以我猜这将是僵局... :). 我会随时更新我们研究的任何新发现...


谈到“docking”时,您的意思是“面板”会相应地调整大小吗? - iceangel89
当我说 dock(停靠)时,我的意思是一些像 Visual Studio 2005/2008 中的停靠功能。 - Khurram Shakir
FLEX 4仍然没有完全支持阿拉伯语。他们一直说会有,但这已经多少年了??? - D3vtr0n

0

我有一些使用Flex的经验,但由于更偏向于.Net,我不能说Flex在开发商业应用方面能够与Silverlight相提并论。特别是在RIA Services V2和整个.Net框架以及Visual Studio的套件中,一切都是如此集成和专业。

唯一不使用Silverlight的原因是如果产品面向公众,并且由于Silverlight的低渗透率而失去客户。


0

Flex比Silverlight更兼容浏览器,因为它在Flash之上运行。然而,Silverlight需要下载,这可能会对代理或网络后面的用户造成问题(例如,在工作场所中,您无法安装东西)。Flex还具有比Silverlight更好的框架,因此您可以在几个点击和按键中自定义组件。

我同意你的看法,即VS和C#比它们的Flex对应物(FB3和ActionScript)更成熟,但你很快就会习惯它。

再说一遍,我是一个Flex开发人员,而不是Silverlight开发人员,因此我的观点可能有些偏见。然而,我选择Flex而不是Silverlight,是因为我认为它更兼容(几乎每个人都有Flash Player)并且比Silverlight有更好的支持,到目前为止,我并不后悔我的决定。


1
Flash和Silverlight都是需要“下载”的浏览器插件,所以我不确定你的意思。目前Flash的渗透率确实更高。 - Nosredna
我的意思是Flash更常见,可能已经安装在你的工作电脑(或任何地方)。那是我措辞不当。 - Aethex
我的关注点是Adobe Flex中对第三方组件的支持,比如Windows Docking Framework...在Silverlight中已经存在许多组件,但在Flex中我仍然没有看到同样类型的第三方支持... - Khurram Shakir
2
“Flex的框架比Silverlight更好”,我不同意这种说法,因为我使用过两者,没有这种感觉。当你做出这样的断言时,请给出例子。 - Alexandru Nedelcu
Flash也需要安装。我同意Flash已经过时,因此可以在更多的浏览器中找到它,而不是Silverlight。 - Shoban
Flash在浏览器上的存在比C#或Silverlight更长。在该平台上,它更加稳定和成熟。同样,在桌面应用程序方面,.NET胜过Adobe AIR。 - Aethex

0

如果它是一个股票交易产品,它是否实时流传股票价格?如果是的话,数据流传的成本将会有所不同。

它们都支持某种形式的数据推送(RTMP vs. Socket)和智能轮询(RTMPT/RTMPS vs. HttpDuplexPollingChannel)。

  • 基础设施成本:Flex使用LCDS/BlazeDS,而Silverlight使用IIS。
  • 开发成本:RTMP/RTMPT/RTMPS已经被定义(无法更改),而你需要为socket定义自己的协议(你需要自己处理安全性和压缩)

从编程角度来看,Silverlight应该更好,因为XAML绘制界面,C#更新XAML组件的状态。有很多C#开发人员和Expression Studio可以创建XAML组件。

MXML相对简单,你需要Flash来绘制花哨的UI。你可以等待Flex 4(在beta版中)带有FXG支持,然后它可能会获得更好的第三方组件支持。


亲爱的山,我们有自己的数据流格式(流式是实时的),现在我们正在使用Flex二进制套接字连接到我们的流服务器。相同的格式也被我们的基于桌面的C#应用程序使用,因此数据大小在此时不是问题,因为该格式将是我们自己的... - Khurram Shakir
我认为你应该等待一下Flex 4。否则,如果你需要第三方组件的话,Silverlight也是一个好选择。另外,使用Silverlight的一个优点是你可以轻松地将Silverlight应用程序移植到WPF应用程序中。 - Shane Ng
LCDS或BlazeDS并非运行FLEX RIA应用程序所必需的。这完全不是真的。当然,如果你想花钱购买它,那就去吧。这只是额外的FLEX混乱层需要处理。我在Windows 2008服务器上,在IIS中运行我的FLEX RIA应用程序。这并不难实现。 - D3vtr0n

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