[.net] Silverlight vs Flex


Answers

这里有两个问题:Silverlight与Flash作为平台,Silverlight与Flex作为RIA框架。

第一个问题取决于你的时间表。 Flash Player的覆盖率超过95%,Silverlight没有办法接近这一点。 不过,Silverlight可能会到达那里,毕竟它是由微软支持的。 如果您打算下周推出一个网站,并希望有大量的观众,Silverlight不是一种选择。 如果您的目标是推出一款非常酷的应用程序,并且每个人都希望使用它,那么它会有点不同,如果您的应用程序足够好,您的目标受众可能会安装Silverlight以便能够运行它。

至于第二个问题,关于在Silverlight中开发应用程序是多么容易。 Flex不仅仅是一套小部件,它是一个非常大的框架,可以减轻开发人员的工作量。 您可以使用仅核心Flash API编写相同的应用程序,但这将是非常多的工作。 根据Silverlight中可用的内容,这应该是决定时的一个重要因素。 如果你能缩短开发时间,是否有两个平台值得呢?

Question

我公司开发了几种类型的应用程序。 我们的许多业务来自多媒体类型的应用程序,通常在Flash中完成。 然而,现在房子的这一侧正在开始向Flex开发迁移。

我们大部分的其他开发都是使用.NET完成的。 我试图推动Silverlight开发,因为它会更好地利用.NET开发人员。 我更喜欢Flex平台上的Silverlight平台,因为Silverlight都是.NET代码。 我们有更多的.NET开发人员,而不是Flash / Flex开发人员,我们大多数的Flash / Flex开发人员都是图形艺术家(不是真正的程序员)。 他们现在推向Flex的唯一原因是它看起来像是从Flash开始的逻辑步骤。

我已经使用两者进行了开发,并且我确实相信Silverlight更易于使用。 但我试图说服那些只有Flash开发人员的人。

所以这里是我的问题:如果我要参加一个会议来赞扬Silverlight,那么为什么一个公司想用Silverlight代替Flex呢? 除了显而易见的“并非每个人都拥有Silverlight”之外,每个人有什么优点和缺点?




你真的不应该使用任何这些ActiveX2.0技术。 Silverlight和Flex都不是...

首先,它们都不过是“分布式winform框架,支持在浏览器中运行”,其次,它们不能很好地移植到其他设备上(特别适用于Silverlight),第三,它们不起作用与您网页的其他部分一致。 他们不适合残疾人等,等等。名单进入无限...

Adobe和微软都试图很难隐瞒这个事实,但在一天结束的时候,Silverlight和Flex都只是一个新的包装中的ActiveX。

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




尽管我已经完成了Silverlight的工作,并且对应用程序能够在浏览器之外生存的能力感到非常兴奋,但AIR的一个巨大优势是可以访问本地拖放功能。 这可以让你建立非常用户友好的图像或文件上传功能(例如Flickr上传)。 据我所知,MS没有专注于这种支持(即没有计划宣布)。




我们经历了同样的问题,Flex赢了。 我们的.NET开发人员一开始就担心,但是在Ajax和JavaScript的痛苦中工作了这么久之后,他们现在非常喜欢并且非常喜欢在Flex中工作。

这是一个简单的测试。 。 。 尝试查找至少3个真实世界Silverlight应用程序(不是游戏,视频播放器或小工具)的示例。 然后对Flex执行相同的操作。




几乎所有桌面平台(Windows,Linux,Mac)都正式支持Flash Player,而Windows将主要支持Silverlight。

下面的article提供了两个平台的比较。




有人说:“找到3个真实的世界Silverlight应用程序”。 好吧,我知道我的头顶上有些东西,但我仍然使用Google搜索它。 列表:

  • 2008年北京奥运会( 统计数据为250TB!)
  • Netflix点播播放器
  • 美国在线电子邮件客户端(可能尚未发布)

哦,不是视频播放器? 那么这就留下了UFC应用程序(这是一个混合视频/聊天/其他东西)和AOL电子邮件客户端。 Silverlight在视频方面表现出色,这就是它获得立足点的地方,但这并不意味着它无法做其他事情。 我认为没有理由只因为它的视频效果不好而驳回它。

Infoworld表示:“Silverlight具有相当的技术优势和相对良好的性能,它是一种非常强大的RIA技术,在使用.Net体验的程序员和拥有XAML体验的设计人员手中特别有用。” 这是一篇很好的文章,供您阅读有关您的问题。

我的回答是:如果你有一组适合.NET的开发人员,那么Silverlight应该首先在你的列表中。 如果没有,那么这是一个真正的投入。 我见过文章说Visual Studio是一个优秀的开发平台,与你在Flex中使用的平台相比。 但闪存几乎无处不在。

另外请记住,Silverlight 2几乎不使用Javascript(我认为没有,但我不积极)。 因此,任何由于JS而避免Silverlight是没有根据的。

如果性能很重要,Silverlight会在那里获胜。 我已经看到我的浏览器的CPU使用率达到100%多次,并且杀死任何运行Flash的窗口总是被删除。 在Chrome中,您可以看到消耗CPU的过程,这一点尤其明显。 如果您对Silverlight的潜在兴趣感兴趣,请查找QuakeLight(Quake的Silverlight端口)。 它塑造得非常好。

我真的认为这取决于您的开发人才所在,以及您将提供什么样的应用程序。 简单的游戏? 闪。 业务线应用程序? Silverlight的。 在两者之间? 去开发你的开发者推荐。




你永远不会对这个问题得到公正的投票,因为它有很多微软的开发者。

此外,人们可能会投下这个答案,这说明了一切。

