Silverlight与Flex

时间:2008-08-21 19:34:00

标签: .net flex flash silverlight

我的公司开发了几种类型的应用程序。我们的很多业务来自于多媒体类应用,通常是在Flash中完成的。然而,现在房子的那一边开始转向Flex开发。

我们的其他大多数开发都是使用.NET完成的。我正在努力推动Silverlight开发,因为它将更好地利用.NET开发人员。我更喜欢Silverlight平台而不是Flex平台,因为Silverlight是所有.NET代码。我们的工作人员比Flash / Flex开发人员多,我们的大多数Flash / Flex开发人员都是图形艺术家(不是真正的程序员)。他们现在推动Flex的唯一原因是因为它似乎是Flash的合理步骤。

我使用两者进行了开发,老实说我相信Silverlight更容易使用。但我试图说服那些只是Flash开发人员的人。

所以这就是我的问题:如果我要参加会议来赞美Silverlight,为什么公司想要使用Silverlight而不是Flex?除了显而易见的“不是每个人都有Silverlight”之外,每个人的利弊是什么?

22 个答案:

答案 0 :(得分:52)

我认为你应该把Silverlight视为一个长期的游戏,正如微软似乎正在做的那样。当您关注覆盖范围和安装基础时,何时使用Silverlight与Flash之间存在明显的平衡,但这里有一些原因Silverlight是一个很好的移动方向:

  1. 第二个推动者的优势 - 就像微软用.NET构建了一个“更好的Java”一样,他们能够看到你今天如何从零开始设计一个RIA插件。它们具有了解人们今天如何使用网络的优势,这是Flash的发明者永远无法准确猜测的。 Flash可以添加功能,但它们无法真实地移动平台并重新开始。

  2. 开发人员熟悉 - 虽然Silverlight是一个新模型,但开发人员并不完全不熟悉。他们将“获得”Silverlight的工作方式比他们理解使用新的脚本语言和新的事件范例启动新的开发环境要快得多。

  3. 摆脱Flash中的时间轴模型 - Flash最初是为基于关键帧的动画而构建的,虽然有很多方法可以将其抽象出来,但它仍然是Flash工作原理的核心。对于以应用程序为中心的模型,Silverlight会抛弃它。

  4. ScottGu - ScottGu被解雇了Silverlight。努夫说。

  5. 酷炫的新功能 - 虽然Silverlight在一些明显的功能(如网络摄像头/麦克风集成或3D /图形加速)方面仍然有一些赶上Flash,但Silverlight内置了一些灵巧的新技术 - Deep Zoom就是一个例子。我在Silverlight方面看到了更多“革命性”技术,而此时Flash似乎处于维护模式。

答案 1 :(得分:30)

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

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

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

答案 2 :(得分:22)

我认为Silverlight对于拥有.NET开发人员但没有设计师经验的公司最有利。

就找到C#或VB开发人员而不是找到ActionScript专家而言,技能集将更容易找到。然而,有权衡:

设计经验不仅是对具有艺术技能的设计师的投资,也是对Adobe提供的知识和工具的投资。您几乎可以保证专业设计师使用Mac并具有Adobe工具的使用经验。

目前,Silverlight设计工具已经完成了一半,令人头疼。例如,当尝试渲染包含IValueConverter的任何xaml时Blend错误,这是有问题的。我不知道Adobe开发人员的体验是什么,我确信它是多毛的。

所以在游戏的这个阶段,它归结为人力资源:

如果您拥有.NET经验并且很少投入设计技能,请转到Silverlight。编程技巧/工具将可转让。 如果您有设计经验和技能,请选择Flex。设计师技能/工具可以转让。

无论哪种方式,两个客户端平台都需要与服务进行通信才能获取数据,因此您将始终利用后端的现有编程专业知识。

从另一个角度转移Jon's意见:

