|
|
网络商务应用软件系统新知——基于分布对象技术的Web应用集成解决方案本文重点: 文章交付 广告
目前在Internet上占优势的三层客户/服务器模型是通过通用网关接口CGI(Common Gateway
Interface)实现的。CGI与Web几乎同时出现,曾经是提供Web交互性的唯一方法,所有标准的Web服务器软件都支持CGI。CGI本身可以实现为一个执行程序,这种Web与应用系统的集成方法非常简单、直接,因为它不需要对Web服务器与浏览器作任何修改。在这种体系结构中,Web服务器通过CGI接口创建网关进程,并将用户请求传递给网关。应用网关处理CGI请求,并通过应用接口访问具体应用,然后将结果转换为HTML格式并回送给服务器。然而,CGI的基础HTTP是一个低速、脆弱和无状态的协议,所以在利用CGI进行应用集成时存在一些问题。 首先,Web服务器对每一个用户请求都必须创建一个单独的网关进程,并在接到通过进程管道发回的结果后终止该进程。可见,通过CGI执行程序连接应用系统的缺点是性能开销较大,其中包括进程创建与终止开销、进程间的数据拷贝开销以及进程间的切换开销等。如果一个HTML文件中包含了大量的数据库访问请求,那么这种CGI
Web网关的性能将十分低下,且服务器很快会达到饱和状态,难以支持更多的用户请求。另外,CGI也无法适应于广泛流行且迅速发展着的Java等新兴技术,无法利用这些技术所带来的巨大优越性。-因此有人说,当前的Web服务器还处在中世纪,而客户端已经进入了后现代时期了。某些Web服务器开发商试图以专有服务器API的形式扩展CGI,如Netscape的NSAPI和Microsoft的ISAPI、NeXT的Web
Objects框架以及Oracle的Web Server
API等。这种封闭的倾向是一条死胡同,它导致了到处充满非标准服务器的Web。 近几年来,伴随着分布对象技术的发展,人们做了很多努力,如Netscape的ONE(Open Network Environment)、Java Soft的Enterprise
JavaBean、Oracle的NCA(Network Computing Architecture)以及新一代的Java
ORB等,期望扭转Web服务器这种各自封闭的发展倾向。其主旨是通过CORBA环境使Web服务器开放化。这样做的理由非常充分,因为CORBA是一个开放的分布对象总线标准,它从一开始就是针对众多的客户/服务器系统制定的。这种思想及其所采用的技术统称为Object
Web。 一、Object Web的Java-CORBA框架 ----Java-CORBA框架的基本思想是用Java/IIOP的组合来替换现有的HTTP/CGI的组合。之所以这样做,是出于以下几点考虑:首先,Java与CORBA的结合使Java客户端能够访问由IDL定义的范围非常广泛的CORBA对象服务,而HTTP的客户端只是一些有限的操作集;其次,Java-CORBA框架总的服务方是规则的CORBA对象,它们与客户端的连接可以是永久的。而CGI则是短暂的,每一个同样的请求需由WWW服务器产生一个单独的进程去执行相同的CGI程序;这也导致了HTTP/CGI框架的又一个缺点--由于无状态而难以支持交互性强的应用。 ----Object Web通常采用三层客户/服务器应用模型(如图1所示)。一种最常见的框架为:第一层属于客户层(浏览器上运行的Java Applets),第二层由若干服务器和应用网关组成,服务器包括HTTP服务器和由ORB连接的应用服务对象。第三层属于传统的服务器。 图1Java-CORBA框架的体系结构 ----由CORBA和HTTP组成的中间层几乎可以由任何一种服务器平台来支持,包括Unix、NT、OS/2、NetWare、Mac
OS、OS/400、MVS和Tandem等。CORBA对象作为一个中间层应用服务器,将业务逻辑封装起来。与客户端Java构件的交互通过动态下载的ORB
Java类库与服务器端的ORB之间的IIOP连接来完成。同时,服务器端的CORBA对象还能与其他使用CORBA
ORB的客户或服务器交互。第二层一般提供一个服务器端的构件协调者TPMonitor(对象事务监视器),如IBM的BOSS(Business Object
Server
Solution)和BEA的Tuxedo。服务器端构件是一个至少在最小程度上实现了构件服务的CORBA服务对象。一般来讲,服务器端构件具有可重用性。比如,它们大多提供某种装配接口,使开发者可以用可视化的工具将其装配到其他的应用中。第三层是CORBA对象能访问的一切应用和服务,如过程性的TPMonitor、MOM、DBMS、ODBMS和LotusNotes等。CORBA业务对象在中间层替换了原有的CGI应用。 二、CorbaWeb 对现有Web进行开放性改造可以有多种多样的方法。最理想的莫过于使用户可以通过浏览器可视化地操作和管理分布在各处的CORBA对象。然而,并非所有的Web应用都要求浏览器端与应用服务器端有很强的交互性。有些应用只要求通过浏览器来浏览服务器端应用的结果,每一次应用的完成只需要一次交互,即提交参数和浏览结果。而对服务器端的要求则不同,往往希望将分布在不同环境中原有应用模块集成起来,产生一个新的应用服务。这里我们给出了Object
Web的一种框架—CorbaWeb,它灵活地利用了CGI和CORBA的长处,给用户提供了一种基于浏览器的CORBA对象导航、浏览和管理机制,而且通过引入一种面向对象的脚本语言CorbaScript,大大方便了CORBA应用的开发。 CorbaWeb的目的是提供一个Corba2.0和Web之间的通用网关,使用户能够用浏览器在Web上导航和使用CORBA对象,浏览器则对用户的活动进行管理并将请求传给服务器端。CorbaWeb环境接受用户的请求并引发对相应CORBA对象的调用。通过CorbaWeb,WWW客户能通过动态产生的CORBA对象URL引用进行对象导航。由IDL接口自动生成的HTML表单呈现给用户一个直观的对象视图。对象状态也由一种元视脚本机制产生的HTML页面来表示。 1.CorbaWeb的体系结构 CorbaWeb的体系结构框架(如图2所示)由以下几个部分组成: 任何浏览器作为一个界面友好的GUI用以导航、管理和操作CORBA对象; CGI用于Web服务器与CorbaWeb间的通信。一种变通的方案是使用由CGI扩展的Server
API,如Netscape的NSAPI和Microsoft的ISAPI或ASP; 一组元脚本,元脚本提供基本的网关功能(如对象的导航、引发、表示以及对CorbaWeb的扩展等); CorbaWeb表示池CorbaWeb对对象的表示是由元视脚本生成的。元视脚本存储在CorbaWeb的表示池中; CorbaScript解释器CorbaScript是一种解释性语言,可通过它编写IDL描述的CORBA对象的相应操作; 标准的CORBA环境CORBA对象由动态引用接口DII(Dynamic Invocation
Interface)引发,并且通过接口池IR(Interface
Repository)中的IDL接口信息进行运行时的匹配和检查; 任何应用对象CorbaWeb使Web访问可以应用对象的通用网关。这些对象仅需由IDL接口进行描述,并且可以用任何一种程序语言在任何一种平台上实现; 名字服务器,名字服务器与接口池的结合使用对CorbaWeb对象的导航、管理和动态绑定等功能提供了底层支持。 2.Web与CorbaWeb的交互过程 一个典型的Web与CorbaWeb的交互过程如下: 任何浏览器用户访问任何WWW服务器,获取相应的HTML页面,其中包含到CorbaWeb网关的URL链接; 当用户激活网关的链接时,网关脚本开始执行,调用CORBA名字服务对象视脚本的某个方法,该方法产生所有在名字服务器上注册的应用对象视脚本的URL链接; 用户可以浏览对所有对象的简要说明,并选择所需要的对象链接; 当用户激活某一对象的链接时,其相应视脚本的视方法开始执行,返回该对象的视图页面,包括对象的状态、方法以及方法所需要的参数。用户可以根据需要选择所需的方法,填写适当的参数,然后激活该对象相应的方法; CGI网关将请求传给CorbaWeb,CorbaWeb通过CORBA环境的DII机制动态构造对CORBA服务对象的请求,并通过接口池对请求和参数进行匹配和检查; 对于返回结果,由CorbaWeb调用相应对象视脚本的方法,产生相应的HTML页面返回浏览器。 图2CorbaWeb的体系结构 通过运用CORBA等分布对象技术对传统的Web进行改造,构成了一个面向对象的Web—Object
Web。从某种意义上看,这使Web完成了一种类似于自然界中"进化"的过程。这种进化不是"突变式"的,它几乎保留和利用了传统Web中的一切既得成果,同时又使Web的使用者充分享受到分布对象技术所带来的巨大益处。这种进化是多样化的、渐进的,它始终在不停地继续着。
如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐 jill.jiang@amteam.org | 021-51096826-102 | 在线联系 |
|
|
|