我说让你的开发者尝试这两个平台,并看看他们更喜欢哪一个。

为了回答下面的评论,我只注意到,尽管推荐Flash / Flex的答案很多,但Silverlight的答案还有很多。 这不是一个谎言的问题,它只是赞成你熟悉的东西,不一定是最好的平台。




我的团队曾经在Flex中编写丰富的Web功能,现在将它们写入Silverlight。

我们这个开关的原因是:

  • FlexBuilder构建在Eclipse上。 Eclipse太糟糕了! 免费,但错误缠身,故障填补和缓慢。
  • FlexBuilder是Expression Blend的两倍,我们无论如何都可以免费获得MSDN。
  • Flex是源代码控制的一种痛苦,它不喜欢将文件放在一个地方,而且它与解决方案的其他部分(我们尝试使用SourceGear Vault和SVN)无法兼得。
  • Flex的ActionScript版本不喜欢大多数SOAP实现,特别是它具有.NET WebMethod的各种问题。
  • 尽管我们定期使用授权的Flex组件,但它决定我们没有该版本,并添加了仅限演示的水印。解决此问题的唯一方法是将项目移动到位,重新安装Flex,重新安装许可证并重建它。
  • FlexBuilder根本不喜欢Vista。
  • Silverlight的接受程度越来越高,一旦它达到我们可以将它添加为我们转换的相关功能要求的水平。 如果我们为网络(而不是公司)观众工作,我不确定我们可以拥有。

我们的其余项目是.Net和C#,你可能会发现Java商店中所有这些问题都不那么重要。




在一天结束时,您的开发人员不应该口述您的技术。 这绝对是一个应该基于用户的产品决策。

如果您正在部署到消费者互联网,则需要Flash Player或AJAX。 如果您正在为.net企业部署到专用LAN,则可以选择。




Flex开发的另一个优点是,您可以切换到使用相同源代码(和相同IDE)开发桌面应用程序(Adobe AIR)并从Web分发它们。 你可以看看这个 Flash平台的未来。
2011年第3季度更新:Flash 11支持低级3D加速,并且已经有很多支持它的框架和主要引擎(虚幻引擎3,Unity)。 然而,未来的卖点是AIR应用程序可以在Windows,Mac,Android,Playbook和iOS平台上运行(Linux支持已被删除)。 在两者之间进行移植之间(至少在使用Adobe CS5.5 +时)之间有一个绝对的麻烦。

2015年第二季度更新:Silverlight已正式销毁。 Adobe AIR仍然活着,但并不兴旺 - 根据您的技能和工具链,这可能很有用。 微软和Adobe都承认HTML5是要走的路(无论是使用AIR还是Apache Cordova或Visual Studio)。

2017年第3季度更新:哈哈哇,谁甚至使用Flash了。




我们正在做Silverlight和Flex,这两个都是开发人员的观点。

Silverlight的优点:

  1. C#的功能,代码片段,重用现有的C#算法实现
  2. 其他语言的强大功能,泛型和Linq等
  3. 本机执行CLR而不是Flash的Action Script Interpretator的能力
  4. 一个集成的Visual Studio for All Development
  5. Expression Blend是非常酷,更高级的编辑器,然后是Flex Builder
  6. XAML是搜索引擎友好的
  7. 非常漂亮的状态转换并且易于定义它们
  8. 线程和异步任务
  9. 无障碍,没有人知道微软总是在其所有产品上提供最好的访问功能,他们总是与残疾人合作,比较浏览器,只有IE支持完全可访问性和Safari / Firefox等等。

Silverlight的缺点:

  1. 严格的微软平台,我知道很多人会争论,但目前的情况下,英特尔Mac的一半人不能得到silverlight 3.0的工作,所有PPC的Mac人不能使用Silverlight 2.0以及没有silverlight的Linux。
  2. 有单声道,但没有得到微软的官方支持,它总是落后于反向工程.NET并将其移植到其他平台上,但它还没有开箱即用。
  3. 大多数组件/控件都是“密封的”,所以它很难扩展它们并轻松地重新制作新的组件。
  4. 错误的CustomControl / UserControl体系结构。 例如,您不能将XAML的根作为ComboBox或任何其他控件,并且让它具有设计和代码,您可以创建自定义控件,但它们太复杂
  5. 绑定需要组件命名,并且不支持像flex这样的实例表达式,尽管Silverlight中的双向绑定很好,但是您必须为一个数学表达式编写多个绑定的长代码
e.g.
// this is possible in flex..
// but not in silverlight
<mx:TextBox id="firstName"/>
<mx:TextBox id="lastName"/>

// display full name..
<mx:Label text="{firstName.text} {lastName.text}"/>

Flex的优点:

  1. 真正平台独立,支持各种硬件和操作系统,真正在任何地方工作都很棒。
  2. 开源使得它很容易理解和扩展功能。
  3. 每个控件/组件都可以扩展,并且覆盖默认行为的限制较少。
  4. 创建新组件的最简单方法是,您可以让mxml从任何控件派生出来,并通过广泛的绑定来扩展它们
  5. Flex包含很多控件,你不需要任何第三方库

Flex的缺点:

  1. 缓慢执行迭代执行,无线程! 没有异步任务!
  2. 基于第1点,没有很好的动画或图形可能
  3. 没有泛型,没有其他语言,没有linq ..
  4. 数字类有一个错误,不能存储完整的64位长的值
  5. Eclipse不好设计出好用户界面

结论

  1. 我们在数据应用中使用flex,这些都是简单的表单处理应用程序
  2. Silverlight为极其丰富的图形和动画





Links