我认为你应该把Flex视为一个长期的游戏,正如Adobe似乎正在做的那样。当您关注覆盖范围和安装基础时,何时使用Silverlight与Flex之间存在明显的平衡,但是更多的原因是Flex是一个很好的移动方向:

  1. 第二个推动者的优势 - 就像 Adobe构建了一个“更好的Java Applet” 使用Flash,他们能够看到 你是如何设计运行时的 刮,今天。他们有 知道人们如何使用的优势 今天的网络,一些东西 现有客户的发明者 平台永远不会有 准确猜到了。 .NET可以添加 功能,但他们不能 现实地扔掉了平台 重新开始。

  2. 设计师熟悉 - 同时 Flex / AIR是一种新的编程模型, 它并不完全陌生 设计师。他们将“获得”方式 Flex的工作速度比 他们会理解一个新的 具有新功能的设计环境 糟糕的工具和新动画 范例

  3. 摆脱RGB颜色模型 Silverlight-.NET最初是 为Windows而建,它就在 它是如何运作的核心。 Flex放弃了 很久以前以设计为中心 模型。

  4. 您的所有工具都在Mac上运行。纳夫 说。

  5. 酷炫功能 - Silverlight依旧 有一些赶上来 Flash上​​一些明显的功能(如 网络摄像头/麦克风集成,或3D / 图形加速)。

答案 3 :(得分:15)

我们正在做silverlight和flex,这是开发人员对两者的观点。

Silverlight的优点:

  1. C#的功能,代码片段,重用现有的C#算法实现
  2. 其他语言的力量,Generics和Linq等
  3. 本机执行CLR而非Flash的Action Script Interpretator
  4. 的强大功能
  5. 一个用于所有开发的集成Visual Studio
  6. Expression Blend非常酷,更高级的编辑器,然后是Flex Builder
  7. XAML是搜索引擎友好的
  8. 相当不错的状态转换,很容易定义它们
  9. 线程和异步任务
  10. 无障碍,没有人知道微软总是在其所有产品上都提供最佳的可访问性功能,它们总能与残障人士一起使用,比较浏览器只有IE支持完全可访问性,而Safari / firefox等也没有更接近。
  11. Silverlight的缺点:

    1. 严格意义上的微软平台,我知道很多人都会争辩但是在目前的情况下,有一半的英特尔Mac用户无法使用Silverlight 3.0,所有PPC Mac用户都不能使用Silverlight 2.0,而且没有银色用于Linux。
    2. 有单声道,但没有得到微软的正式支持,它将始终落后于逆向工程.NET并将其移植到其他平台上,它尚未开箱即用。
    3. 大多数组件/控件都是“密封的”,因此难以扩展它们并覆盖以轻松制作新组件。
    4. Bad CustomControl / UserControl架构。例如。

    5. 你不能将XAML的根作为ComboBox或任何其他控件让它既有设计也有代码,你可以创建自定义控件但它们太复杂了
    6. 绑定需要组件命名,并且不支持像flex那样的实例表达式,尽管双向绑定在silverlight中很好但是你必须为一个数学表达式编写多个绑定的长代码
    7. 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包含许多控件,您不需要任何第三方库
      6. Flex的缺点:

        1. 迭代执行执行缓慢,没有线程!!没有异步任务!!
        2. 基于第1点,没有伟大的动画或图形可能
        3. 没有泛型,没有其他语言,没有linq ..
        4. Number class有一个bug,无法存储完整的64位长值
        5. Eclipse设计出很棒的UI
        6. 是不好的

          结论

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

答案 4 :(得分:13)

Silverlight的问题在于,仍然有很多人没有安装它。另外,如果他们只熟悉更传统的服务器端.Net编码,我不确定现有的.Net开发人员能够充分利用现有技能。

将Silverlight推向Flex的原因是什么?如果您不得不向SOFlow社区询问原因​​,那么您是否愿意推动它似乎很奇怪。

答案 5 :(得分:11)

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

2015年第2季度更新:Silverlight正式死亡。 Adobe AIR是活生生的,但并不繁荣 - 根据您的技能和工具链,它可能是有用的。微软和Adobe都承认HTML5是最佳选择(无论是使用AIR还是Apache Cordova或Visual Studio)。

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

答案 6 :(得分:7)

不要忘记:

Flex是非常跨平台的,因为它是使用Java编译编译的,这意味着您可以在开发Flex应用程序时轻松使用Mac或Linux。我现在的巡航控制设置(使用Linux)我构建了构建Flex应用程序,但开发人员同时使用Mac,Linux和Windows。

根据我的经验,Java开发人员在Flex Builder中感觉很自在,因为它基于Eclipse。

答案 7 :(得分:7)

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

此外,人们可能会对这个答案进行投票,这说明了这一切。

我说让开发人员尝试这两个平台,看看他们更喜欢哪个。

