Silverlight与Flex的比较

70

我的公司开发了几种类型的应用程序。 我们很多业务都来自于制作多媒体应用程序,通常使用Flash完成。 但是,现在这方面的业务正在开始向Flex开发迁移。

我们大部分的其他开发工作都是使用.NET完成的。 我正试图推动使用Silverlight开发,因为它将更好地利用员工中的.NET开发人员。 相比Flex平台,我更喜欢Silverlight平台的一个简单事实是Silverlight完全由.NET代码构成。 我们拥有比Flash/Flex开发人员更多的.NET开发人员,而且我们大多数的Flash/Flex开发人员都是图形艺术家(不是真正的程序员)。他们只是因为它似乎是从Flash逻辑上的下一步巩固,才会倾向于现在选择Flex。

我已经使用过两者进行开发,我真诚地相信Silverlight更易于使用。 但我想说服那些只是Flash开发人员的人。

所以这是我的问题:如果我要参加一次表扬Silverlight的会议,公司为什么要选择Silverlight而不是Flex? 除"并非所有人都有Silverlight"之外,每个平台的优缺点是什么?

22个回答

5

我的团队曾经使用Flex编写丰富的Web功能,现在使用Silverlight编写。

我们切换的原因:

  • FlexBuilder建立在Eclipse之上。Eclipse太糟糕了!虽然免费,但有很多错误、故障和速度慢。
  • FlexBuilder的价格是Expression Blend的两倍,而我们通过MSDN可以免费获得Expression Blend。
  • Flex很难进行源代码控制,它不喜欢将文件放在一个地方,并且与您方案的其他部分不兼容(我们尝试过SourceGear Vault和SVN)。
  • Flex的ActionScript版本不支持大多数SOAP实现,特别是它在处理.Net WebMethod时存在各种问题。
  • 尽管我们定期使用许可的Flex组件,但它仍会决定我们没有那个版本,并添加只有演示水印。唯一的解决办法是拆开项目,重新安装Flex、重新安装许可证并重建项目。
  • FlexBuilder不喜欢Vista。
  • Silverlight的接受度正在增长,在我们可以将其作为相关功能的要求的级别时,我们切换了。如果我们为网络受众(而不是企业)工作,我不确定我们是否能这样做。

我们项目的其余部分是.Net和C#,您可能会发现在Java公司中所有这些问题都不太重要。


我们在Eclipse中使用Subversion进行Flex开发,并发现它非常稳定和高效。对我来说,说Flex很难进行源代码控制毫无意义。 - Dave
@HDave - 我们发现 Flex 项目在新用户首次检出(最初使用 Vault,但后来也使用 SVN)后经常需要重新构建。如果他们在检入时重建了它,原始用户将得到一个损坏的项目。我们还经常丢失 Flex Charts 许可证,导致集成构建在图表上出现演示水印并禁用功能。也许现在 Eclipse 更好了,但当我们在2008年使用它时,它倾向于崩溃或以其他方式失败。 - Keith
我的猜测是时间对于Flex/Eclipse/Subversion来说是个朋友。我只使用了15个月,但没有遇到这些问题。我一直在使用Flash Builder 4,虽然我不是它的粉丝,但至少checkout/commits可以正常工作。我还使用Maven/Flexmojos——但那需要花费一些时间去理解。 - Dave

5
作为一名图形设计师,我在过去几年中断断续续地使用Flash,并在过去的1.5年中使用Silverlight(以及它的大哥WPF)。根据我从我的团队(他们都是开发人员或前开发人员)听到的,如果你的.NET开发人员将负责所有编程工作,请选择Silverlight。我喜欢Flash,但即使在Flash 9及以上版本中进行了面向对象编程的重构,它仍然是一种有些古怪的语言,来回切换AS3和C#可能会让你的开发人员感到疲惫不堪 :-)。
对于你的设计师,请执行以下操作:
- 为他们获取Expression Blend副本,这是Silverlight / WPF的GUI开发工具。 - Blend具有相对陡峭的学习曲线,并且界面会向您提供大量变量/选项,因此请投资一些培训,并给您的设计师时间适应UI。 - 谈到培训,请订阅Lynda.com视频库,特别是Lee Brimelow Expression Blend培训课程。 - 注意:Blend和WPF变化很快,因此有时您会遇到在Blend的下一个beta / CTP中修复的Blend中的错误。例如,在Blend 2中存在一个错误,防止我的故事板(动画)在最近的项目中工作。我升级到Blend 2.5CTP,它就可以工作了。 - Silverlight内容并不总是与最新的Silverlight插件Beta版本兼容,如果您正在测试仅在最新Silverlight插件中可用的某个新功能,请记住这一点。 - 投资于一台强大的系统(四核,4G内存等)。Blend消耗了很多资源,特别是当你有大量图层时。例如,我正在处理一个具有100多个图层(另外还有100多个用户控件)和40-50个故事板的应用程序。每隔几分钟,我必须重新启动Blend,因为UI停止响应(但不会冻结)。要么这样做,要么将您可以的所有内容移动到用户控件中。

3
“基础应用程序中有100层(!)(一些用户控件中还有100多个层),以及大约40-50个故事板。听起来好像你需要将这些东西分解到更多的用户控件中。你肯定不会在同几分钟内处理所有这些事情吧?” - jcollum

3

我们曾经遇到过同样的问题,最终选择了Flex。起初我们的.NET开发人员有所顾虑,但在长时间苦于Ajax和JavaScript之后,他们现在非常喜欢并且享受在Flex中工作。

以下是一个简单的测试...尝试找到至少3个实际应用Silverlight的例子(不包括游戏、视频播放器或小工具)。然后再为Flex做同样的测试。


“Ajax和JavaScript的痛苦” <-- 与Silverlight当前的实现无关,它不使用JS。 - jcollum
你的开发者已经会编写JavaScript,这可能与他们快速掌握Flex有很大关系。 - Ian Ringrose

3
正如Kibbee所暗示的,利用现有的.Net开发人员的论点并不可信。要成为所有方面的.Net开发专家是不可能的。这个平台太庞大了。Java也是一样。从技能角度来看,Silverlight唯一的优势就是你可以使用自己喜欢的.Net语言进行编码。如果你已经在使用JavaScript进行任何重要的Web开发,那么ActionScript只是一个变体,这个优势相当小。因此,将程序员转换为Flex或Silverlight实际上是要学习平台的API。

2

尽管我已经使用过Silverlight并且对于应用可以独立于浏览器之外的能力感到非常兴奋,但AIR的一个巨大优势在于它提供了原生的拖放功能。这使得您可以构建非常用户友好的图像或文档上传功能(例如Flickr上传器)。据我所知,微软目前还没有专注于那种支持(即没有宣布计划)。


1
我的经验法则是:如果你的公司正在开发基于互联网的多媒体软件,且有各种平台的客户,并且你不涉及数据库密集型应用程序,则Flex是明确的选择;如果你的公司同时开发基于互联网和DVD的产品,这些产品可能交互性较差但更加密集(CPU、内存),并且使用了大量的数据库事务,则Silverlight更为合适。

1

有人说:“找3个真实的Silverlight应用程序”。好的,我脑海中知道一些,但我还是去谷歌了一下。列表如下:

  • 2008年北京奥运会(这里有统计数据, 提供了250TB的数据!)
  • Netflix点播播放器
  • AOL电子邮件客户端(可能尚未发布)

哦,不是视频播放器?那就只剩下UFC应用程序(它是混合视频/聊天/其他内容)和AOL电子邮件客户端了。Silverlight在视频方面表现出色,这也是它获得立足点的地方,但这并不意味着它不能做其他事情。我认为没有理由仅因为它擅长视频就将其排除在外。

据Infoworld [链接]报道,“Silverlight具有实质性的技术优势和相对较好的性能。它是一种非常有用的RIA技术,特别适用于具有.Net经验和XAML经验的程序员和设计师。” 这是一篇关于您问题的好文章。

我的答案是:如果您有一支熟悉.NET的开发团队,那么Silverlight应该排在首位。如果没有,那么就真的很难说了。我看过一些文章说,与Flex使用的开发平台相比,Visual Studio是一个更优越的开发平台。但Flash几乎无所不在。

此外,请记住,Silverlight 2 几乎不使用Javascript(我认为是零,但我不确定)。因此,任何因JS而避免Silverlight的做法都是没有根据的。

如果性能很重要,Silverlight就是最好的选择。我曾经看到浏览器的CPU使用率多次达到100%,而关闭运行Flash的窗口总是可以解决这个问题。在Chrome中尤其明显,你可以看到消耗CPU的进程。如果你对Silverlight的游戏潜力感兴趣,可以寻找QuakeLight,这是Quake的Silverlight移植版,它正在取得良好的进展。
我真的认为这取决于你的开发人才所在和你将要交付的应用程序类型。简单的游戏?Flash。业务应用程序?Silverlight。介于两者之间?听从开发人员的建议。

