Silverlight与Flex

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

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

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

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

我认为你应该把Silverlight视为一个长期的游戏,就像微软似乎正在做的一样。 当你关心覆盖范围和安装基础的时候,关于何时使用Silverlight和Flash有一个明显的平衡,但是Silverlight是一个很好的方向:

  1. 后发优势 – 就像微软用.NET构build“更好的Java”一样,他们可以看到如何从头开始deviseRIA插件。 他们的优势在于知道人们今天如何使用networking,而Flash的发明者却无法准确猜测。 Flash可以添加function,但是他们不能实际地查看平台并重新开始。

  2. 开发人员熟悉 – 虽然Silverlight是一种新的模式,但开发人员并不熟悉。 他们将会“得到”Silverlight的工作方式,而不是他们所理解的,用新的脚本语言和新的事件模式来启动一个新的开发环境。

  3. 摆脱Flash中的时间线模型 – Flash最初是为基于关键帧的animation制作的,虽然有方法可以将其抽象化,但它是Flash工作的核心。 Silverlight为了以应用程序为中心的模型而抛弃。

  4. ScottGu – ScottGu被解雇了Silverlight。 Nuff说。

  5. 酷炫的新function – 尽pipeSilverlight在一些显而易见的function(如networking摄像头/麦克风集成,或3D /graphics加速)方面仍有一些追赶Flash的function,但Silverlight中还是有一些华丽的新技术 – Deep Zoom就是一个例子。 我在Silverlight方面看到了更多的“革命性”技术,而Flash现在似乎处于维护模式。

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

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

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

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

就searchC#或VB开发人员而言,findActionScript大师的技能组合将更容易find。 但是有一个折衷:

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

现在,Silverlightdevise工具已经出炉了,可能会让人头疼。 例如,当试图呈现任何包含IValueConverter的xaml时混合错误,这是有问题的。 我不知道Adobe开发人员的经验是什么,我敢肯定,这是多毛的。

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

如果您拥有.NET的经验,并且对Silverlight的devise技能投入很less。 编程技巧/工具将可以转让。 如果您有Flex的devise经验和技能。 devise师技能/工具将可以转让。

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

Jon从另一个angular度解释了Jon的观点:

我认为你应该把Flex视为一种长期的游戏,就像Adobe似乎正在做的一样。 当你关心到达和安装基地的时候,有一个明显的平衡,什么时候使用Silverlight和Flex,但是这里有更多的原因Flex是一个很好的方向:

  1. 后发优势 – 就像Adobe用Flash构build“更好的Java Applet”一样,他们能够看到如何从头开始devise运行时。 他们的优势在于知道人们今天如何使用networking,而现有的客户端平台的发明者却无法准确猜测。 .NET可以添加function,但是他们不能实际地挑选平台并重新开始。

  2. devise师的熟悉 – 虽然Flex / AIR是一种新的编程模型,但对devise人员来说并不是完全陌生。 他们将“得到”Flex的工作方式比他们明白用新的function差的工具和新的animation范例引发新的devise环境要快得多。

  3. 在Silverlight-.NET中摆脱RGB颜色模型最初是为Windows构build的,它是它的工作原理的核心。 Flex很久以前就抛弃了以devise为中心的模式。

  4. 所有的工具都在你的Mac上运行。 Nuff说。

  5. 很酷的function – Silverlight在一些显而易见的function(如networking摄像头/麦克风集成,或3D /graphics加速)方面仍然有一些追赶Flash的function。

我们正在做silverlight和flex,这两个都是开发者的观点。

Silverlight的优点:

  1. C#的function,代码片段,重用现有的C#algorithm实现
  2. 其他语言的function,generics和Linq等
  3. 本地执行CLR的力量,而不是Flash的Action Script Interpretator
  4. 一个集成的Visual Studio for All Development
  5. Expression Blend是非常酷,更高级的编辑器,然后Flex Builder
  6. XAML是search引擎友好的
  7. 相当不错的状态转换,并易于定义它们
  8. 线程和asynchronous任务
  9. 无障碍,没有人知道微软总是在所有的产品上做出最好的辅助function,他们总是和残疾人一起工作,比较浏览器只有IE支持完全的可访问性和Safari / Firefox等等。