为了回答下面的评论,我只是注意到虽然有很多答案推荐Flash / Flex,但Silverlight的答案却有很多。这不是说谎的问题,它只是偏爱你熟悉的东西,不一定是最好的平台。

答案 8 :(得分:6)

当涉及到Flex时,Silverlight程序员不知道他们错过了什么。 Silverlight缺乏Flex所具有的组件模型和事件触发功能。使用XNA和C#,我的一个朋友必须跳过各种环节才能使他的Silverlight应用程序正常工作。然后,它必须交给设计师,让它看起来不错。

收听Silverlight上的deepfriedbytes.com播客,你会听到甚至一些真正推动Silverlight的人,也承认其中的一些问题。 (我想想,如果我没记错的话,其中一个人为微软工作,但我可能错了 - 我上周听了它)。他们同意Silverlight目前还没有为任何大型应用做好准备。

我会选择Flex,以获得一个干净,直接的方法 - 特别是如果您已经熟悉Flash和ActionScript 3.0。 Flex在我看来更有意义 - Silverlight仍然需要成熟。

答案 9 :(得分:6)

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

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

答案 10 :(得分:5)

Asa图形设计师,过去几年我使用Flash(开启和关闭),过去1。5年使用Silverlight(及其大哥WPF)。根据我从团队中听到的消息(所有人都是开发人员或前开发人员,如果您的.Net开发人员将完成所有编程,请使用Silverlight。我喜欢Flash,但即使对ActionScript 3进行OOP大修) Flash 9及以上,它仍然是一种有点古怪的语言,在AS3和C#之间来回传递可能会让你的开发人员疯狂: - )。

对于您的设计师,请执行以下操作:

  • 获取Expression Blend的副本,这是Silverlight / WPF的GUI开发工具。

  • Blend的初始学习曲线有点陡峭,界面会抛出大量的变量/选项,因此请投入一些培训,让设计师有时间熟悉UI。

  • 说到培训,请订阅Lynda.com视频库,尤其是Lee Brimelow Expression Blend培训课程。

  • 注意事项:Blend和WPF变化很快,所以有时候你会遇到Blend中的错误,这些错误在Blend的下一个beta / CTP中得到修复。例如。 Blend 2中有一个错误阻止我的故事板(动画)在最近的项目中工作。我升级到Blend 2.5CTP,它运作良好。

  • Silverlight内容似乎并不总是与Silverlight插件的最新Beta一起使用,如果您正在测试一些仅在最新Silverlight插件中提供的新功能,请记住这一点。

  • 投资强大的系统(四核,4G内存等)Blend消耗大量资源,尤其是。当你有大量的图层。例如。我正在开发一个基础应用程序中超过100层(!)的应用程序(以及一些用户控件中的另外100多个),以及大约40-50个故事板。每隔几分钟,我必须重新启动Blend,因为UI停止响应(但不会冻结)。要么是这样,要么将所有内容都移到用户控件中。

答案 11 :(得分:5)

我的团队过去常常在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商店中所有这些问题都不那么重要。

答案 12 :(得分:3)

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

答案 13 :(得分:3)

我们经历了同样的问题,Flex赢了。我们的.NET开发人员一开始很关注,但是经过Ajax和JavaScript的长期工作,他们现在很喜欢并且非常喜欢在Flex中工作。

这是一个简单的测试。 。 。尝试找到至少3个真实世界Silverlight应用程序的例子(不是游戏,视频播放器或小工具)。然后为Flex做同样的事情。

答案 14 :(得分:2)

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

答案 15 :(得分:2)

虽然我已经完成了Silverlight的工作,并且对于让应用程序生活在浏览器之外的能力感到非常兴奋,但AIR的一个巨大好处是可以访问本机拖放功能。这使您可以构建非常用户友好的图像或文档上传功能(例如Flickr上传器)。据我所知,MS目前还没有关注那种支持(即没有宣布计划)。

答案 16 :(得分:1)

如果您了解.NET,那么Silverlight 3.0就是您的最佳选择。我正在使用它,我喜欢它。我不必乱用AJAX或JS BTW(我不知道那个人是指什么,也许SL 1.0)对于数据,它主要是异步WCF调用(WCF后面的LINQ to SQL)或XML文件或RIA服务。它让你使用大多数着色器FX,它有样式,控件模板和本机访问窗口/ mac剪贴板。我可以运行高清视频,大多数进程即使在慢速CPU下运行也很好。我也喜欢数据绑定,控件绑定和可观察的集合节省了我很多时间。加上我可以使用LINQ,节省大量时间,更不用说使用Visual Studio进行调试了。

