如果您是软件架构师并且需要通过网络使应用程序可用,您很可能会问自己要使用哪种客户端技术。 在本文中,我将尝试列出以前使用的解决方案,然后详细介绍当今可用的解决方案。
历史
最初,应用程序仅部署在大型计算机上。 那里发生了一切。 要使用该软件,您需要使用不良的用户界面,该界面恰当地称为被动终端。 它输出文本:如果幸运的话,您就有颜色了! 那是一个分层的时代。
当微型计算机的成本下降时,下一阶段开始了。 每个企业都想拥有一些。 软件行业不断发展,并将应用程序从大型机转移到了单台计算机上。 这一举动尚未完成-一些公司仍然拥有大型机-但是,这一点的证明是,没有多少企业正在从群集服务器迁移到大型机。 数据仍然保留在服务器上:这是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框架可以简化开发,但是问题仍然存在,无论如何,它都是一个组成部分。
类型学
也就是说,当今充斥着大量旨在增强或替代我们熟悉的技术的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运行
选择标准
有了所有这些可用的技术,我认为现在是企业考虑使用哪种富客户端技术的合适时机,因为HTML范例已经结束,并且有很多(太多?)可供选择。
五年前,在进行Java开发时,您自动选择了Struts。 如今,这个问题需要提出。 但是首先,应使用什么标准来评估解决方案? 恕我直言,这些标准不应该全部以技术为导向。 提供者或许可证的类型同样重要,因为持久性是问题的核心:某些IS的使用寿命可以达到10年! 选择的解决方案将成为公司的标准,因此这只是投资问题,没有人喜欢浪费金钱,股东浪费更少。
*在文章的其余部分中,AJAX将是真正的AJAX和AJAJ(使用JSON而不是XML)的统称
**根据我个人的观点,尽管有技术缺陷,小程序仍比其时间提前了几年,因此,它没有流行。 Apache Pivot项目是一个基于Applet的框架
翻译自: https://blog.frankel.ch/typology-of-rich-client-technologies/