Silverlight的缺点:

  1. 严格的微软平台,我知道很多人会争论,但目前的情况下,一半的英特尔Mac家伙不能得到silverlight 3.0的工作,所有PPC Mac家伙不能使用Silverlight 2.0以及Linux没有silverlight。
  2. 有单声道,但没有得到微软官方的支持,它总是落后于反向工程.NET,并将其移植到其他平台上,但它还没有开箱即用。
  3. 大多数组件/控件是“密封的”,所以它很难扩展它们,并轻易地重新制作新的组件。
  4. 错误的CustomControl / UserControl体系结构。 例如,你不能将XAML的根作为ComboBox或任何其他控件,并让它具有devise和代码,你可以创build自定义控件,但它们太复杂
  5. 绑定需要组件命名,不支持像flex这样的实例expression式,虽然Silverlight中的双向绑定是好的,但是你必须为一个mathexpression式编写多个绑定的长代码
eg // 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. 开源使得它很容易理解和扩展function。
  3. 每个控件/组件都可以扩展,并且覆盖默认行为的限制较less。
  4. 创build新组件的最简单的方法是,可以让mxml从任何控件派生出来,并用广泛的绑定扩展它们
  5. Flex包含大量的控件,你不需要任何第三方库

Flex的缺点:

  1. 缓慢执行迭代执行,无线程! 没有asynchronous任务!
  2. 基于第1点,没有很好的animation或graphics可能
  3. 没有generics,没有其他语言,没有linq ..
  4. 数字类有一个错误,不能存储完整的64位长的价值
  5. Eclipse不好devise出好用户界面

结论

  1. 我们使用flex来处理数据,这些都是简单的表单处理应用程序
  2. Silverlight为非常丰富的graphics和animation

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

你推动Silverlight over Flex的原因是什么? 如果你不得不问SOFlow社区的理由,你会很乐意推动它,这似乎很奇怪。

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

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

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

不要忘记:

Flex是非常多的跨平台,因为它使用Java编译,这意味着在开发Flex应用程序时可以轻松使用Mac或Linux。 我有我目前的cruisecontrol设置(使用Linux)我构build构buildFlex应用程序,但开发人员使用Mac,Linux和Windows。

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

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

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

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

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

当涉及到Flex时,Silverlight程序员不知道他们错过了什么。 Silverlight缺乏Flex所具有的组件模型和事件触发function。 使用XNA和C#,我的一个朋友必须通过各种各样的箍来让他的Silverlight应用程序工作。 然后,它必须交给一个devise师,让它看起来一半体面。

收听Silverlight上的deepfriedbytes.com播客,您将会听到一些真正推动Silverlight的家伙,也承认这些问题。 (我 ,如果我没有记错的话,其中一个人为微软工作,但我可能是错的 – 我上周听了)。 他们同意,Silverlight目前还没有准备好用于任何大型应用程序。

我会和Flex一起去做一个简洁明了的方法 – 特别是如果你已经熟悉了Flash和ActionScript 3.0的话。 在我看来,Flex更有意义,Silverlight仍然需要成熟。

在一天结束的时候,你的开发者不应该口授你的技术。 这绝对是一个应该基于用户的产品决定。

如果您正在部署到消费者互联网,那么Flash Player或AJAX是最好的select。 如果您正在部署到.net企业的专用LAN,则可以select。

