传统的客户/服务器模式是一种双层的结构,通常是一台个人计算机做客户机使用(运行客户端程序),另外一台服务器用于存放后台的数据库系统,应用程序可客户端直接相连,中间没有其他的逻辑。 程序的业务逻辑则一般存在于前台的应用程序中,即程序员根据客户的业务要求定制客户端程序,这种定制的程序没有通用性。或者业务逻辑也存在于后台数据库中,以触发器(trigger)的方式实现。这种方式有一个很大的缺点,就是一旦客户的业务逻辑有所改变的话,将引起应用程序的修改以及后台触发器的修改,将所有程序模块都重新修改、编译、连接的工作量是相当大的。另外由于这种结构将用户界面和业务逻辑以及数据源绑定在一起,会消耗客户机的大量资源,对客户机来说是一个很大的负担。
为了克服由于传统客户/服务器模型的这些缺陷给系统应用带来的影响,一种新的结构出现了,这就是三层(n层)客户/服务器模型。三层客户/服务器结构构建了一种分割式的应用程序。系统对应用程序进行分割后,划分成不同的逻辑组件,主要分为三层:
用户服务层:提供信息浏览,服务定位。主要是实现用户界面,并保证用户界面的友好性、统一性。
业务处理层:实现客户的全部业务逻辑。
数据服务层:实现数据定义、存储、备份、检索等功能,主要有数据库系统实现。
这三个层次共同组成应用系统。使用这种模型,可以将系统需求划分成可以明确定义的服务,例如事务服务、名字服务等。将这些服务以组件的形式实现,一个组件可以实现系统中的一种或者多种服务,是这些服务的物理封装。根据系统的功能、性能等各方面的需求,系统管理员可以在网络上灵活的部署这些组件。并且根据业务的改动可以灵活的对这些服务组件进行修改,而不影响其它的组件,从而降低维护的费用。
另外,这些组件应该做成通用的,基于某一标准接口的,所以它们可以被重用,其他应用程序可以使用它们提供的应用程序接口调用组件,完成所需的操作。
这就是基于orb的中间件模型。这种模型完全克服了传统的客户/服务器模型的缺点,具有可重用性、灵活性、可管理性、易维护性等一系列优良的特性。目前对orb及其支撑环境--应用程序服务器的研究正是如火如荼,感兴趣的朋友想进一步了解,可以查阅相关文献和资料。
基于orb的中间件模型虽然在性能上非常优异,但是目前在国内的应用远远没有达到普及的程度,应用最广泛的是基于web数据库的中间件技术。下面进行一些探讨。
数据库中间件的工作原理示意图如下:
数据库中间件连接客户端程序(通常是应用程序)可数据库,为用户提供可靠便捷的数据库访问。举一个简单的例子:在一个局域网环境下,使用delphi编写客户端应用程序,后台数据库使用ms nt4 +sql server,在delphi中,通过odbc或者bde连接到后台数据库。在此odbc就是一种标准的数据库中间件,它是windows操作系统自带的服务。bde(borland database engine)不是中间件,因为程序员虽然可以通过bde和后台数据库相连,但是实际上bde还是要通过odbc的。后面提到的web环境下的jdbc和odbc类似,也是操作系统提供的标准数据库中间件。
这是一种传统的结构,这种结构有很多不足之处,例如有很"胖"的客户端,从而造成系统的可扩展性差等。我们要重点介绍的是基于web的数据库中间件。下面是它的工作原理图:
这是目前得到广泛应用的一种标准结构。在这种结构中,用户使用标准的浏览器(如微软公司的ie)通过inte.net和http协议访问服务方提供的web服务器,web服务器分析用户浏览器提出的请求,如果是页面请求,则直接用http协议向用户返回要浏览的页面。如果有数据库查询操作的请求(当然也包括修改、添加记录等),则将这个需求传递给web服务器和数据库之间的中间件,这个中间件当然不是odbc了,由中间件再向数据库系统提出操作请求,得到结果后再返回给web服务器,web服务器把数据库操作的结果形成html页面,再返回给浏览器。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器