Silverlight 与 Flex
-
09-06-2019 - |
题
我的公司开发了多种类型的应用程序。我们的很多业务都来自制作多媒体类型的应用程序,通常是用 Flash 完成的。然而,现在这方面的工作开始转向 Flex 开发。
我们的大部分其他开发都是使用 .NET 完成的。我正在尝试推动 Silverlight 开发,因为这样可以更好地利用 .NET 开发人员的优势。与 Flex 平台相比,我更喜欢 Silverlight 平台,因为 Silverlight 全部都是 .NET 代码。我们的 .NET 开发人员数量多于 Flash/Flex 开发人员,而且我们的大多数 Flash/Flex 开发人员都是图形艺术家(而不是真正的程序员)。他们现在推动 Flex 的唯一原因是因为这似乎是 Flash 的合乎逻辑的一步。
我已经使用两者进行了开发,而且我真诚地相信 Silverlight 更容易使用。但我正在努力说服那些只是 Flash 开发人员的人。
所以这是我的问题:如果我要参加一个会议来赞扬 Silverlight,为什么公司会选择使用 Silverlight 而不是 Flex?除了显而易见的“并非每个人都有 Silverlight”之外,每种软件都有哪些优缺点?
解决方案
我认为您应该将 Silverlight 视为一项长期投资,就像微软似乎正在做的那样。何时使用 Silverlight 与何时使用 Silverlight 存在明显的平衡。当您担心覆盖范围和安装基础时,请使用 Flash,但以下是 Silverlight 是一个不错的发展方向的一些原因:
后发优势 - 正如 Microsoft 使用 .NET 构建“更好的 Java”一样,他们今天能够了解您如何从头开始设计 RIA 插件。他们的优势在于了解当今人们如何使用网络,这是 Flash 的发明者永远无法准确猜到的。Flash 可以添加功能,但它们无法真正放弃平台并重新开始。
开发人员熟悉程度——虽然 Silverlight 是一种新模型,但开发人员对它并不完全陌生。他们将比他们理解的使用新脚本语言和新事件范例启动新开发环境更快地“了解”Silverlight 的工作方式。
摆脱 Flash 中的时间轴模型 - Flash 最初是为基于关键帧的动画而构建的,虽然有多种方法可以将其抽象出来,但它是 Flash 工作原理的核心。Silverlight 放弃了这种做法,转而采用以应用程序为中心的模型。
ScottGu - ScottGu 对 Silverlight 很感兴趣。纳夫说道。
很酷的新功能 - 虽然 Silverlight 在一些明显的功能(例如网络摄像头/麦克风集成,或 3D/图形加速)上仍然需要追赶 Flash,但 Silverlight 中内置了一些巧妙的新技术 - Deep Zoom 就是一个例子。我在 Silverlight 方面看到了更多“革命性”技术,而 Flash 目前似乎处于维护模式。
其他提示
这里有两个问题:银光对比Flash 作为平台和 Silverlight 对比Flex 作为 RIA 框架。
第一个问题取决于您的时间范围。Flash Player 的覆盖率超过 95%,Silverlight 与之相差甚远。不过,Silverlight可能会实现这一目标,毕竟它有微软的支持。如果您的目标是下周推出一个网站并希望拥有大量受众,那么 Silverlight 不是一个选择。如果您的目标是推出一个非常酷的应用程序,每个人都想使用它,那么它有点不同,如果您的应用程序足够好,您的目标受众可能会安装 Silverlight 只是为了能够运行它。
至于第二个问题,是开发容易程度的问题 应用 在银光中。Flex 不仅仅是一组小部件,它还是一个非常大的框架,可以完成很多事情来简化开发人员的工作。您可以仅使用核心 Flash API 编写相同的应用程序,但这会需要更多工作。根据 Silverlight 中的可用功能,这应该是做出决定时的一个重要因素。如果可以缩短开发时间,那么拥有两个平台值得吗?
我认为 Silverlight 对于拥有 .NET 开发人员但没有设计师经验的公司来说是最有利的。
与寻找 ActionScript 专家相比,寻找 C# 或 VB 开发人员更容易找到技能组合。然而,需要权衡:
设计经验不仅是对设计师艺术技能的投资,也是对 Adobe 提供的知识和工具的投资。您几乎可以保证专业设计师使用 Mac 并具有使用 Adobe 工具的经验。
目前,Silverlight 设计器工具尚未成熟,可能会让人头疼。例如,尝试渲染任何包含 IValueConverter 的 xaml 时出现 Blend 错误,这是有问题的。我不知道 Adobe 开发人员的体验如何,但我确信它同样令人毛骨悚然。
因此,在游戏的这个阶段,归结为人力资源:
如果您有 .NET 经验并且在设计技能方面投入很少,请选择 Silverlight。编程技能/工具将是可转移的。如果您有设计经验和技能,请选择 Flex。设计师技能/工具将是可转移的。
无论哪种方式,两个客户端平台都需要与服务进行通信以获取数据,因此您将始终在后端利用现有的编程专业知识。
释义 乔恩的 从不同角度提出意见:
我认为您应该将 Flex 视为一项长期投资,就像 Adobe 似乎正在做的那样。何时使用 Silverlight 与何时使用 Silverlight 存在明显的平衡。当您担心覆盖范围和安装基础时,Flex 是最佳选择方向,以下是更多原因:
后发优势 - 正如 Adobe 构建了一个 "更好的 Java Applet 使用 Flash,他们可以查看 如何从 划伤,今天。他们有 了解人们如何使用 在今天的网络上 现有客户的发明人 平台不可能 准确地猜到了。.NET可以添加 功能,但它们不能 现实中的平台和 重新开始
设计师的熟悉度 - 虽然Flex/Air是一种新的编程模型,但它并不是设计师完全不熟悉的。他们将“获取” Flex的工作方式要比了解新功能差的工具和新动画范式的新设计环境要快得多。
在Silverlight-.NET中摆脱了RGB颜色模型最初是为Windows构建的,它是其工作方式的核心。很久以前,Flex抛弃了以设计为中心的模型。
您的所有工具都在您的 Mac 上运行。Nuff说。
很酷的功能 - Silverlight在一些明显的功能(例如网络摄像头 / MIC集成或3D /图形加速度)上仍然可以追赶Flash。
我们正在开发 silverlight 和 flex,以下是开发人员对两者的看法。
Silverlight的优点:
- C# 的力量、代码片段、重用现有的 C# 算法实现
- 其他语言的强大功能,如泛型和 Linq 等
- CLR 的本机执行能力取代 Flash 的动作脚本解释器
- 一款适用于所有开发的集成 Visual Studio
- Expression Blend 确实很酷,而且比 Flex Builder 更高级的编辑器
- XAML 是搜索引擎友好的
- 非常好的状态转换并且很容易定义它们
- 线程和异步任务
- 可访问性,没有人知道微软总是在其所有产品上提供最好的可访问性功能,它们总是与残疾人士合作得很好,相比之下,只有 IE 支持完全可访问性,而 Safari/firefox 等浏览器则相差无几。
Silverlight 的缺点:
- 严格来说,微软平台,我知道很多人会争论,但在目前的情况下,一半的 Intel Mac 用户无法让 silverlight 3.0 工作,所有 PPC Mac 用户都无法使用 Silverlight 2.0 及以上版本,并且 Linux 上没有 silverlight。
- 有mono,但没有得到微软的正式支持,它总是落后于逆向工程.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..
- Number 类有一个 bug,无法存储完整的 64 位长值
- Eclipse 不利于设计出色的 UI
结论
- 我们使用flex进行数据应用程序,这些是简单的表单处理应用程序
- Silverlight 提供极其丰富的图形和动画
Silverlight 的问题是,仍然有很多人没有安装它。另外,我不确定如果现有的 .Net 开发人员只熟悉更传统的服务器端 .Net 编码,他们能够如何充分利用他们现有的技能。
您推动 Silverlight 而不是 Flex 的原因是什么?如果您必须向 SOFlow 社区询问原因,那么您如此愿意推动它似乎很奇怪。
Flex 开发的另一个优点是您可以切换到使用相同源代码(和相同 IDE)开发桌面应用程序 (Adobe AIR) 并从 Web 分发它们。您可以查看 这为了Flash平台的未来。
2011 年第 3 季度更新:Flash 11支持低级3D加速,并且已经有很多框架和主要引擎(Unreal Engine 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 年第 3 季度更新:哈哈,谁还用Flash呢。
不要忘记:
Flex 非常跨平台,因为它是使用 Java 编译器进行编译的,这意味着您在开发 Flex 应用程序时可以轻松地使用 Mac 或 Linux。我当前的 Cruisecontrol 设置(使用 Linux)我构建了 Flex 应用程序,但开发人员同时使用 Mac、Linux 和 Windows。
根据我的经验,Java 开发人员在 Flex Builder 中感觉很自在,因为它基于 Eclipse。
你永远不会在 SO 上对这个问题进行公平投票,因为它有这么多的微软开发人员。
此外,人们可能会否决这个答案,这确实说明了一切。
我说让你的开发人员尝试这两个平台,看看他们更喜欢哪个。
为了回答下面的评论,我只是注意到虽然有很多推荐 Flash / Flex 的答案,但针对 Silverlight 的答案有更多的赞成票。这不是说谎的问题,只是偏向于你熟悉的,不一定是最好的平台。
当谈到 Flex 时,Silverlight 程序员不知道他们错过了什么。Silverlight 缺乏 Flex 所具有的组件模型和事件触发功能。我的一个朋友使用 XNA 和 C#,必须克服各种困难才能让他的 Silverlight 应用程序正常工作。然后,它必须交给设计师才能让它看起来还不错。
收听有关 Silverlight 的 deepfriedbytes.com 播客,您会听到即使是真正推动 Silverlight 的几个人也承认其中一些问题。(我 思考, ,如果我没记错的话,其中一个人在微软工作,但我可能是错的——我上周听过)。他们一致认为,在目前的状态下,Silverlight 还没有为任何大型应用程序做好准备。
我会选择 Flex,这是一种干净、简单的方法 - 特别是如果您已经熟悉 Flash 和 ActionScript 3.0。在我看来,Flex 更有意义——Silverlight 仍然需要成熟。
归根结底,您的开发人员不应该决定您的技术。这绝对是一个应该基于您的用户的产品决策。
如果您要部署到消费者 Internet,则 Flash Player 或 AJAX 是最佳选择。如果您要部署到 .net 企业的专用 LAN,您有多种选择。
作为一名图形设计师,我在过去几年中(断断续续地)使用过 Flash,在过去 1.5 年中使用过 Silverlight(及其老大哥 WPF)。根据我从我的团队(他们都是开发人员或前开发人员)那里听到的消息,如果您的 .Net 开发人员将完成所有编程工作,请选择 Silverlight。我喜欢 Flash,但即使在 Flash 9 及更高版本中对 ActionScript 3 进行了 OOP 彻底修改,它仍然是一种有点古怪的语言,并且在 AS3 和 C# 之间来回切换可能会让您的开发人员发疯:-)。
对于您的设计师,请执行以下操作:
给他们一份 Expression Blend,Silverlight/WPF 的 GUI 开发工具。
Blend 的初始学习曲线有些陡峭,并且界面会向您提供大量变量/选项,因此请投资一些培训,并给您的设计师时间来跟上 UI 的速度。
说到培训,请订阅 Lynda.com 视频库,尤其是。Lee Brimelow 表达混合培训课程。
买者自负:Blend 和 WPF 变化很快,因此有时您会在 Blend 中遇到错误,这些错误会在 Blend 的下一个 beta/CTP 中修复。例如。Blend 2 中存在一个错误,导致我的故事板(动画)无法在最近的项目中工作。我升级到 Blend 2.5CTP,它起作用了。
Silverlight 内容似乎并不总是与最新的 Silverlight 插件 Beta 版兼容,如果您正在测试某些仅在最新的 Silverlight 插件中可用的新功能,请记住这一点。
投资一个强大的系统(四核、4G 内存等),Blend 会消耗大量资源,尤其是。当你有很多层时。例如。我正在开发一个应用程序,其基本应用程序中有超过 100 层(!)(在某些用户控件中还有 100 多个层),以及大约 40-50 个故事板。每隔几分钟,我就必须重新启动 Blend,因为 UI 停止响应(但不会冻结)。或者,或者将所有可以移动到用户控件中。
我的团队过去用 Flex 编写丰富的 Web 功能,现在用 Silverlight 编写。
我们进行此转换的原因:
- FlexBuilder 是基于 Eclipse 构建的。日食太可怕了!免费,但漏洞百出,充满故障且速度缓慢。
- FlexBuilder 的价格是 Expression Blend 的两倍,无论如何,我们可以通过 MSDN 免费获得它。
- Flex 对于源代码控制来说是一种痛苦,它不喜欢将文件放在一个地方,并且它不能与解决方案的其他部分很好地配合(我们尝试使用 SourceGear Vault 和 SVN)。
- Flex 的 ActionScript 版本不喜欢大多数 SOAP 实现,特别是它与 .Net WebMethod 实现存在各种问题。
- 尽管我们定期使用许可的 Flex 组件,但它决定我们没有该版本并添加了仅演示的水印。删除此问题的唯一方法是将项目分解,重新安装 Flex,重新安装许可证并重建它。
- FlexBuilder 根本不喜欢Vista。
- Silverlight 的接受度正在不断增长,一旦达到我们可以将其添加为我们切换的相关功能的要求的水平。如果我们为网络(而不是企业)受众工作,我不确定我们是否可以做到。
我们项目的其余部分是 .Net 和 C#,您可能会发现所有这些问题在 Java 商店中都不那么重要。
正如 Kibbee 上面暗示的那样,利用现有 .Net 开发人员的论点并没有多大意义。成为 .Net 开发各个方面的专家是不可能的。平台太大了。Java 也是如此。从技能角度来看,Silverlight 唯一的优点是您可以使用您最喜欢的 .Net 语言进行编码。如果您已经在使用 JavaScript 进行任何重要的 Web 开发,那么这个优势就相当小了,因为 Action 脚本是一种变体。因此,真正让程序员转向 Flex 或 Silverlight 就是学习该平台的 API。
我们也遇到了同样的问题,Flex 轻松获胜。我们的 .NET 开发人员一开始很担心,但在 Ajax 和 JavaScript 的痛苦中工作了这么长时间之后,他们现在喜欢并真正享受在 Flex 中工作。
这是一个简单的测试给你。。。尝试找到至少 3 个真实的 Silverlight 应用程序示例(不是游戏、视频播放器或小工具)。然后对 Flex 执行相同的操作。
我认为 Silverlight 和 XAML 比 ActionScript 更好,虽然我不熟悉 ActionScript IDE,但我熟悉 VS2008 和 Expression Web/Blend,它们是非常好的开发环境,并且一直在变得更好。我会选择 Silverlight,我认为让用户安装插件的关键是有一个好的插件检测页面来解释 SL 是什么以及为什么他们需要它。有关此示例,请访问 http://memorabilia.hardrock.com/ 并在禁用 SL 插件的情况下尝试。
尽管我已经使用过 Silverlight,并且对能够在浏览器之外运行应用程序感到非常兴奋,但 AIR 的一大优势是提供对本机拖放功能的访问。这允许您构建非常用户友好的图像或文档上传功能(例如Flickr 上传器)。据我所知,微软尚未专注于这种支持(即没有公布任何计划)。
我使用这个经验法则:如果您的公司正在开发基于互联网的多媒体软件,并且拥有各种平台的客户,并且您不进行数据库密集型应用程序,那么 Flex 是明确的答案,如果您的公司同时开发基于互联网和 DVD 的产品,则互动性较低,但密集型( CPU、内存)并使用大量数据库事务 Silverlight 更有意义
有人说:“查找 3 个现实世界的 silverlight 应用程序”。好吧,我脑子里就知道一些,但我还是用谷歌搜索了一下。列表:
- 2008年北京奥运会(统计数据在这里, ,已交付 250TB 数据!)
- Netflix 点播播放器
- AOL 电子邮件客户端(可能尚未发布)
哦,不是视频播放器?好吧,只剩下 UFC 应用程序(它是一个混合视频/聊天/其他东西)和 AOL 电子邮件客户端。Silverlight 擅长视频,这就是它立足的地方,但这并不意味着它不能做其他事情。我认为没有理由仅仅因为它在视频方面做得很好而忽略它。
信息世界 [关联] 表示:“Silverlight具有雄厚的技术优势和相对较好的性能。这是一种非常强大的 RIA 技术,对于具有 .Net 经验的程序员和具有 XAML 经验的设计人员来说特别有用。” 这是一篇关于您的问题的好文章,值得您阅读。
我的答案:如果您有一个熟悉 .NET 的开发团队,那么 Silverlight 应该是您的首选。如果没有,那就真的是一场折腾了。我看过一些文章说,与使用 Flex 的平台相比,Visual Studio 是一个更优秀的开发平台。但Flash几乎无处不在。
另请记住,Silverlight 2 几乎不使用 Javascript(我认为没有,但我并不肯定)。因此,任何因为 JS 而回避 Silverlight 的行为都是没有根据的。
如果 表现 重要的是,Silverlight 在这方面胜出。我曾多次看到我的浏览器的 CPU 使用率达到 100%,并且杀死任何正在运行 Flash 的窗口总会摆脱它。这在 Chrome 中尤其明显,您可以看到消耗 CPU 的进程。如果您对 Silverlight 的游戏潜力感兴趣,请寻找 QuakeLight,即 Quake 的 Silverlight 端口。情况发展得非常好。
我真的认为这取决于您的开发人员天赋所在以及您将交付什么样的应用程序。简单的游戏?闪光。业务线应用程序?银光。介于两者之间?遵循开发人员的建议。
如果您了解 .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 人,但我开发得如此之快,我必须推荐它。
你真的不应该使用 任何 这些ActiveX2.0技术。Silverlight 和 Flex 都不是...
首先,它们都只不过是“支持在浏览器中运行的分布式 winforms 框架”,其次它们不能很好地移植到其他设备(特别是对于 Silverlight),第三它们不起作用与页面的其他部分配合良好。它们对于残疾人等来说效果不佳。列表一直延伸到无穷大......
Adobe 和 Microsoft 都试图极力隐藏这一事实,但归根结底,Silverlight 和 Flex 只不过是新包装中的 ActiveX...
当然,它们在沙箱中运行,是托管语言等等。但它仍然是一大块 BLOB 被下载并在浏览器本地运行,又称为 ActiveX...
这是一个老问题了 历史已经说话了!
Silverlight 几乎已经被微软抛弃了,它从未获得过有用的安装基础。由于微软没有 100% 承诺。
Flash(因此称为 Flex)仍在继续。然而越来越多的浏览器不支持任何插件, 因此,flush 走上 Silverlight 的道路只是时间(几年)的问题.
也许有一天 Flex 将重新定位为没有插件的 HTML5……
iPhone 被谈到,它说唯一的选择是 Apples Way 或 HTML5。
Flash Player 在几乎所有桌面平台(Windows、Linux、Mac)中均已正式提供并受支持,而 Silverlight 主要在 Windows 中受支持。
下列 文章 提供两个平台的比较。