传统的<nobr oncontextmenu="return false;" id="key4" onmousemove="kwM(4);" onmouseover="kwE(event,4, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">客户</nobr>/服务器模式是一种双层的结构,通常是一台个人计算机做客户机使用(运行客户端<nobr oncontextmenu="return false;" id="key2" onmousemove="kwM(2);" onmouseover="kwE(event,2, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">程序</nobr>),另外一台服务器用于存放后台的数据库系统,应用程序可客户端直接相连,中间没有其他的逻辑。
程序的业务逻辑则一般存在于前台的<nobr oncontextmenu="return false;" id="key3" onmousemove="kwM(3);" onmouseover="kwE(event,3, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">应用</nobr>程序中,即程序员根据客户的业务要求定制客户端程序,这种定制的程序没有通用性。或者业务逻辑也存在于后台数据库中,以触发器(trigger)的方式实现。这种方式有一个很大的缺点,就是一旦客户的业务逻辑有所改变的话,将引起应用程序的修改以及后台触发器的修改,将所有程序模块都重新修改、编译、连接的工作量是相当大的。另外由于这种结构将用户界面和业务逻辑以及数据源绑定在一起,会消耗客户机的大量资源,对客户机来说是一个很大的负担。
为了克服由于传统客户/服务器模型的这些缺陷给系统应用带来的影响,一种新的结构出现了,这就是三层(N层)客户/服务器模型。三层客户/服务器结构构建了一种分割式的应用程序。系统对应用程序进行分割后,划分成不同的逻辑组件,主要分为三层:
用户服务层:提供<nobr oncontextmenu="return false;" id="key0" onmousemove="kwM(0);" onmouseover="kwE(event,0, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">信息</nobr>浏览,服务定位。主要是实现用户界面,并保证用户界面的友好性、统一性。
业务处理层:实现客户的全部业务逻辑。
数据服务层:实现数据定义、存储、备份、检索等功能,主要有数据库系统实现。
这三个层次共同组成应用系统。使用这种模型,可以将系统需求划分成可以明确定义的服务,例如事务服务、名字服务等。将这些服务以组件的形式实现,一个组件可以实现系统中的一种或者多种服务,是这些服务的物理封装。根据系统的功能、性能等各方面的需求,系统管理员可以在网络上灵活的部署这些组件。并且根据业务的改动可以灵活的对这些服务组件进行修改,而不影响其它的组件,从而降低维护的费用。
另外,这些组件应该做成通用的,基于某一标准接口的,所以它们可以被重用,其他应用程序可以使用它们提供的应用程序接口调用组件,完成所需的操作。
这就是基于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的数据库中间件。下面是它的工作原理图:
这是目前得到广泛应用的一种标准结构。在这种结构中,用户使用标准的浏览器(如<nobr oncontextmenu="return false;" id="key1" onmousemove="kwM(1);" onmouseover="kwE(event,1, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">微软</nobr>公司的IE)通过Internet和http协议访问服务方提供的Web服务器,Web服务器分析用户浏览器提出的请求,如果是页面请求,则直接用http协议向用户返回要浏览的页面。如果有数据库查询操作的请求(当然也包括修改、添加记录等),则将这个需求传递给Web服务器和数据库之间的中间件,这个中间件当然不是odbc了,由中间件再向数据库系统提出操作请求,得到结果后再返回给Web服务器,Web服务器把数据库操作的结果形成html页面,再返回给浏览器。
在这种结构下,有许多中间件方案可以选择:
1、 CGI(公共网关接口)
公共网关接口是一种Web站点上可以用来访问Web站点的用户交互的各种程序的标准,这里讲的交互主要是允许用户在浏览器上访问数据库,完成各种数数据库的操作。
支持CGI的平台非常广泛,而且开发者在开发CGI程序时,也可以采用任何一种语言,如Perl,C,C++,vb,Delphi等。
CGI有个最大的缺点就是执行效率低,因为Web服务器都支持并发访问,对每个数据查询请求都要启动一个CGI的进程,这样极大的浪费服务器资源。
2、ASP(Active Server Pages)
ASP是一种开放的应用程序环境。它支持将Html脚本和可重用的Active Server组件结合在一起构建交互式网页。
所采用的技术主要是微软的组件技术(COM),通过组件ActiveDataObject(ADO)建立和数据库的连接。另外,ASP可以直接在Html文件中包含可执行的脚本,这样页面文件和脚本的开发就变成了一个过程。而在使用CGI的时候,程序和页面文件是要在不同的开发环境下进行开发的,这就导致了程序编制和修改的困难性。
3、JSP(Java Server Page)
近年来Java的流行想必大家都已经熟知了。Java是Sun公司开发的一种面向对象的程序设计语言,它和传统的程序设计语言不同,支持多线程控制,而且跨平台。Java为Internet应用带来了一场变革。
Sun公司提供了一种标准的访问数据库的Java应用程序接口:JDBC,JDBC定义了Java与数据库之间的接口类库,是Java语言中执行SQL语句的API。程序设计人员通过它可以方便的建立与数据库的连接,操纵数据库。
JSP综合了中间件和Java的优点:前者的优点在于可以使程序访问异构的数据库,而不必对应用程序作出改动,后者的优点在于具有平台无关行,不需要为不同平台编写不同的应用程序。也就是同样的程序可以在Windows环境下运行,也可以在Unix或者Linux下运行。
JSP的工作方式为:客户端浏览器首先访问Web服务器,从Web服务器上下载Java小程序Applet的字节码文件,以及相关类和JDBC接口的字节码文件。然后和Web服务器脱离,Applet根据数据库服务器的地址、端口号、帐号和数据库服务器连接,进行交互操作。由于JSP技术有可操作性、可维护性、安全性、高效性等一系列优良特性,因此和其他中间件技术相比,有很大的优势。
目前,JSP技术已经越来越广泛的应用到各行各业当中。
分享到:
相关推荐
我们完整实现了该算法并将其应用在自研的高可靠消息中间件CMQ中,同时沉淀出对外通用的Raft算法库。本文主要介绍Raft算法的原理、工程化时遇到的问题与解决方案、以及改进性能的措施。分布式系统是指一组独立的...
提出了AmI c-T困扰问题,并且通过E-A-E视觉感知系统模型及其中间件模型解决该问题;比较分析了该模型的优点,并根据该模型改造了AmI-F0自动人脸朝向跟踪系统,实验结果表明E-A-E模型能优化系统结构,提高系统效率,...
针对传统WebGIS设计方法的局限性,利用Java平台无关性的优点,为拓展GIS在电子政务中的应用,提出了基于J2EE平台的Browser/Server模式的分布式解决方案,并以一个城市电子地图为例,着重探讨了J2EE平台上采用中间件...
1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的...
1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的...
1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的...
1.1.3 软件分层的优点 1.1.4 软件分层的缺点 1.1.5 Java应用的持久化层 1.2 软件的模型 1.2.1 概念模型 1.2.2 关系数据模型 1.2.3 域模型 1.2.4 域对象 1.2.5 域对象之间的关系 1.2.6 域对象的...
计算机基础知识 一、 计算机的发展、类型及其应用领域。 1、 计算机(computer)就是一种能自动、高速进行大量算术运算与逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断与自动...
2007年11月5日,谷歌公司推出了自己的开源手机平台,正式命名为Android,该平台由操作系统、中间件、用户界面和应用软件组成。谷歌公司对外宣称这是首个为移动终端打造的真正开放和完整的移动平台。. 作为基于...
空间数据库系统定义:空间数据库系统是由空间数据库及其管理软件、应用软件组成的系统。 10.空间数据库系统的组成:空间数据库 空间数据库管理系统 数据库管理员 用户和应用程序。 11.空间数据管理技术的发展阶段:...
需求规格说明书是需求分析阶段需要交付的基本文档,将成为开发者进行软件设计和用户进行软件验证的基本依据,涉及引言、术语定义、用户需求、系统体系结构、系统需求等有关软件需求及其规格的诸多描述与定义。...
三、中间件服务器... 4 四、客户端... 4 第二章 系统使用... 4 一、主界面... 4 二、年度生产计划... 5 三、生产动态信息... 5 四、客货运管理... 6 五、安全管理... 7 六、设备管理... 11 七、车站技术管理... 13 ...