1
如果你了解.NET,Silverlight 3.0是一个不错的选择。我正在使用它并且非常喜欢。我不需要去搞AJAX或JS(顺便说一下,我不知道那个人在说什么,也许是SL 1.0)。对于数据,大多数都是异步WCF调用(LINQ to SQL在WCF后面)或XML文件或RIA服务。它可以让你使用大多数着色器FX,它有样式、控件模板和本地访问Windows/Mac剪贴板。我可以运行高清视频,大多数进程即使在慢CPU下也能很好地运行。我还喜欢数据绑定、控件绑定和可观察集合,这些都为我节省了很多时间。此外,我还可以使用LINQ,这是一个主要的时间节省器,更不用说使用Visual Studio进行调试了。
我正在开发企业.NET应用程序,所以我知道我的安装基础,并且他们将安装插件(通常只需30秒)。对于前端网站,您可能会失去一些不想安装Silverlight或不运行Mac或Windows的用户。但是,你可以在3.0之外的浏览器中使用SL应用程序。
我可能是一个有偏见的.NET人,但我开发得如此之快,以至于我必须推荐它。

1

我认为Silverlight和XAML比ActionScript更可取,虽然我不熟悉ActionScript IDE,但我熟悉VS2008和Expression Web/Blend,它们是非常好的开发环境,并且一直在不断改进。我会选择Silverlight,而让用户安装插件的关键是要有一个良好的插件检测页面,解释什么是SL以及为什么需要它。要查看此示例,请转到http://memorabilia.hardrock.com/并禁用SL插件。


0

你绝对不应该使用任何ActiveX2.0技术,无论是Silverlight还是Flex...

首先,它们都只是“分布式WinForms框架,支持在浏览器中运行”,其次它们不易于移植到其他设备(特别是Silverlight),第三,它们与页面的其他部分不兼容。它们不适用于残疾人等等。问题无穷无尽...

Adobe和Microsoft都试图极力隐藏这个事实,但最终Silverlight和Flex只是一个新包装的ActiveX...

当然,它们在沙箱中运行,是托管语言等等。但它仍然是一个大块的BLOB被下载到本地在您的浏览器中运行,也就是说它是ActiveX...


1
我经常听到这个理论,但我不得不提出异议。你建议我用Javascript和CSS开发我的第一人称射击游戏,这样所有使用Plan 9的青少年都可以玩吗?企业LOB应用程序可以特别从RIA提供的部署和维护优势中受益。使用HTML/CSS/JS开发丰富内容(比如3D引擎)非常困难,而且容易出现“方孔/圆孔”症候群。RIA有其存在的价值,我期待在这个领域看到更多的竞争。 - Alex
1
关于企业应用程序,HTML对我所在的领域(资源)来说不是一个选项。所需的内容和功能太过动态。对于使用Microsoft SOE的操作,Winforms是最好的选择。WPF通过单击一次即可部署使事情变得更加容易,但您仍然必须处理无休止的官僚主义,以获得桌面应用程序在SOE中获得批准的问题。在.NET代码下运行不需要与IT人员进行正常讨价还价的浏览器中的东西是一种乐趣。 - Alex
1
可视化引擎是显而易见的例子。是的,Google应用和Google文档看起来很棒。不幸的是,在W3C中找到这种人才并不容易。你认为为什么Flash一开始就变得如此流行?在我看来,它允许开发人员快速制作高度动态的内容,而不必成为W3C专家。我也对在Javascript中编写复杂应用程序感到不安...这不是它设计的真正目的。如果像NativeClient这样的开放替代方案变得流行,那将是很好的,但今天我在公司SOE中获得批准的可能性为零。 - Alex
@Thomas,JS应该被淘汰了,因为在Flash和Silverlight之后它已经不再需要了。HTML已经过时了,很快就会像汇编语言、过程式语言等一样结束。人们发明技术是为了减少代码行数,从而节省开发时间。实际上,你的回答甚至与问题不符。请求者问的是Silverlight vs Flex,答案不能以“停止使用它们两个”这种形式呈现。 - Akash Kava
"它们对于残障人士等存在很多问题,等等,诸如此类的问题。这是不正确的,微软一直在他们的所有产品中提供良好的辅助功能,UIAutomation Peer技术远比市场上任何其他技术都要好." - Akash Kava
显示剩余2条评论

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