作为一名graphicsdevise师,过去几年来我一直使用Flash(on和off),而在过去的一年中,我使用了Silverlight(和其大哥哥WPF)。 基于我从我的团队(所有人都是开发人员或以前的开发人员)那里听到的,如果你的.Net开发人员将会完成所有的编程,请使用Silverlight,我喜欢Flash,但即使对OOP进行了ActionScript 3 Flash 9以上,它仍然是一个有点古怪的语言,来回之间AS3和C#可能会驱动你的开发者坚果:-)。

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

  • 为他们提供一份Expression Blend,Silverlight / WPF的GUI开发工具。

  • Blend的初始学习曲线有点陡峭,界面会给你带来大量的variables/选项,所以你可以投入一些训练,让你的devise师有足够的时间来使用UI。

  • 说到培训,订阅Lynda.comvideo库,尤其是 李Brimelowexpression混合培训课程。

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

  • Silverlight内容似乎并不总是与Silverlight插件的最新testing版一起使用,只是要testing一些仅在最新的Silverlight插件中提供的新function。

  • 投资一个强大的系统(四核,4G的RAM等)混合消耗大量的资源, 当你有很多层。 例如,我正在基础应用程序中使用超过100层(!)的应用程序(另有100多个用户控件)以及大约40-50个故事板。 每隔几分钟,我必须重新启动Blend,因为UI会停止响应(但不会冻结)。 要么,要么将所有你可以进入用户控件。

我的团队曾经在Flex中编写丰富的Webfunction,现在将其写入Silverlight。

我们这个开关的原因是:

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

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

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

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

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

我认为Silverlight和XAML比ActionScript更可取,虽然我对ActionScript IDE不熟悉,但我熟悉VS2008和Expression Web / Blend,它们是非常好的开发环境,并且一直在变得更好。 我将使用Silverlight,我认为让用户安装插件的关键是要有一个很好的插件检测页面来解释SL是什么以及他们为什么需要它。 有关这方面的一个例子,请访问http://memorabilia.hardrock.com/并尝试禁用SL插件。;

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

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

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

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

哦,不是video播放器? 那么离开UFC应用程序(这是一个混合video/聊天/其他的东西)和美国在线电子邮件客户端。 Silverlight在video方面非常出色,这就是它获得立足点的地方,但这并不意味着它不能做其他事情。 我觉得没有理由只因为它的video很好而被解雇。

Infoworld表示,“Silverlight具有相当的技术优势和相对较好的性能,这是一个非常强大的RIA技术,对于具有.Net体验的程序员和拥有XAML经验的devise人员来说尤其有用。 这是一个很好的文章,您可以阅读有关您的问题。

我的答案是:如果你有一个适合.NET的开发团队,那么Silverlight应该在你的列表中第一个。 如果没有,那么这是一个真正的投入。 我已经看到文章说,与您使用Flex相比,Visual Studio是一个卓越的开发平台。 但闪存几乎无处不在。

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

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

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

如果你知道.NET,Silverlight 3.0是最好的select。 我正在使用它,我喜欢它。 我没有惹AJAX或JS BTW(我不知道那家伙是什么意思,也许SL 1.0)对于数据来说,大多数是asynchronousWCF调用(WCF后面的LINQ to SQL)或XML文件或RIA Services。 它让你使用最着色的FX,它有风格,控制模板和本地访问Windows / Mac剪贴板。 我可以运行高清video,大多数进程运行得非常好,即使在较慢的CPU下也是如此。 我也喜欢数据绑定,控制绑定和可观察的集合为我节省了很多时间。 加上我可以使用LINQ,主要的节省时间,更不用说使用Visual Studio来debugging。

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

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

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

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

Adobe和微软都试图很难隐瞒这个事实,但是最终Silverlight和Flex都不过是一个新的包装中的ActiveX而已。

当然,他们运行在沙箱,是托pipe语言,所有这一切。 但它仍然是一个BLOB的大块被下载到您的浏览器本地运行,AKA ActiveX …

这是一个古老的问题, 历史已经说过了!

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

Flash(因此Flex)仍在继续。 然而,越来越多的浏览器不支持任何插件, 所以在冲刷Silverlight之前这只是一个时间问题

也许有一天Flex将被重新定位到HTML5而不需要插件。

iPhone被说了,它说唯一的select是苹果方式或HTML5。

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

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