Silverlight与Flex
我公司开发了几种类型的应用程序。我们的很多业务来自做多媒体类型的应用程序,通常是在Flash中完成的。但是,现在,公司的这一侧开始向进行Flex开发的方向迁移。
我们的其他大部分开发工作都是使用.NET完成的。我正在尝试推动Silverlight开发,因为它将更好地利用.NET开发人员。我很喜欢Silverlight平台而不是Flex平台,这是因为Silverlight都是.NET代码。与Flash / Flex开发人员相比,我们在人员方面拥有更多的.NET开发人员,而且我们的大多数Flash / Flex开发人员都是图形艺术家(不是真正的程序员)。他们现在之所以选择Flex的唯一原因是,这似乎是Flash的逻辑步骤。
我已经使用这两种方法进行了开发,并且老实说,我相信Silverlight更易于使用。但是我试图说服那些只是Flash开发人员的人们。
所以这是我的问题:如果我要参加一次会议以表扬Silverlight,为什么一家公司希望使用Silverlight而不是Flex?除了明显的"不是每个人都有Silverlight"之外,每个优点和缺点是什么?
解决方案
回答
Silverlight的问题在于,仍然有很多人没有安装它。同样,如果我们只熟悉更传统的服务器端.Net编码,我不确定我们现有的.Net开发人员将如何利用他们的现有技能。
我们将Silverlight推向Flex的原因是什么?如果我们由于某些原因不得不向SOFlow社区询问,那么我们如此愿意推动它似乎很奇怪。
回答
我认为Silverlight和XAML比ActionScript更可取,尽管我对ActionScript IDE并不熟悉,但我对VS2008和Expression Web / Blend都很熟悉,它们是非常好的开发环境,并且一直在不断发展。我会使用Silverlight,并且我认为让用户安装插件的关键是拥有一个良好的插件检测页面,该页面说明SL是什么以及为什么需要它。有关此示例,请访问http://memorabilia.hardrock.com/并在禁用SL插件的情况下进行尝试。
回答
正如Kibbee在上文中所暗示的那样,利用现有.Net开发人员的观点并不多。不可能成为.Net开发各个方面的专家。该平台太大。 Java也是如此。从技能的角度来看,Silverlight要做的唯一一件事就是我们可以使用自己喜欢的.Net语言进行编码。如果我们已经在进行任何使用JavaScript的重要Web开发,则该优势就非常小,因为Action脚本是一种变体。因此,要将程序员转换为Flex或者Silverlight的真正目的就是学习平台的API。
回答
我认为Silverlight对于拥有.NET开发人员但没有设计经验的公司来说最有利。
就找到Cor VB开发人员比找到ActionScript专家而言,技能集将更容易找到。但是,需要权衡取舍:
设计经验不仅是对具有艺术技能的设计师的投资,也是对Adobe提供的知识和工具的投资。我们几乎可以保证专业设计师使用Mac并具有Adobe工具的使用经验。
现在,Silverlight设计器工具还没有成熟,可能令人头疼。例如,当尝试渲染任何包含IValueConverter的xaml时发生Blend错误,这是有问题的。我不知道Adobe开发人员的经验是什么,我相信它像毛茸茸的一样。
因此,在游戏的这个阶段,它取决于人力资源:
如果我们具有.NET经验并且很少在设计技能上投入资金,请使用Silverlight。编程技能/工具将可以转让。
如果我们具有设计经验和技能,请选择Flex。设计者的技能/工具将可以转让。
无论哪种方式,两个客户端平台都需要与服务进行通信才能获取数据,因此我们将始终在后端利用现有的编程专业知识。
乔恩的观点从另一个角度来解释:
我认为我们应该将Flex视为长期的产品,就像Adobe似乎正在做的那样。当我们担心覆盖面和安装基础时,何时使用Silverlight与Flex有着明显的平衡,但是有更多原因使Flex成为一个不错的发展方向:
- 先发优势-正如Adobe用Flash构建"更好的Java Applet"一样,他们今天可以看看我们如何从头开始设计运行时。他们具有了解当今人们如何使用Web的优势,这是现有客户端平台的发明者永远无法准确猜到的。 .NET可以添加功能,但是它们实际上不能取代平台并重新开始。
- 对设计人员的熟悉程度-尽管Flex / AIR是一种新的编程模型,但对设计人员来说并不是完全不熟悉。他们将"了解" Flex的工作方式,这要比他们理解使用功能贫乏的新工具和新的动画范例激发新的设计环境快得多。
- 在Silverlight中摆脱RGB颜色模型-.NET最初是为Windows构建的,它是其工作方式的核心。 Flex早就放弃了以设计为中心的模型。
- 我们所有的工具都可以在Mac上运行。纳夫说。
- 很棒的功能-Silverlight在某些明显的功能(例如网络摄像头/麦克风集成或者3d /图形加速)上仍与Flash保持一定的联系。
回答
我认为我们应该将Silverlight视为一项长期工作,就像微软似乎正在做的那样。当我们担心触及范围和安装基础时,何时使用Silverlight与Flash有着明显的平衡,但这是一些原因,Silverlight是一个不错的迁移方向:
- 先发优势-正如Microsoft用.NET构建"更好的Java"一样,他们今天也可以看看我们如何从头开始设计RIA插件。他们具有了解人们今天如何使用Web的优势,这是Flash的发明者永远无法准确猜到的。 Flash可以添加功能,但是它们实际上不能取代平台并重新开始。
- 开发人员熟悉-虽然Silverlight是一种新模型,但开发人员并不完全不熟悉。他们将"了解" Silverlight的工作方式,比他们理解使用新的脚本语言和新的事件范例启动新的开发环境快得多。
- 摆脱了Flash中的时间轴模型-Flash最初是为基于关键帧的动画而构建的,尽管有多种方法可以将其抽象化,但这是Flash工作方式的核心。 Silverlight减少了以应用程序为中心的模型的成本。
- ScottGu-ScottGu对Silverlight感到不满。纳夫说。
- 很棒的新功能-尽管Silverlight在某些明显的功能(例如网络摄像头/麦克风集成或者3d /图形加速)上仍与Flash保持同步,但Silverlight内置了一些漂亮的新技术-深度缩放就是一个例子。我在Silverlight方面看到了更多的"革命性"技术,而Flash此时似乎处于维护模式。
回答
这里有两个问题:Silverlight与Flash作为平台,Silverlight与Flex作为RIA框架。
第一个问题取决于时间范围。 Flash Player的覆盖率超过95%,Silverlight则无法实现。但是,Silverlight可能会实现目标,毕竟它得到了Microsoft的支持。如果我们打算下周启动一个网站并希望吸引大量的观众,那么Silverlight是不可行的。如果我们打算发布一个每个人都想使用的非常酷的应用程序,则有些不同,如果应用程序足够好,则目标受众可以安装Silverlight只是为了能够运行它。
至于第二个问题,就是在Silverlight中开发应用程序有多容易。 Flex不仅是一组小部件,它是一个非常大的框架,它可以做很多事情来简化开发人员的工作。我们可以只使用核心Flash API编写相同的应用程序,但这将需要更多工作。根据Silverlight中可用的功能,这应该是决定时的重要因素。如果我们可以缩短开发时间,那么拥有两个平台是否值得?
回答
当涉及到Flex时,Silverlight程序员不知道他们错过了什么。 Silverlight缺少Flex具有的组件模型和事件触发功能。我的一个朋友使用XNA和C#,必须克服各种困难才能使他的Silverlight应用程序正常工作。然后,必须将其交给设计师,以使其看起来像样。
在Silverlight上收听deepfriedbytes.com播客,我们将听到甚至真正推动Silverlight的几个人也承认其中一些问题。 (我想,如果我没记错的话,其中一个人在微软工作,但是上周我听错了我可能是错的)。他们一致认为,Silverlight在当前状态下还没有为任何大型应用程序做好准备。
我将使用Flex,这是一种非常干净,直接的方法,尤其是如果我们已经熟悉Flash和ActionScript 3.0。 Flex更有意义,我认为Silverlight仍然必须成熟。
回答
Flex开发的另一个优点是,我们可以切换到使用相同的源代码(和相同的IDE)来开发桌面应用程序(Adobe AIR)并从Web分发它们。你可以看看这个
面向Flash平台的未来。
2011年第三季度更新:Flash 11支持底层3D加速,并且已经有很多框架和主要引擎(虚幻引擎3,Unity)支持它。但是,未来的卖点是AIR应用程序将可在Windows,Mac,Android,Playbook和iOS平台上运行(已不再支持Linux)。两者之间的移植绝对避免了麻烦(至少当我们使用Adobe CS5.5 +时)。
2015年第二季度更新:Silverlight正式死亡。 Adobe AIR仍然存在,但并没有蓬勃发展,根据技能和工具链,它可能会很有用。 Microsoft和Adobe都承认HTML5是必经之路(无论是AIR还是Apache Cordova或者Visual Studio)。
2017年第三季度更新:哇,他什至不再使用Flash。
回答
作为一名图形设计师,我在过去的几年中一直使用Flash(打开和关闭),而在过去的1.5年中我使用Silverlight(及其老兄WPF)。根据我从我的团队(所有人都是开发人员或者以前的开发人员,如果.Net开发人员将执行所有编程工作)的经验,请使用Silverlight。 Flash 9及更高版本,它仍然是一种古怪的语言,在AS3和C3之间来回移动可能会使开发人员感到疯狂:-)。
对于设计师,请执行以下操作:
- 为他们提供一份Expression Blend的副本,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插件中可用的新功能,则要记住一点。
- 投资于功能强大的系统(Quad Core,4Gigs RAM等),Blend会消耗大量资源,尤其是。当我们有大量的图层时。例如。我正在开发一个在基础应用程序中具有100多个图层(!)(在某些用户控件中还有100+)的应用程序,以及大约40-50个故事板。每隔几分钟,我必须重新启动Blend,因为UI会停止响应(但不会冻结)。或者,或者将所有内容移到用户控件中。
回答
不要忘记:
Flex非常跨平台,因为它使用Java编译器进行编译,这意味着在开发Flex应用程序时可以轻松使用Mac或者Linux。我拥有当前的CruiseControl设置(使用Linux),我构建了Flex应用程序,但是开发人员同时使用Mac,Linux和Windows。
以我的经验,由于基于Eclipse的Java开发人员对Flex Builder感到很自在。
回答
由于有如此众多的Microsoft开发人员,因此我们将永远不会对SO上的这个问题进行公平的投票。
同样,人们可能会否决这个答案,这确实说明了一切。
我说让开发人员尝试这两种平台,然后看看他们喜欢哪种平台。
为了回答以下评论,我只是注意到,尽管有很多建议推荐Flash / Flex的答案,但Silverlight的答案却更多。这不是说谎的问题,它只是支持我们熟悉的内容,不一定是最好的平台。
回答
我们经历了同样的问题,Flex赢得了成功。我们的.NET开发人员起初很担心,但是在Ajax和JavaScript的痛苦下工作了这么长时间之后,他们现在很喜欢并且非常喜欢在Flex中工作。
这是一个简单的测试。 。 。尝试至少找到3个真实的Silverlight应用程序示例(不是游戏,视频播放器或者小工具)。然后对Flex执行相同的操作。
回答
我的经验法则是:如果公司正在开发基于Internet的多媒体软件,并且拥有各种平台的客户,并且我们没有在进行数据库密集型应用程序,那么如果公司同时开发基于Internet和DVD的产品,那么Flex是绝对的答案。 ,交互性较低,但占用更多资源(CPU,内存),并且使用可笑的数据库事务量,Silverlight更有意义
回答
有人说:"找到3个真实世界的Silverlight应用程序"。好的,我知道我头顶上有一些东西,但无论如何我还是用谷歌搜索的。列表:
- 2008年北京奥运会(此处的统计数据,已传递250TB数据!)
- Netflix点播播放器
- AOL电子邮件客户端(可能尚未发布)
哦,不是视频播放器吗?剩下的就是UFC应用程序(它是混合视频/聊天/其他内容)和AOL电子邮件客户端。 Silverlight在视频方面表现出色,而这正是它立足之本,但这并不意味着它不能做其他事情。我认为没有理由仅仅因为它的视频效果好就将其关闭。
Infoworld [link]表示:" Silverlight具有实质的技术优势和相对良好的性能。它是一种非常强大的RIA技术,对于具有.Net经验的程序员和具有XAML经验的设计师特别有用。"这是一篇有关问题的好文章。
我的回答:如果我们有一支熟悉.NET的开发人员团队,则Silverlight应该在清单上排名第一。如果没有,那是一个真正的折腾。我见过一些文章说,与我们使用Flex相比,Visual Studio是一个出色的开发平台。但是Flash几乎无处不在。
还请记住,Silverlight 2几乎不使用Javascript(我认为没有Javascript,但我不是很肯定)。因此,避免因JS而避免Silverlight是没有根据的。
如果性能很重要,Silverlight会赢得胜利。我已经看到我的浏览器的CPU使用率多次达到100%,并且杀死运行Flash的任何窗口总是会摆脱它。在Chrome中,这一点尤其明显,我们可以看到正在消耗CPU的进程。如果我们对Silverlight的游戏潜力感兴趣,请查找Quake的Silverlight端口QuakeLight。它的状态非常好。
我真的认为这取决于开发人员的才能所在,以及将要交付的应用程序类型。简单的游戏?闪光。业务线应用程序? Silverlight。介于两者之间?遵循开发人员的建议。
回答
归根结底,开发人员不应该决定技术。这绝对是应该根据用户做出的产品决定。
如果要部署到消费者Internet,则要使用Flash Player或者AJAX。如果要为.net企业部署到专用LAN,则可以选择。
回答
我们不应该使用这些ActiveX2.0技术中的任何一种。 Silverlight和Flex都没有...
首先,它们都不过是"支持在浏览器中运行的分布式winforms框架",其次,它们不能很好地移植到其他设备上(对于Silverlight尤其如此),其三,它们不能正常工作与页面的其他部分配合得很好。它们不适用于残疾人等等等。列表持续不断...
Adobe和Microsoft都试图掩盖这一事实,但最终,Silverlight和Flex都不过是ActiveX的新包装了……
确保它们在沙盒中运行,是托管语言等等。但这仍然是要下载的BLOB很大一部分,可以在浏览器AKA ActiveX中本地运行。
回答
尽管我已经与Silverlight进行过合作,并且对将应用程序置于浏览器之外的功能感到非常兴奋,但是AIR的一大优势是可以访问本机拖放功能。这使我们可以构建非常人性化的图像或者文档上传功能(例如Flickr上传器)。据我所知,MS尚未专注于这种支持(即未宣布任何计划)。
回答
如果我们知道.NET,Silverlight 3.0是必经之路。我正在使用它,我喜欢它。我不必弄混AJAX或者JS BTW(我不知道那个人指的是什么,也许是SL 1.0)。对于数据,大多数数据是异步WCF调用(WCF后的LINQ to SQL)或者XML文件或者RIA服务。它使我们可以使用大多数着色器FX,它具有样式,控件模板和本机访问Windows / Mac剪贴板。我可以运行高清视频,即使在CPU速度较慢的情况下,大多数进程也可以很好地运行。我还喜欢数据绑定,控件绑定,并且可观察的集合为我节省了很多时间。加上我可以使用LINQ(主要的时间节省工具),更不用说使用Visual Studio进行调试了。
我正在开发企业.NET应用程序,因此我知道我的安装基础,他们将安装加载项(通常为30秒)。对于前端网站,我们可能会失去一些不想安装silverlight或者不运行Mac或者Windows的用户。我们可以在带有3.0的浏览器之外安装带有SL的应用程序。
我可能是一个有偏见的.NET专家,但是我发展很快,所以我不得不推荐它。
回答
我的团队曾经在Flex中编写丰富的Web功能,现在在Silverlight中编写它们。
我们进行此切换的原因:
- FlexBuilder建立在Eclipse之上。 Eclipse太糟糕了!自由,但bug缠身,毛刺弥漫且缓慢。
- FlexBuilder的价格是Expression Blend的两倍,无论如何我们都可以通过MSDN免费获得它。
- Flex是源代码控制的一个痛苦,它不喜欢被制作成将文件放在一个地方,并且不能与解决方案的其他部分很好地配合使用(我们尝试使用SourceGear Vault和SVN)。
- Flex的ActionScript版本与大多数SOAP实现不同,特别是.Net WebMethod存在各种问题。
- 尽管我们会定期使用获得许可的Flex组件,但它仍决定我们没有该版本,并在其中添加了仅演示水印。删除此水印的唯一方法是将项目进行修改,重新安装Flex,重新安装许可证并重新构建。
- FlexBuilder根本不喜欢Vista。
- 一旦达到了我们可以将其添加为交换的相关功能的要求的级别,Silverlight的接受度就会越来越高。如果我们为网络(而不是企业)受众服务,我不确定是否可以。
我们项目的其余部分是.Net和C#,我们可能会发现在Java商店中所有这些问题都不那么重要。
回答
我们正在做Silverlight和Flex,这是开发人员对于这两者的观点。
Silverlight的优点:
- C#的强大功能,代码段,重用现有的C#算法实现
- 其他语言的力量,泛型和Linq等
- CLR代替Flash的动作脚本解释器的本机执行的功能
- 一个集成的Visual Studio,适合所有开发
- Expression Blend真的很酷,是比Flex Builder更高级的编辑器
- XAML对搜索引擎友好
- 非常好的状态转换,易于定义
- 线程和异步任务
- 可访问性,没人知道Microsoft始终在其所有产品上都拥有最佳的可访问性功能,它们始终与残疾人协作良好,仅IE支持完全可访问性的浏览器与Safari / firefox等浏览器相提并论。
Silverlight的缺点:
- 严格地说,是Microsoft平台,我知道很多人都会争论,但是在当前情况下,一半的Intel Mac不能使用Silverlight 3.0,所有PPC Mac都不能使用Silverlight 2.0,而Linux不能使用Silverlight。
- 有单声道,但没有微软的正式支持,它将始终落后于逆向工程.NET并将其移植到其他平台上,但还不是现成的。
- 大多数组件/控件都是"密封的",因此很难对其进行扩展和覆盖以使其易于制造新组件。
- CustomControl / UserControl体系结构不正确。例如。我们不能将XAML的根作为ComboBox或者任何其他控件,并且不能同时具有设计和代码,可以创建自定义控件,但是它们太复杂了
- 绑定需要组件命名,并且不像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的优点:
- 真正独立于平台,在各种硬件和操作系统上受支持,并且真正在任何地方都可以正常工作。
- 开源使得真正易于理解和扩展功能。
- 每个控件/组件都可以扩展,并且覆盖默认行为的限制更少。
- 创建新组件的最简单方法是,我们可以使mxml派生自任何控件,并通过广泛的绑定对其进行扩展
- Flex包含许多控件,我们不需要任何第三方库
Flex的缺点:
- 迭代执行的执行速度慢,没有线程!没有异步任务!
- 根据第1点,不可能制作出精美的动画或者图形
- 没有泛型,没有其他语言,没有linq ..
- 数字类存在错误,无法存储完整的64位长值
- Eclipse不利于设计出色的UI
结论
- 我们将flex用于数据应用程序,这些是简单的表单处理应用程序
- Silverlight提供极其丰富的图形和动画