V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
allenli
V2EX  ›  酷工作

关于几种 RIA 技术(富互联网应用程序) 不说废话,上干货!懂得就继续往下看...

  •  
  •   allenli · 2017-04-01 23:35:57 +08:00 · 5803 次点击
    这是一个创建于 2552 天前的主题,其中的信息可能已经有所发展或是发生改变。
    关于几种 RIA 技术(富互联网应用程序) 不说废话,上干货!

    Rich Internet Application (富互联网应用程序,简称 RIA ),一种全新的 Web 应用程序架构,它结合了桌面软件良好的用户体验和 web 应用程序易部署的优点,很快获得了企业的青睐。 近年来,各大开发平台供应商相继推出新的技术来支持 RIA 的开发,从 Ajax 到 SilverLight ,从 Apollo 和 AIR 到 Flex 和 Flash ,从 JavaFX 到 Laszlo ,各种技术粉墨登台,以期成为大家关注的焦点。
    然而,作为应用系统开发厂商,开发团队和开发者,在 RIA 大潮中,选择什么样的技术,让自己更好地构建 RIA 系统,成为一个我们需要仔细考虑的问题。

    AJAX
    Ajax 实际上是用新的技巧把一些古老技术结合在一起使用,从而让 Web Application 用户界面的交互性得到极大的提升。
    在 Ajax 中, XMLHttpRequest 是核心,是 Ajax 强大功能的来源, Ajax 和传统的 Web 界面技术区别也就在此。通过 XMLHttpRequest ,就把浏览器中的 HTML ( DHTML )和服务器端的数据分离开。利用 JavaScript 来操纵客户端访问服务器获取数据,并修改 HTML 结构,以显示数据。使用 Ajax 的经典例子就是 Gmail 和 Google Maps 了。

    Flash/Flex/Laszlo
    Flex 是为满足企业级应用而推出的应用程序框架。 Flex 提供基于标准的、声明性的编程方法和流程,用于开发和部署丰富客户端应用程序的表示层。 Flex 开发者使用直观的、基于 XML 的 MXML 来定义丰富的用户界面,利用 ActionScript (一种面向对象的脚本语言)来编写程序逻辑。
    该语言由 Flex 服务器翻译成 SWF 格式的客户端应用程序,在 Flash Player 中运行。目前 Flex 已经发布了 Flex 3.0 beta 。
    Laszlo 是一个开源的 RIA 开发环境。使用 Laszlo 平台时,开发者只需编写名为 LZX 的描述语言(其中整合了 XML 和 JavaScript ),运行在 J2EE 应用服务器上的 Laszlo 平台会将其编译成 swf 格式的文件并传输给客户端展示。在未来的计划中, Laszlo 还可以将 LZX 编译成 Java 或 .NET 本地代码,从而大大提高运行效率。在最新发布的 Laszlo 4.0 中,开发人员可以选择 Laszlo 最终显示为 Flash 还是 DHTML 。
    Flex 和 Laszlo 从运行位置来看,他们都属于服务器端技术,和大家熟悉的 ASP , ASP.NET , JSP 和 PHP 的运行机制类似。只是 ASP 等动态网页技术,是把界面元素解析为 HTML 发送给客户端的浏览器来展现;而 Flex 和 Laszlo 是把界面元素解析为二进制的 swf 文件,运行到浏览器中的 Flash Player 插件里。

    AIR
    AIR 之前称为 Apollo , Adobe 官方的解释为:是一个跨操作系统的运行环境,允许开发人员使用以前 Web 开发的技能来创建 Rich Internet Application ,并部署到桌面上运行。总体来说, AIR 就是 Adobe 把现有的技术,如:Flash 、 PDF 、 JavaScript 、 XML 和 ActionScript 集成在一起,并提供一个客户端运行环境,可以让开发人员开发可以访问 Internet 资源的桌面程序。本质上, AIR 就是让 Flash (或者 Ajax )脱离浏览器运行的一个桌面应用程序运行环境。
    要开发 AIR 应用程序,也很简单,有两种技术可供选择:一,使用 HTML+JS 技术;二,使用 Flex+Flash 。可使用的开发工具也就是开发上述技术的工具,如:flex builder 、 flash IDE 、 eclipse 、 notepad 等等。
    使用 AIR 来开发 RIA 的优缺点和 Flex 等类似,最大的好处就是:可以脱离浏览器成为一个独立的桌面程序而运行,并且不受浏览器安全限制,可以有更多的权限访问本地资源。
    目前, AIR 还在测试阶段,很多功能还不完善,相信等正式版发布后,会有更多特性值得我们期待。

    WPF
    一直以来,应用程序的用户界面都可以用不同的技术开发,从 MFC 到 VB ,从 Windows Forms 到 HTML+JS 。对于开发人员来说,这就需要针对不同的应用程序类型,使用不同界面开发技术。随着 Flash 等多媒体 2D 或者 3D 界面的出现,选择就越来越多。如果想使用一种技术就能开发各类应用程序的界面,这将是一个巨大的挑战。
    Windows Presentation Foundation (WPF),最初代号为“ Avalon ”,目前作为 .NET 3.0 的一个组件发布,就是为解决这一难题而设计。
    WPF 为桌面客户端和浏览器客户端提供了通用基础,大大简化了二者的应用程序开发工作。 WPF 采用更为现代的方法,支持视频、动画、 2D 或 3D 图形以及各种类型的文档,从而可以让用户以全新的方式处理信息。此外, WPF 还为桌面客户端和浏览器客户端提供了通用基础,大大简化了二者的应用程序开发工作。
    作为微软的下一代界面技术, WPF 的最大特点就是把界面的布局描述和界面逻辑代码分离。 WPF 通过 XAML (扩展应用程序标记语言,一种基于 XML 的语言,允许以声明方式指定用户界面,而非代码)把专业界面设计人员的工作和专业的程序开发人员的工作分开,让他们更容易协作,以开发出界面炫丽,功能强大的应用程序。
    同时微软为不同的工作提供了不同的工具,针对界面设计人员,推出 Expression Studio ;针对程序开发人员,推出 Visual Studio 2008 (有望今年年底发布 RTM )。
    通过提供更强大的图形支持功能, WPF 使得一系列数据可视化成为可能,而这依靠 Windows Forms 或其他的早期技术是不可能实现的。 WPF 还提供了 XML Paper Specification (XPS) 的基础,可定义查看、分发和打印固定格式文档的标准格式。

    Silverlight
    Silverlight 最初的代号叫“ WPF/E ”,意为 WPF run on Everywhere ,它是 WPF 的一个子集。 Silverlight 被社区称为微软出品的 Flash Killer 。
    官方对其的定义是:“ Silverlight 是一个跨浏览器的、跨平台的插件,为网络带来下一代基于.NET 的媒体体验和丰富的交互式应用程序”。 Silverlight 提供灵活的编程模型,支持 AJAX, VB, C#, Python, Ruby 等语言,并集成到现有的 Web Application 中,能够访问其中的 DOM 信息。内置多媒体技术的支持,可以以很低的成本播放媒体文件。
    目前, Silverlight 发布了两个版本, 1.0 beta 和 1.1 alpha 。可以运行于 Windows 和 Mac 平台下。同时 Mono 项目也在积极的开发 Moonlight ,一个在 Linux 下的 Silverlight 实现。

    XUL
    XUL 是一种基于 XML 的用户界面语言,它来自于 Mozilla 的开放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 Mozilla 浏览器上运行,而且也可以运行在其他描述引擎上,如 Zulu (一个 Flash MX 组件)和 Thinleys (一个 Java 实现)。 XUL 描述引擎都非常小( 100K 以下),它可以使用 XML 数据也可以生成 XML 数据。 XUL 的一个主要缺点在于它目前还没有获得一个主要商业实体的支持。 XUL 最大的优点在于它与 Gecko 引擎的集成(打开了通向大量 Web 标准的大门),以及与大多数其它 XML 用户界面描述语言相比,它是一种非常具有表达力和简洁的语言。
    目前 XUL 可以嵌入在 Mozilla (或 FireFox )浏览器中运行,也可以通过一个 XUL Runner 的运行环境,脱离浏览器运行。

    JavaFX
    “ JavaFX 是一个构建于 Java 技术之上完整的运行环境,可以用来交付到桌面、移动设备、手持设备和电视等环境的富互联网应用(RIA)。” SUN 如此定义 JavaFX 。 JavaFX 是 SUN 进入 RIA 领域的开发技术,它包含 JavaFX Script 和 JavaFX Mobile 两个部分,使用一种全新的脚本语言,依赖 Java SE/ME 运行时,利用 Java2D 和 Swing API 来实现在桌面或者移动设备上运行 RIA 应用。

    三类 RIA 技术比较
    通过上面各种 RIA 开发技术介绍,我们可以看到它们各自的理念有所不同,运行的环境也不尽相同。总体说来, RIA 开发技术分为三类:
    1. 浏览器类,整个 RIA 是运行于浏览器里面,依靠传统的 HTML+CSS+JavaScript 技术来实现界面的表现和控制。
    2. 浏览器插件类, RIA 通过插件的方式运行于浏览器中。正在运行的程序是厂商特定的运行格式,需要特定的运行环境。
    3. 桌面类, RIA 脱离浏览器直接运行于桌面之上。和常见的桌面程序很类似,但是可以访问 Internet 资源,并具有部署容易,更新简单的特点。
    在三种分类的技术中,浏览器技术是成为开发 RIA 最直接的技术,此类技术适合一直在做 Web 应用的软件开发商。
    新型桌面技术则完全另起炉灶,充分使用桌面开发的技术、技巧和理念,并结合 Web Application 部署方便,即时安装的优点。此类技术适合做 Windows 应用的开发商。
    浏览器插件则在浏览器技术和新型桌面之间进行了折衷,既使用新的技术来实现丰富的界面,又能和现有的 Web 技术进行部分的集成。

    哪种 RIA 技术适合你
    RIA 是未来应用系统开发的一个重要方向,很多软件开发企业,开发团队和开发人员都希望在未来找到一个适合自己的技术,从而让自己事半功倍,在提高开发效率,降低开发成本的同时,又能交付给客户体验丰富、功能完善的软件系统。
    虽然在上面我们介绍了各种技术及其优缺点,并对他们进行了一个归类,但是要回答“我们该选择那种”这个问题,还需要考虑下面的情况?
    首先是我们自身的情况:
    ◆ 目前你的技术能力主要在 Web 开发方面还是 Windows 开发方面?
    ◆ 目前你开发的应用程序功能类型是内容展现为主还是事务处理为主?
    ◆ 目前主要在使用那个厂商或组织的技术?.NET 或者 JAVA 或者其他 Web 技术?
    ◆ 目前是否在进行 RIA 或者类似 RIA 的开发?
    ◆ 目前在使用那种 RIA 开发技术?
    其次是考虑技术的选择标准:
    ◆ 学习成本,开发效率
    ◆ 对应用程序类型的适合性
    ◆ 运行环境部署成本
    ◆ 运行效率
    ◆ 完善的功能特性
    ◆ 技术授权成本和服务器部署成本,开源、免费或收费
    ◆ 官方和社区的技术支持
    ◆ 完善的开发工具
    ◆ 完善的 UI 组件
    ◆ 跨平台特性
    最后,我们根据自己的具体情况和选择技术的标准,可以为对这些技术进行一个定位和排序。
    以技术运行环境部署成本来比较(由低到高):
    Ajax > Flex/Laszlo > Silverlight > XUL > WPF > AIR > JavaFX
    以技术授权成本来看:
    开源的有:Ajax , Laszlo , XUL , JavaFX
    免费的有:Silverlight , WPF , AIR
    收费的有:Flex
    从技术支持来看:无疑 Silverlight 和 WPF 会获得最好的官方支持, Flex 的官方技术也在改善,其他技术主要依靠社区的支持。
    就开发工具来看:Silverlight 和 WPF 可以有最强大的工具使用, Flex 、 AIR 和 Laszlo 也有优秀的 IDE 可供使用, JavaFX 的开发工具尚未明朗, Ajax 要看具体的实现而定, XUL 的开发工具进展缓慢。
    就可使用 UI 组件的情况来看:WPF 和 Silverlight 需要自己扩展或者使用第三方的; Flex 、 AIR 和 Laszlo 都提供了丰富的 UI 组件, XUL 自己有一套基本够用的 UI 组件, JavaFX 依赖 JRE 自带的 UI 工具箱。
    对于跨平台特性和兼容性我们也可以得到一个排序:
    Flex/Laszlo > Ajax > XUL > JavaFX > AIR > Silverlight > WPF
    总而言之,要选择一种适合自己的 RIA 开发技术,需要从各个方面来权衡。不仅要明确自己的情况,考虑未来的需求,也要熟悉每种技术的差异和优缺点,这样才能找到一种正确的技术。


    看完了,都懂了?投简历吧,哈哈哈哈~

    职位:前端技术专家
    岗位职责:
    1 、依据产品需求完成高质量的 web 前端开发和维护;
    2 、对产品进行性能优化,确保较好的用户使用体验;
    3 、编写可复用的用户界面组件,协助后台程序员完成功能调试。
    岗位要求:
    1 、本科学历, 5 年开发经验,有 1 个以上的 web 前端 RIA 应用开发经验;
    2 、精通 javascript ,熟练使用 jquery , underscore , async 等 js 库,了解 ajax 技术,并对浏览器兼容有一定了解;
    3 、精通 Html5 、 css ,熟悉并使用过 less , saas , grunt 等工具,熟悉 BootStrap 前端框架;
    4 、熟悉或了解 http 协议优先考虑;
    5 、至少熟悉一门后端语言( Java , Nodejs , php 之一);
    6 、熟悉 xml ,了解 svg ,使用过 d3 开发过图表优先考虑(加分项);
    7 、会使用 github 进行代码管理,对一些浏览器的主流插件有一定了解;
    8 、乐于学习新技术,懂得学习方法与途径。

    薪酬:面议,双休,弹性工作制,跟着大咖们,逃离 BAT996,核心员工期权面议。
    base:杭州
    8 条回复    2017-04-14 07:42:35 +08:00
    josephshen
        1
    josephshen  
       2017-04-01 23:46:01 +08:00 via iPhone
    看完了,都懂,不能说十年前的技术吧,但也是快十年了,没任何兴趣,发的不知所云,还是和以前一样移动到水区吧,我帮你 @管理员
    thomaspaine
        2
    thomaspaine  
       2017-04-01 23:50:27 +08:00
    @josephshen 真的是 10 年前的东西, RIA 现在几乎都没有人说了,这种 HR 真的是在给公司招黑。
    这也是不放公司名字的原因?
    josephshen
        3
    josephshen  
       2017-04-01 23:59:12 +08:00 via iPhone
    哈哈哈哈,你看人家也就是吃这碗饭的,也不用真的砸了人家的锅,你看我都没真的 @管理员啊
    wh1012023498
        4
    wh1012023498  
       2017-04-02 01:17:39 +08:00
    RIA = = 这应该是 adobe 提出来的概念吧。。死的不能再死了。
    binux
        5
    binux  
       2017-04-02 01:22:10 +08:00 via Android
    看完评论我就放心了
    HoweGulf
        6
    HoweGulf  
       2017-04-02 01:35:00 +08:00 via iPhone
    去年用 JavaFX 做桌面端,写的我心累,不过总比 Swing 强( 233
    ETiV
        7
    ETiV  
       2017-04-02 02:12:45 +08:00 via iPhone
    SilverLight JavaFx 都是 Flash 的对手
    结果现在都死了……

    LZ 公司是打算先发明个时光机,然后回到过去重振 RIA 吗?

    是的话我要投简历,回到十年前,买房子先……
    allenli
        8
    allenli  
    OP
       2017-04-14 07:42:35 +08:00 via iPhone
    感谢大神们回复,都是很有价值的回复,对于 JD 也是用人部门给出来的,不论技术新老,能者居之,解决技术问题后能够改变些东西的人,就是公司团队务实的风格。
    杭州海创园等您的到来!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3347 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:18 · PVG 21:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.