我正在开发企业.NET应用程序,因此我知道我的安装基础,他们将安装加载项(通常为30秒)。对于前端网站,您可能会丢失一些不想安装Silverlight或不运行Mac或Windows的用户。您可以在3.0以外的浏览器外部安装SL。

我可能是一个有偏见的.NET人,但我一直在快速发展,我不得不推荐它。

答案 17 :(得分:1)

有人说:“找到3个真实世界的Silverlight应用程序”。好吧,我知道一些不了我的头脑,但无论如何我用Google搜索了。清单:

  • 2008北京奥运会(stats here,提供250TB数据!)
  • Netflix点播播放器
  • AOL电子邮件客户端(可能尚未发布)

哦,不是视频播放器?好吧,离开UFC应用程序(它是混合视频/聊天/其他东西)和AOL电子邮件客户端。 Silverlight擅长视频,而这正是它获得立足点的地方,但这并不意味着它无法做其他事情。我认为没有理由因为视频播放效果好而忽略它。

Infoworld [link]表示“Silverlight具有丰富的技术优势和相对良好的性能。它是一种非常强大的RIA技术,对于具有.Net经验的程序员和具有XAML经验的设计人员来说尤其有用。”这是一篇很好的文章供您阅读有关您的问题。

我的回答:如果你有一个熟悉.NET的开发团队,那么Silverlight应该是你的第一个。如果没有,那么这是一个真正的折腾。我见过文章说Visual Studio是一个优秀的开发平台,与你使用Flex相比。但Flash几乎无处不在。

还要记住,Silverlight 2几乎不使用Javascript(我认为没有,但我不是肯定的)。因此,因为JS而避免使用Silverlight是没有根据的。

如果性能很重要,Silverlight会在那里获胜。我已经看到我的浏览器的CPU使用率多次达到100%并杀死正在运行的任何窗口Flash总是摆脱它。在Chrome中尤为明显,您可以看到耗费CPU的过程。如果您对Silverlight的游戏潜力感兴趣,请查看QuakeLight,Quake的Silverlight端口。它的形成非常好。

我认为这取决于您的开发人员所处的位置以及您将提供的应用程序类型。简单的游戏?闪。业务线应用程序? Silverlight的。在两者之间?跟你的开发者推荐一样。

答案 18 :(得分:1)

我使用这个经验法则:如果您的公司正在开发基于互联网的多媒体软件,并且拥有各种平台的客户,并且您没有使用数据库密集型应用程序,那么Flex就是明确的答案,如果您的公司同时开发互联网和基于DVD的产品,交互性较低但更密集(CPU,内存)并使用荒谬的数据库事务量Silverlight更有意义

答案 19 :(得分:0)

您真的不应该使用这些ActiveX2.0技术的 ANY 。无论是Silverlight还是Flex ......

首先,它们都不过是“支持在浏览器中运行的分布式winforms框架”,其次它们没有很好地移植到其他设备上(特别是Silverlight),第三,它们不是与页面的其他部分配合得很好。它们不适合残疾人等等等。列表进入无限......

Adob​​e和微软都试图隐瞒这一事实,但最终Silverlight和Flex在新的包装中只是ActiveX ......

当然,他们在沙箱中运行,管理语言和所有这些。但它仍然是一个很大的BLOB被下载到你的浏览器本地运行,AKA ActiveX ...

答案 20 :(得分:0)

这是一个古老的问题,历史现在已经发言了!

Silverlight已经被微软抛弃了,它从来没有一个有用的安装基础。派对由于微软不承诺100%。

Flash(因此Flex)仍在继续。但是越来越多的浏览器不支持任何插件,因此,在刷新Silverlight 的方式之前,这只是时间(年)的问题。

也许有一天Flex会被重新定位到没有插件的HTML5 ......

说了iPhone,它说唯一的选择是Apples Way或HTML5。

答案 21 :(得分:-1)

Flash Player可用&amp;几乎所有桌面平台(Windows,Linux,Mac)都正式支持,而Silverlight主要在Windows中支持。

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