在Ajax,Flex和Silverlight之间进行选择

时间:2020-03-05 18:49:05  来源:igfitidea点击:

Ajax,Flex和Silverlight是制作更多交互式Web应用程序的几种方法。在决定将哪个用于新的Web应用程序时,我们将考虑哪些因素?

它们中的任何一个是否提供更好的跨平台兼容性,性能,开发人员工具或者社区支持?

解决方案

回答

诸如Flex和Silverlight之类的Web运行时都提供诱人的功能,但要付出两笔大笔费用:

  • 它们仅在页面上的矩形内运行,并且不与普通的Web小部件交互
  • 只有安装了该插件的人才能使用它们

甚至不是几乎无处不在的Flash并未安装在每个Web浏览器上,因此,通过选择使用插件运行时,我们会排除一部分观众。

相比之下,JavaScript(或者Ajax)几乎可以在所有浏览器上使用,并且可以与普通网页更好地交互,但是它是一种更原始​​且更具限制性的语言。将其用于复杂的动画可能会有些棘手,并且我们需要在更多平台上的更多版本中测试应用程序,以确保其正常工作。

跨平台兼容性不再是以前的问题,而是这样的问题:在插件库的功能方面,我们获得的收益会比在被排除在外的受众群体中失去的收益多吗?

到目前为止,我自己的答案一直是JavaScript / Ajax,但在任何新项目中我都会对其进行重新评估。

回答

受众是什么:公共网站或者Intranet商业应用程序?如果受众群体受控,他们将安装运行应用所需的内容,则采用率并不重要。但是,如果我们需要尽可能多的受众来使网络启动成功,那么这可能很关键。

你的目标是什么?以最低的成本建造东西?学习新技术?

我们可以利用我们现有的技能吗?如果我们已经知道.NET,那么Silverlight将会得到很大的帮助。学习Flex可能很有趣且有用,但是比起使用.NET技术的更多经验,它对我们是否更有用?记住要考虑学习全新的机会成本。

我目前还没有一个明确的技术赢家,而且很长一段时间都不会有这样的赢家,所以选择将取决于相当主观的因素。

回答

以下是每个区域的简要介绍(包含许多有用的链接):

跨平台兼容性

Ajax可在任何可以运行JavaScript的现代浏览器中使用。 Flex需要Flash或者其他任何可以处理SWF的东西,但是一旦安装,就兼容性而言,这完全是一种随心所欲。 Silverlight棘手且容易被误解,因此在此MS进入丰富的Web应用程序竞赛之前,请仔细考虑用户群。还请记住,Silverlight仍处于Beta版,因此,随着它的开发,它可能会在将来变得更加广泛地使用和安装。

表现

我担心发表太多关于性能的声明,因为它实际上取决于我们愿意优化的数量以及应用程序的确切性质。而且,某些技术堆栈永远不会变得很快。有人在进行比较,但同样,它取决于很多因素(甚至是我们要测试的浏览器版本!)。开始开发后,最好根据其他因素进行选择并进行优化。

开发者工具

这三个工具都有"黄金标准"开发工具:

  • 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几乎可以用了),但是这里有一些通用准则:

无处不在

  • Ajax-跨平台的所有现代浏览器均支持
  • Flex-Runtime(Flash Player)在Windows,Mac OS和Linux上具有非常广泛的安装基础。我上次检查时,Linux版本有点错误
  • Silverlight-目前,Runtime的安装基数很低(并且没有Linux支持)

编程语言选择

(由于主观性而未被采用,但请注意,Silverlight提供了最多的选择。还请注意,应考虑团队中开发人员的现有语言经验。)

  • Silverlight:任意.NET语言(C#,Visual Basic,IronPython(?),IronRuby(?))(以及用于UI定义的XAML)
  • Ajax:JavaScript(以及用于UI定义的XHTML)
  • Flex:ActionScript 3(以及用于UI定义的MXML)

API稳定性和兼容性

  • Flex-跨平台和浏览器的运行时相同,目前比Silverlight更成熟,更稳定
  • Silverlight-平台和浏览器的运行时相同,但不如Flex / Flash成熟,v2.0仍处于测试阶段
  • Ajax-跨浏览器的兼容性问题(不过,可以通过Ajax库缓解)

Web /浏览器集成

  • Ajax-内容是基于标准的浏览器内部的:可被浏览器和搜索引擎搜寻器搜索,并遵守浏览器和操作系统已建立的任何标准UI惯例
  • Flex和Silverlight-并非浏览器本地的内容(即以其自己的小"沙盒/矩形"运行):不一定要遵循给定平台的既定UI惯例

开发者工具

  • Ajax-我们最喜欢的代码编辑器,浏览器和浏览器调试工具包
  • Flex-Flex SDK可免费用于Windows,Mac OS和Linux,并可与我们喜欢的代码编辑器一起使用。包含一个命令行调试器,但是Adobe提供的探查器仅在商业Flex Builder IDE中可用
  • Silverlight-AFAIK,该SDK可免费用于Windows,并可与我们喜欢的.NET开发工具一起使用

回答

除了这里已经提到的内容外,还要考虑的另一大问题是UI将会是什么。

如果我们要使用许多高级UI控件,例如树,列表,选项卡控件等,请考虑以下事项:

  • JavaScript / HTML-除了基本的下拉框,按钮和文本字段之外,没有对任何其他内容的本地支持。如果我们想要树控件或者选项卡控件之类的东西,则必须自己滚动或者找到第三方库。
  • Adobe ActionScript-对多种高级UI控件的本机支持
  • Silverlight-1.0的UI控件非常有限,但是2.0将添加更多控件,并且我敢肯定,我们将继续在将来的版本中看到添加的控件。