当前位置:  开发笔记 > 编程语言 > 正文

Silverlight与Flex

如何解决《Silverlight与Flex》经验,为你挑选了12个好方法。

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

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

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

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



1> Jon Galloway..:

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

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

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

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

    ScottGu - ScottGu对Silverlight很感兴趣.努夫说.

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


实际上,Jon,在所有应有的尊重下,你将Silverlight与Flash进行比较,而不是Flex,这是Silverlight支持者的典型混淆点.我在Flex中编写了一个企业级应用程序(编译为SWF),但甚至不知道从哪里开始编写Flash应用程序.
如果您只是在Flex中工作,那么您可能也不知道有任何时间表.这不是问题.
1.更好的Java,只是不是跨平台(虽然单声道摇滚)Adobe确实把玩家扔掉了,然后又用AVM2和AS3重新开始2.同意3.时间轴现在是可选的(使用精灵代替动画片段)5.绝对闪光没有3D加速,所以这是一个平局.深度变焦很酷但没有意义
Flash与Flex非常不同(实际上有一个帧速率和那些东西也可以使用Flex但它们没有被使用,这是一个不好的做法)Flex也比Flash快得多,我建议你看看C++解释器用Flex构建.Silverlight播放器不是那么多
Jon Galloway为微软工作.努夫说.

2> Theo..:

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

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

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



3> Brian Leahy..:

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

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

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

现在,Silverlight设计工具已经半生不熟,可能会令人头疼.例如,当尝试渲染包含IValueConverter的任何xaml时Blend错误,这是有问题的.我不知道Adobe开发人员的体验是什么,我确信它是多毛的.

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

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

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

用不同的观点来转述Jon的观点:

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

    第二个推动者的优势 - 正如Adobe使用Flash构建了一个"更好的Java Applet",他们能够看到你今天如何从头开始设计运行时.它们具有了解当今人们如何使用网络的优势,这是现有客户端平台的发明者永远无法准确猜测的..NET可以添加功能,但是它们无法真实地浏览平台并重新开始.

    设计师熟悉 - 虽然Flex/AIR是一种新的编程模型,但设计师并不完全陌生.他们将"获得"Flex的工作方式比他们理解用新的功能差的工具和新的动画范例启动新的设计环境要快得多.

    在Silverlight-.NET中摆脱RGB颜色模型最初是为windows而构建的,它是它工作原理的核心.Flex很久以前就选择了以设计为中心的模型.

    您的所有工具都在Mac上运行.努夫说.

    酷炫的功能 - Silverlight在一些明显的功能(如网络摄像头/麦克风集成或3D /图形加速)方面仍然有一些赶上Flash.


根据我的经验,开发人员可以更快地学习新的编程语言,而不是设计师可以选择新的设计软件.他们比我们更加坚持自己的方式!
"你几乎可以保证专业设计师使用mac并拥有Adobe工具的经验." 如果您根本使用过Flex Builder,那么您就会知道"之前使用Adobe工具的经验"并不是一个好处.它建立在Eclipse之上,对于没有以前编程IDE熟悉程度的任何人来说都是陌生的.

4> Akash Kava..:

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

Silverlight的优点:

    C#的功能,代码片段,重用现有的C#算法实现

    其他语言的力量,Generics和Linq等

    本机执行CLR而不是Flash的Action Script Interpretator的强大功能

    适用于所有开发的集成Visual Studio

    Expression Blend是非常酷且更高级的编辑器,然后是Flex Builder

    XAML是搜索引擎友好的

    相当不错的状态转换,很容易定义它们

    线程和异步任务

    可访问性,没有人知道微软总是在其所有产品上做出最佳的可访问性功能,它们总是与残障人士一起工作,比较浏览器只有IE支持完全可访问性,而Safari/firefox等也没有更接近.

Silverlight的缺点:

    严格的微软平台,我知道很多人都会争辩,但是根据目前的情况,有一半的英特尔Mac家伙无法使用Silverlight 3.0,所有PPC Mac家伙都不能使用Silverlight 2.0以及Linux无银光.

    有单声道,但没有得到微软的官方支持,它将始终落后于逆向工程.NET并将其移植到其他平台上,它尚未开箱即用.

    大多数组件/控件都是"密封的",因此难以扩展它们并覆盖以轻松制作新组件.

    Bad CustomControl/UserControl体系结构.例如,你不能将XAML的根作为ComboBox或任何其他控件,让它既有设计也有代码,你可以创建自定义控件,但它们太复杂了

    绑定需要组件命名,并且不支持像flex这样的实例表达式,尽管双向绑定在silverlight中很好但是你必须为一个数学表达式编写多个绑定的长代码

e.g.
// this is possible in flex..
// but not in silverlight



// display full name..

Flex的优点:

    真正独立于平台,支持各种硬件和操作系统,真正适用于各处.

    开源使得理解和扩展功能变得非常容易.

    每个控件/组件都可以扩展,并且覆盖默认行为的限制较少.

    创建新组件的最简单方法是,您可以从任何控件派生mxml并使用广泛的绑定扩展它们

    Flex包含许多控件,您不需要任何第三方库

Flex的缺点:

    迭代执行执行缓慢,没有线程!! 没有异步任务!!

    基于第1点,没有伟大的动画或图形可能

    没有泛型,没有其他语言,没有linq ..

    Number类有一个bug,不能存储64位长的值

    Eclipse很难设计出优秀的UI

结论

    我们将flex用于数据应用程序,这些是简单的表单处理应用程序

    Silverlight用于极其丰富的图形和动画



5> Kibbee..:

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

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


当然是.完全相同的方式,99%的IE用户使用IE7,没有人使用IE6,因为IE7被推动了自动更新.是.
你忘了Flash已经捆绑了大多数浏览器.
我最近安装的FF3要求我单独安装Flash.Silverlight安装更容易.
只需等待MS将其推向自动更新,即可实现99%的渗透率.
不幸的是,似乎仍然有大约30%的IE用户仍在使用IE6 ......

6> analytik..:

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了.


此外,Flash Player 10还包括带硬件加速功能的3D - 仅此而已!
同意AIR(可能非常重要),但没有3D支持(尚未).

7> Martin Wickm..:

不要忘记:

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

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


我不得不说C#开发人员也对Flex感觉很好,因为Flex的首席设计师最初是在.Net团队

8> Iain..:

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

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

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

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


那么微软开发人员自动不诚实吗?每个不同意你的人都是骗子吗?

9> JasonMichael..:

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

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

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



10> Luke Bayes..:

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

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



11> 小智..:

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的下一个beta/CTP中被修复.例如,Blend 2中有一个错误阻止我的故事板(动画)在最近的项目中工作.我升级到Blend 2.5CTP,它工作正常.

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

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


"基础应用程序中的100层(!)(以及一些用户控件中的另外100层),以及大约40-50个故事板":听起来你需要将工作分解为更多用户控件.当然,你不会在同样的几分钟内完成所有这些工作?

12> Keith..:

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

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有