富客户端技术的类型

如果您是软件架构师并且需要通过网络使应用程序可用,您很可能会问自己要使用哪种客户端技术。 在本文中,我将尝试列出以前使用的解决方案,然后详细介绍当今可用的解决方案。

历史

最初,应用程序仅部署在大型计算机上。 那里发生了一切。 要使用该软件,您需要使用不良的用户界面,该界面恰当地称为被动终端。 它输出文本:如果幸运的话,您就有颜色了! 那是一个分层的时代。

当微型计算机的成本下降时,下一阶段开始了。 每个企业都想拥有一些。 软件行业不断发展,并将应用程序从大型机转移到了单台计算机上。 这一举动尚未完成-一些公司仍然拥有大型机-但是,这一点的证明是,没有多少企业正在从群集服务器迁移到大型机。 数据仍然保留在服务器上:这是2层时代。

无论如何,随着软件开始在用户的计算机上蓬勃发展,问题也随之而来。 最初,这只是技术问题:由于硬盘空间有限,软件供应商开玩笑地希望能够在应用程序之间共享库。 这样就开始了臭名昭著的DLL地狱,该地狱有时今天仍然存在。 但是,真正的问题出现在机器数量成倍增长时:在1000或10000台计算机上部署应用程序本身就是一个项目。

这些缺点(以及随之而来的不断增长的成本)使某些人从侧面考虑。 如果软件安装在单个节点上,并且用户通过网络访问了该节点怎么办? 这可以解决DLL地狱和部署成本的问题。 一些狡猾的人甚至拥有可以立即做到这一点的技术:HTTP上HTML。 那是三层时代,我们仍然活在其中。 即使您始终可以添加更多层,它也不会改变基本范例。

HTML over HTTP模型的局限性

HTML和HTTP具有用作应用程序界面的根本缺陷。 HTML的真正动机是浏览文本文档的迷宫,而HTTP的唯一目标是通过网络传输HTML。

因此,现在以原本不希望的方式使用这些技术显示了其局限性:

  • 浏览器不兼容。 有时不仅在相同浏览器的两个版本之间,而且在两个不同操作系统上的相同版本之间也是如此
  • 复杂性和成本从部署阶段转移到开发阶段。 JEE开发人员必须了解以下堆栈:Java,Servlet,JSP,HTML,JavaScript和CSS,仅举几例
  • HTTP的以文档为中心的模型会强制重新加载整个页面,即使只有几个元素发生了变化。 网络速度成为关键因素
  • 用户抱怨用户交互受限。 是否曾经尝试过用纯HTML过滤组合框?

在Microsoft的帮助下,AJAX *解决了最后两个问题:AJAX使您无需完全重新加载即可更新页面的一部分,并使您能够访问建议进行专业用户交互的小部件。

不幸的是,AJAX加剧了前两个问题:浏览器对这项新技术的支持是什么? 创建XMLHTTPRequest取决于浏览器是否为Internet Explorer。 更糟糕的是,该技术现在又增加了一个组件。 您可能会争辩说,使用AJAX框架可以简化开发,但是问题仍然存在,无论如何,它都是一个组成部分。

对于可能将HTML 5视为灵丹妙药的那些人,我谨在此提醒您, HTML 4规范的发布日期为1999年,而HTML 5规范仍处于起草阶段:10年的行业往来可能会扼杀任何好主意它的诞生。 但这是另一回事了。 请回到正轨。

类型学

也就是说,当今充斥着大量旨在增强或替代我们熟悉的技术的Rich Client技术。 在这里,我将仅介绍保持单点部署范例(不包括集群)的技术,这意味着应用程序应该能够快速,轻松地进行更新(或更新)。

下图是对Java生态系统中的表示层技术进行分类的快照。 请注意,有些服务器也可以在其他生态系统中使用,因为从服务器的角度看,它们是技术中立的。

富客户端技术地图

忠告词:

  • 这种类型试图将完全不同的技术分派到完全独立的类别中。 因此,有些比其他人更人为。 此外,某些技术人员可能合法地属于多个类别
  • 如果上面没有显示您最喜欢的技术,请不要反对我。 我对一个非常动人和创新的景观不完全了解

发展历程

在右侧,我们看到了代表客户真正发展的技术。 它们都在客户端计算机上安装的虚拟机上运行。

从那里开始,主要区别是应用程序是通过浏览器显示还是直接显示。 前者仍然以某种方式与浏览器相关联,例如使用Flash插件甚至Firefox插件的Java Applets **Flex 。 它们每个都有一个独立的等效项。

后者代表了一种新的思维框架,其中应用程序与站点明显不同,并且可以与用于浏览站点的工具分开使用。 除了受JVM启发但具有更高级别注意事项的Air之外,还有两项技术值得注意:

  • JNLP文件格式,这是Web上可用于任何Java应用程序的外部部署描述符。 实现包括Java Web Start,Sun的解决方案以及不再维护的OpenSource替代品NetX 两者都具有读取JNLP的能力,以便下载,部署和运行所描述的应用程序。 他们都使用JVM
  • Eclipse Rich Client Platform ,这是在其上创建应用程序的基础。 此类应用程序可以虚拟地免费更新自身:仅需要声明性地使用此类功能。 Eclipse RCP还使用JVM运行

增强功能

在左侧,我们有一些技术想要增强当前的HTTP-HTML-DOM-ECMAScript-CSS堆栈。 该分支取决于浏览器对先前技术规范的实现,尤其是ECMAScript。 主要的细分标准是如何生成文件:

  • 第一个分支在客户端上操作DOM。 这是ECMAScript的领域,其中包括jQueryDojo等产品。
  • 第二个分支在运行时在服务器端创建HTML和JavaScript。 如今,那些框架显然是面向组件的,这就是JSF的领域
  • 第三分支还在编译时在服务器端创建HTML和JavaScript。 这是GWT的原始方法

选择标准

有了所有这些可用的技术,我认为现在是企业考虑使用哪种富客户端技术的合适时机,因为HTML范例已经结束,并且有很多(太多?)可供选择。

五年前,在进行Java开发时,您自动选择了Struts。 如今,这个问题需要提出。 但是首先,应使用什么标准来评估解决方案? 恕我直言,这些标准不应该全部以技术为导向。 提供者或许可证的类型同样重要,因为持久性是问题的核心:某些IS的使用寿命可以达到10年! 选择的解决方案将成为公司的标准,因此这只是投资问题,没有人喜欢浪费金钱,股东浪费更少。

*在文章的其余部分中,AJAX将是真正的AJAX和AJAJ(使用JSON而不是XML)的统称

**根据我个人的观点,尽管有技术缺陷,小程序仍比其时间提前了几年,因此,它没有流行。 Apache Pivot项目是一个基于Applet的框架

翻译自: https://blog.frankel.ch/typology-of-rich-client-technologies/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值