Ajax、Flex和Silverlight是制作更具交互性的 Web 应用程序的几种方法。在决定将哪个用于新的 Web 应用程序时,您会考虑哪些因素?
它们中的任何一个是否提供更好的跨平台兼容性、性能、开发人员工具或社区支持?
Ajax、Flex和Silverlight是制作更具交互性的 Web 应用程序的几种方法。在决定将哪个用于新的 Web 应用程序时,您会考虑哪些因素?
它们中的任何一个是否提供更好的跨平台兼容性、性能、开发人员工具或社区支持?
以下是每个区域的简要介绍(有很多有用的链接):
Ajax可以在任何可以运行JavaScript的现代浏览器中工作。Flex 需要 Flash 或其他任何可以处理SWF的东西,但是一旦安装,就兼容性而言,它完全是免费的。Silverlight 很棘手,也容易被误解,所以在使用这款 MS 进军富 Web 应用程序军备竞赛之前,请仔细考虑您的用户群。另请记住,Silverlight 仍处于测试阶段,因此随着它的开发,它可能会在未来得到更广泛的使用和安装。
我害怕对性能做出太多陈述,因为这实际上取决于您愿意优化多少以及您的应用程序的确切性质。此外,一些技术堆栈永远不会很快。有些人一直在进行比较,但同样,这取决于很多因素(甚至是您正在测试的浏览器版本!)。最好根据其他因素进行选择,并在开始开发后进行优化。
三者中的每一个都有“黄金标准”开发工具:
Ajax 基本上有无限的选择,这取决于您的其余技术和架构选择。您实际面临的大问题是依赖哪些库,Google 已经通过Web Toolkit之类的东西给出了一个很好采用的答案。当您深入了解它时,它只是 XML 和 JavaScript,对吗?
Flex 来自 Adobe,就像 Flash 开发一样,您最好坚持使用他们自己开发的工具,因为——嗯——他们正在制定标准。
Microsoft 已将 Microsoft Expression Blend 2.0 和 2.5 版分别用于设计 Silverlight 1.0 和 2 应用程序的 UI。Visual Studio 2008 可用于开发和调试 Silverlight 应用程序(来自 Wikipedia)。
所有三个选项都有官方和非官方社区、企业和开源支持。无论你已经融入了哪一个,哪一个让你感觉最自在,都是非常个人化的事情,但我会提供这个建议:坚持你所知道的。如果您是一名 MS 开发人员并将 MSDN 作为您的主页,您可能会认为Silverlight 文档和论坛非常有用。Flex 有一个非常相似的故事。论坛非常好,如果您已经是 Flash 人,那么您将在家中使用他们的文档和用户社区。
另一方面,Ajax 基本上无处不在,因为您可以实现许多不同的方式并使用许多种类繁多的库。每个图书馆都可以拥有自己的论坛来访问和邮件列表潜伏在其中寻求答案。
再一次,这三个企业巨头都在努力培养他们的社区,并尽可能为开发商提供最好的支持,这将使他们在未来获得更大的市场份额。
在我看来,选择应该主要基于您将要构建的应用程序的性质(例如,如果您需要处理矢量图形,Ajax 几乎没有了),但这里有一些一般准则:
无处不在
编程语言的选择
(由于主观性,未排序,但请注意 Silverlight 提供了最多的选择。另请注意,应考虑团队中开发人员的现有语言经验。)
API 稳定性和兼容性
网络/浏览器集成
开发者工具
像 Flex 和 Silverlight 这样的 Web 运行时都提供了诱人的东西,但也带来了两大成本:
即使几乎无处不在的 Flash 也并非安装在每个 Web 浏览器上,因此通过选择使用插件运行时,您排除了部分受众。
相比之下,几乎所有浏览器都可以使用 JavaScript(或 Ajax),并且与普通网页的交互效果更好,但它是一种更原始且限制性更强的语言。将它用于复杂的动画可能会很棘手,您需要在更多平台上的更多版本中测试您的应用程序,以确保它可以正常工作。
跨平台兼容性不再是过去的问题,所以问题是:您在插件库的功能中获得的收益是否会比您在排除的受众中失去的更多?
到目前为止,我自己的答案一直是 JavaScript/Ajax,但我会在任何新项目中重新评估它。
您的受众是什么:公共网站或 Intranet 业务应用程序?如果您的受众受控制,他们将安装运行您的应用所需的内容,那么采用率就无关紧要了。但是,如果您需要尽可能多的受众来使您的网络创业成功,那么这可能是至关重要的。
你的目标是什么?以最低的成本建造东西?学习新技术?
你能利用你现有的技能吗?如果您已经了解 .NET,那么 Silverlight 会得到提升。学习 Flex 可能很有趣且有用,但它对您来说是否比更多的 .NET 技术经验更有用?记住要考虑学习全新事物的机会成本。
在这一点上,我没有看到明确的技术赢家,而且很可能在很长一段时间内都不会出现,因此选择将归结为相当主观的因素。
除了这里已经提到的,另一个需要考虑的重要事情是你的 UI 将是什么。
如果您要使用许多高级 UI 控件,如树、列表、选项卡控件等,请考虑以下事项:
JavaScript/HTML - 除了基本的下拉框、按钮和文本字段之外,没有任何原生支持。如果您想要树控件或选项卡控件之类的东西,那么您必须自己动手或找到第三方库。
Adobe ActionScript - 对各种高级 UI 控件的原生支持