代码之家  ›  专栏  ›  技术社区  ›  ISW

javascript/css vs.Silverlight vs.Flex

  •  6
  • ISW  · 技术社区  · 16 年前

    我们目前有一个非常复杂的业务应用程序,其中包含大量的javascript代码,使用户界面和交互感觉尽可能接近于使用传统桌面应用程序(因为这是我们的用户想要的)。多年来,这种JavaScript代码不断增长,使其难以管理和维护,并且使添加新功能更有可能破坏现有功能。不用说,很多代码也不再是最先进的了。

    因此,我们正在讨论应用程序的客户端部分是否应该用flex或silverlight重新编写,或者用一些最先进的javascript框架(如jquery)重新编写,或者我们是否应该继续使用现有的内容并逐步尝试替换现有代码中最糟糕的部分。更难决定的是,重新编写用户界面可能会花费我们6-12个人月的时间。

    我想听听你们对这个问题的看法(也许你们中的一些人已经做出了类似的决定)。

    编辑:要回答一些问题,答案是:后端代码是用C语言编写的,目标受众(通常)是我们销售软件的公司的非技术用户(不是一般公众,也不是严格的内部用户),软件“仅”必须在桌面浏览器中运行,但不一定在移动设备上运行。设备和客户端应用程序是一个全面的用户界面。

    8 回复  |  直到 9 年前
        1
  •  15
  •   kemiller2002    16 年前

    老实说,我将重构旧的JavaScript代码,而不是重写应用程序。既然你在问把它放在哪个平台上,我想你的团队不是他们中的任何一个的专家(不是抨击团队,这只是一个简单的事实,你在做决定时必须考虑)。这将对您产生不利影响,因为您将有双重职责重写和学习如何在新平台上进行操作。

    通过将它保存在JavaScript中,如果您选择并迭代地执行它,您可以慢慢地引入一个框架(替换代码部分,测试它,释放它,并修复任何错误)。这将使您以较慢的速度完成任务,并在过程中获得反馈。同样地,如果项目被部分取消,那么您就不能完成所有的工作,因为最终用户正在使用更新后的代码。记住瀑布模型,它本质上是完全交换出来的,几乎永远不会工作。

    尽管我不愿意承认这一点,但对于开发人员来说,这始终是最有趣的事情,改变平台,同时更换整个系统几乎不起作用。有无数这样的例子,网景就是其中之一。 Here is the post from Spolsky on it. (我也推荐这本书 Dreaming in Code . 这是一个失败的软件项目的很好的例子,以及失败的方式和原因)。记住,从头开始重写系统,你基本上需要仔细检查每一行代码,找出它的作用和原因。一开始你认为你可以跳过它,但最终会归结到这一点。正如您所说,您的代码是旧的,这意味着很可能有黑客在其中完成一些事情。其中一些你可以忽略,另一些则是,“我不知道系统需要它来做到这一点。”

        2
  •  5
  •   cletus    16 年前

    这些事情让人想起:

    • 由于您有一个.NET后端,并且您有一些能力强制客户使用特定的平台,因此Silverlight是一个选项;
    • 因为您的客户机是一个完整的UI,所以您需要小部件和其他可能的功能,如拖放;
    • 我还没有看到任何对我来说可以在flex/silverlight(例如流媒体视频、SVG支持)中重新开始的要求(这通常不可行)。除了你的团队对JavaScript的熟悉之外,我认为你不可能用其他任何方式来做这件事。

    当然,javascript有很多东西,而且有很多javascript框架 1 . 最重要的划分是,您的意图是“装饰”一组网页,还是需要一组完整的小部件来在Web上创建类似桌面的应用程序。你的问题表明是后者。

    因此——我可能会因为说这个而被否决——我不认为jquery是答案,我说这个的时候喜欢jquery。jquery(imho)对于增强网页和抽象的跨浏览器低级功能非常有用,但对于复杂的UI开发人员来说,最重要的因素是:

    都是关于小部件的。

    是的,我知道 jQuery UI 但在小部件方面,它比其他的要稀疏得多。我建议您查看一些框架的示例和小部件库:

    其他的(jquery、dojo、mootools、prototype)更为“紧凑”的框架,可能不太适合您的目的。

    在做决定时还要考虑每个框架的许可。

    我对以上三点的看法是:

    • extjs在某种程度上激怒了社区,因为它最初是作为lgpl创建的,但是 controversial license change (那条线有76页!)至2.1版的GPL/商业版。问题是,社区不再积极参与框架的发展。反正不是主线版本。这意味着它是由一个小团队(可能是一个人)而不是社区开发和支持的。imho不值得为此支付商业许可证,GPL在您的情况下可能是禁止的;
    • Yui得到了雅虎的支持,并获得了一个更为宽松和入侵性更小的BSD许可证。它成熟、使用良好,值得认真考虑;
    • SmartClient给我留下了很多印象。它可能拥有最许可的许可证(LGPL),大约有7年的历史,拥有令人难以置信的令人印象深刻的可用小部件阵列。查看他们的功能浏览器。

    您的决定应该基于您如何“免费”获得尽可能多的应用程序。您不想花费宝贵的开发人员时间做以下事情:

    • 对UI小部件(如树和手风琴)进行编码;
    • 测试和修复跨浏览器的javascript和CSS问题;
    • 创建本地框架,使现有框架的功能和性能大大重复。

    我会认真地看待上面三个中的一个作为你前进的道路。

        3
  •  5
  •   marc_s    9 年前

    这个决定通常不太关注技术,而更多关注你的技能和舒适区。

    如果你有人吃和呼吸javascript,但对.NET或flash/flex一无所知,那么坚持使用javascript并依赖于jquery或原型之类的库是没有问题的。

    如果你有其他人的技能,那么你可能会得到更快的结果使用Silverlight或Flex,因为你得到了相当多的功能“免费”与他们两个。

        4
  •  4
  •   Christian Nunciato    16 年前

    我对这一点的看法非常简单:除非应用需要公开访问,除非它需要搜索引擎优化和可查找,和/或有一个令人信服的案例,它必须保持严格的文本为基础,然后芯片堆叠,以支持富客户端运行时,如flash或silverlight的大门。

    一个很大的原因,如果不是最大的,就是它们消除了为多个浏览器和平台开发的复杂性。再次:他们 消除运行时环境变量 . 不再调试Netscape和IE的旧版本,不再进行对象检测和后续的分支,不再进行古怪的CSS攻击——一个代码库,就完成了。将运行时环境卸载到Adobe或Microsoft将为您节省时间、金钱和头疼,其他一切都一样。(当然,有yui、jquery等,但它们并没有消除这个变量——它们只是抽象它。它们不是抽象的 全部的 其中的一个——只有一部分;最终,仍然由您来测试、调试、重新测试、调试、重复。)

    当然,由于现有的代码库问题,您的情况要复杂一点,而且很难明确地说出您应该走哪条路,因为只有您有代码,而我们只是有意见的极客。但是假设,仅仅通过你的问题,重构你现有的代码库就涉及到一个足够重要的任务,即使在一开始就考虑到一种替代性的(可能是相对外国的)技术,这听起来是可能的,那么我的反应是你的好奇心很好,而且在做决定之前,你应该认真地看他们两个。

    对于我来说,在过去的几年里,我是一个长期的服务器端人员,ASP.NET/C,我编写了很多基于文本的业务应用程序,最后几款着重于用JavaScript提供丰富的Soverign UI。在过去的几年里,我几乎只和flex打交道。我在两个世界都有经验。我可以毫不犹豫地告诉你, 击败flex是其他人的工作 :它只是一款功能丰富、生产效率极高的产品,对于业务线应用程序而言,它仍然领先于Silverlight。我只是不能很好地推荐它;单是数据绑定和事件处理功能就可以节省大量的时间,更不用说你在布局、动画等方面拥有的完全自由了。

    所以,我的建议是: 仔细看一下flex . 最后,你可能会发现一个从头开始的重写是一个太大的任务,不能证明是正确的,只有你才能做出这个决定。(公平地说,你对flex项目的处理能力和对javascript项目的处理能力是一样的——我知道。我已经做过了。)但总而言之,flex现在可能是最不受限制、最灵活、功能最丰富、最高效的选择,所以它当然值得考虑。祝你好运!

        5
  •  2
  •   Scott Evernden    16 年前

    你所拥有的任何一个多年来开发的javascript看起来都不可能像今天这样。毫无疑问,这里有很多有用的代码。尽管如此。因此,我的建议是使用jquery重新编写JavaScript,并使用一个可用的GUI附加组件,也许看看yahoos的东西。您还将以这种方式面向最广泛的受众。

        6
  •  1
  •   Miguel Ping    16 年前

    GUI技术应该首先由目标受众决定。例如,如果你的目标是英国的iPhone用户,我不推荐使用flex,因为iPhone目前没有flash播放器。

    请记住,如果您切换到像Silverlight这样成熟的GUI工具包,您的用户可能会发现L&F不自然,因为通常的请求回复周期在客户端框架中并不那么明显。

    在那之后,您的开发人员应该有话要说。每一个工具箱都需要维护,如果您切换到一个全新的工具箱,开发人员将不得不熟悉新的工具箱,这可能会很昂贵。

    我的建议是,由于您的开发人员熟悉JavaScript,所以您应该坚持使用它,并逐渐用一个新的工具包(如原型、jquery或任何其他工具包)替换旧的JavaScript。使用最先进的工具包,您可能会更快地重做一些旧东西。记住,你可以用任何Tookit构建漂亮的应用程序。

        7
  •  1
  •   slisbin    14 年前

    我们已经开发了一个极其丰富的应用程序,使用ExcJS和服务器上的C++和一些C++。我们的客户不仅对桌面浏览器中的界面感到满意,而且对JavaScript的修改很少,我们还能够提供Web浏览器支持。此外,我们还有第三世界国家的客户,他们不能使用Flash或Silverlight应用程序,因为他们的现场人员在网吧中使用自助服务亭(其中许多都没有安装Flash-忘记Silverlight!)我认为这些问题和其他问题弥补了用javascript编写复杂应用程序的困难…

        8
  •  1
  •   n00begon Priidu Neemre    12 年前

    检查这个 comparison table 对于flex与javascript: