传统的基于C/S的Windows应用程序总是让客户面临着一些感觉很是不爽的问题,如:部署问题、升级困难、维护困难、安全问题,但是完全的WEB开发由于HTTP协议的无状态特性——浏览器和服务器总是在不停地执行Request和Response来营造一种有状态、持续会话的假象,致使人们又开始怀恋具有更强运算能力、本地存储能力和更稳定的通讯能力的客户端程序了。
不得不说的是,宽带网络的出现在某种意义促成了Rich Client的诞生。通过快捷的发布,特定的通讯协议标准,Rich Client正以不可阻挡的气势向人们重现着C/S模式下客户端程序的优势。
Rich Client的发布
C/S架构下,客户端程序发布与维护一直比较困难和繁琐。在版本更新以后,需要对客户的客户端程序进行逐个下载安装及配置更新,这是一个体力活,而这也一直是使用户大量选择WEB程序的因素之一。
在Rich Client时代,由于宽带网络的便利,在客户端尽尽需要从服务器端下载已经更新好的程序运行,而不必理会繁琐的下载、安装和配置的过程。
这里不得不提Java的是WebStart技术。
WebStart是让用户只需在网页上点击一个超级链接就能运行一个Java桌面应用的技术。对于一个拥有WebStart能力的Java应用来说,用户使用它就和使用WEB应用一样的简单,但它所具有的界面能力和本地处理能力却是WEB应用无法望其项背的。
具体的应用的技术知识可以从http://java.sun.com中寻找相关文档,这里不一一赘述。
Rich Client的通信机制
除了快捷方便的发布外,Rich Client还需要与服务器端建立一种快速、可靠、强大、易用的通信交互机制。但我们开发WEB应用时,表现层和业务服务层常常只是同一个进程中的不同对象,它们之间的交互不过是Java的方法调用而已,当表现层逻辑被分发到世界各地的计算机上,客户端和服务器之间的交互就成了一个大问题——从前的C/S被淘汰,很大程度上归咎于socket通信的复杂性。
现在,形形色色的RPC(远程过程调用,Remote Procedure Call)技术以独特的优势扮演起了信使的角色。以下列举几种Rich Client可以采用的通信机制。
CORBA和RMI
CORBA(通用对象请求代理体系结构,Common Object Request Broker Architecture)曾经红极一时,它能够兼容各种操作系统平台的语言,强大的的可扩展性所带来的负面影响就是实现的复杂和繁琐。如果服务器端和客户端都采用Java开发,那么CORBA所需要的语言无关的IDL就完全变成了画蛇添足。当然,对于需要集成大量企业内遗留的系统的EAI(企业应用集成)项目中,它一直是首选的技术。