📄 中间件及其在三层客户机服务器模型中的应用.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>计算机应用990713</title>
</head>
<body bgcolor="#FFFFFF" link="#000000">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><a href="../../../../"><img src="../../../image/logo.gif" width="174" height="26"
alt="logo.gif (2519 bytes)" border="0"></a></td>
<td width="335"><p align="center"><a href="../../index.htm"><strong><font
face="华康简魏碑" size="4">计算机应用</font><font color="#FFFFFF"
face="华康简魏碑" size="4"><br>
</font></strong></a><font face="Times New Roman" size="3">Computer Applications</font><br>
<font color="#000000" size="2">1999年 第19卷 第7期 Vol.19 No.7 1999</font></td>
<td align="right"><a href="../../../index.htm"><img src="../../../image/qklogo.gif"
width="96" height="26" alt="qklogo.gif (1030 bytes)" border="0"></a></td>
</tr>
<tr>
<td colspan="3" width="682"><hr>
</td>
</tr>
</table>
<table border="0" width="90%">
<tr>
<td><p ALIGN="CENTER"><big><big><font face="宋体"><strong>中间件及其在三层客户机/服务器模型中的应用<sup>*</sup></strong></font></big></big></p>
<p ALIGN="CENTER"><font face="宋体">宋晓梁 刘东生 许满武</font></p>
<p ALIGN="left"><font face="宋体"> <strong>摘 要 </strong>本文介绍了中间件的五种类型及其各自的特点,并讨论了中间件在三层的客户机/服务器模型中应用的一个实例。<br>
<strong>关键词 </strong>中间件,客户机/服务器模型<br>
</font></p>
<p ALIGN="CENTER"><font face="Times New Roman"><big><strong>MIDDLEWARE AND ITS APPLICATION
</strong><br>
<strong>IN A THREE TIER C/S MODEL</strong><br>
</big><br>
Song Xiaoliang</font> <font face="Times New Roman">Liu Dongsheng</font> <font
face="Times New Roman">Xu Manwu<br>
Computer Science and Technology Department, <br>
National Key Laboratory for Computer Software, Nanjing University, Jiangsu*Nanjing 210093</font></p>
<p align="left"><font face="Times New Roman"><br>
</font> <strong><font face="Times New Roman">Abstract</font> </strong><font
face="Times New Roman">In this paper,we discuss the five kinds of the middleware and give
a sample of the <br>
middleware</font>′<font face="Times New Roman">s application in a three tier C/S model.<br>
</font> <strong><font face="Times New Roman">Keywords</font> </strong><font
face="Times New Roman">Middleware</font>,<font face="Times New Roman">Client/server
model<br>
</font><font face="宋体"><br>
随着以网络计算为中心的应用系统规模的扩大和软硬件结构的日趋复杂多样,客户端和服务器端的负担也日益繁重,并且传统软件的移植性、互操作性和重用性也都不能满足现在的性能需求,为此人们提出了一种介于客户端和服务器端的软件——中间件。<br>
中间件(Middleware)作为前端客户机和后端服务器之间的一个中间层,为应用程序处理提供了如下功能,它一般包含应用逻辑,负责接收客户端的应用请求,对请求做出响应处理后将请求交给后端服务器,并负责将服务器的处理结果返回给客户端。<br>
从概念上讲,很早就已经有了中间件的雏形,在主机环境下的TP
Monitor就是一种中间件。但是,只有客户机/服务器以及downsizing的概念提出之后,中间件的概念才被人们广泛地关注。在客户机/服务器环境下,一般将中间件放在位于客户机和服务器之间的中间层,负责应用逻辑的处理,从而使客户端变得精干。与此同时,中间件还可以放在客户机和服务器之间的多层应用服务器中。中间件已经成为了联结分布式计算环境中各个相对独立的系统的胶合剂。<br>
中间件具有如下特点:<br>
易于集成 中间件能无缝地连入应用开发环境中,应用程序可以很容易地定位和共享中间件提供的应用逻辑和数据。<br>
易于移植 中间件使与平台有关的细节对于应用程序来说是透明的,因此可以在不改变应用程序代码的情况下改换计算机底层硬件、操作系统或通信协议。<br>
易于演进 中间件实现的功能对应用程序来说是透明的,所以可以对局部进行改进而不会影响到系统的其它部分。<br>
高可靠性 中间件应该是可靠的,需要提供接管和恢复功能,保证事务及关键性业务不被丢失。<br>
易于使用 中间件能和同构或异构环境下的多种数据源通信,同时它能管理数据间的公共逻辑约束。它将用户从复杂的平台、网络、数据库选择中解放出来。</font></p>
<p ALIGN="left"><font face="宋体"><big><strong>1 中间件的分类</strong></big><br>
根据中间件所起的作用及采用的技术,我们大致可将其分为以下五种。<br>
<strong>1.1 基于数据库的中间件</strong><br>
基于数据库的中间件是所有中间件中最普遍、最成熟的一种。基于数据库的中间件允许应用程序同本地或异地的数据库进行通信。它提供了一系列应用程序接口API,通过中间层而不考虑操作系统及网络来访问数据库。并且在很多情况下,API被隐藏在开发工具之中而不被开发者了解。<br>
ODBC、JDBC都是基于数据库的中间件标准。通过ODBC访问数据库的方式是绝大多数应用程序使用数据库的方式,它通过使用驱动程序(driver)来提供数据库的独立性,驱动程序与具体的数据库有关,它是一个用以支持ODBC函数调用的模块(通常是一个DLL),应用程序通过调用驱动程序所支持的函数来操作数据库,若想使应用程序操作不同类型的数据库,就要动态地链接到不同的驱动程序上。ODBC具有良好的数据库独立性,它可以避免应用程序对不同类型数据库使用不同的API,通过ODBC可以使得数据库的更改变得非常容易,因为对应用程序来说这只需改换一下驱动程序。JDBC定义了一个Java开发的CLI。JDBC实际上就是一系列用于特定数据库的Java类库,它源于ODBC体系结构。<br>
ODBC的结构图如下: </font></td>
</tr>
</table>
<p align="center"><img src="image/36.gif" width="290" height="138"
alt="36.gif (7259 bytes)"></p>
<table border="0" width="90%">
<tr>
<td><p ALIGN="CENTER"><font face="宋体">图1 ODBC结构图</font></p>
<p ALIGN="left"><font face="宋体"> 现在,Microsoft又提出了OLE-DB。OLE-DB提供了不同数据源的统一的访问点。OLE-DB的目标是提供通过OLE
Automation来访问多种数据库,或在应用程序和数据库之间提供一个COM层,通过COM层的对象访问数据库。<br>
在基于数据库中间件领域中,目前还提出了应用分割技术,即将用户的一些应用逻辑放到中间层,为客户机“减肥”,这也为NC(Network
Computer)等的引入打下了基础,并增强了应用程序的处理性能、安全性和并发性。目前,很多数据库前端开发工具都支持应用分割技术。<br>
但是,在基于数据库的中间件模型中,数据库作为信息的中心存储单元,中间件负责数据间的同步及点到点通信。这种方式不适合于高性能应用处理,因为它需要大量的数据通信,同时,当网络发生故障时,系统将不能正常工作。<br>
<strong>1.2 基于RPC的中间件</strong><br>
RPC已经存在很长一段时间了,它沿用了用户熟悉的编程模式,从程序员的角度出发,RPC十分容易理解——程序代码调用远端过程并将结果返回。当使用RPC时,只需要编写很少的网络程序代码,大部分代码由IDL(Interface
Define Language)生成。<br>
RPC应用不仅可以调用在远方节点上的子程序,甚至可以在不同操作系统环境下运行。它使程序员不必考虑网络的细节,仍可采用自己熟悉的Call/Return语法。<br>
RPC一般采用Call/Return模式,多用于应用程序之间的通信,而且采用同步方式。RPC程序之间的同步通信一般采用Request-Wait-Reply方式,
因此,对小型简单的不需要采用异步通信方式的应用比较适合,但对大型复杂的应用不太适合,因为它需要程序员考虑网络或系统的故障、处理多个网络连接、可移植性、缓冲及流量控制和进程之间的同步等多种问题。<br>
<strong>1.3 基于TP Monitor 的中间件</strong><br>
TP Monitor是一种复杂的中间件产品,它为应用处理提供了一种通信机制,它允许开发者在TP
Monitor环境中定义事务服务。TP Monitor位于客户机和数据库服务器之间,采用三层或多层模型。客户通过Transaction
RPC(TRPC)机制在TP Monitor中调用事务,TP Monitor运行事务来连接数据库,并将处理结果返回给客户端。TP
Monitor提供一系列服务,如应用管理、管理控制和应用之间消息传递等。常见的属性包括全局事务协调、分布式两阶段提交、资源管理器支持、协调故障恢复、高可用性、安全性、网络负载平衡等。<br>
在TP Monitor中,事务有一个明确的起止点,如果事务失败,TP
Monitor可以回滚事务,不会使系统处于不完整、不一致状态。TP Monitor同时可以复用数据库请求。因为每个客户调用事务,而不是直接和数据库进行连接,因此TP
Monitor可以协调数据库请求,传统的Connection-Per-Client的限制(在客户机/服务器环境中)可以去掉,如100个客户可能只需要10个数据库连接。并且TP
Monitor还可以在同一个事务中读写异构数据库中的信息,并保持异构数据库的完整性。<br>
常见的TP产品有:BEA的Tuxedo、IBM的CICS、NCR的TopEnd、Microsoft的MTS等。<br>
<strong>1.4 基于ORB(Object Request Broker)的中间件</strong><br>
基于ORB的中间件主要是采用面向对象的技术,ORB可以看作是与编程语言无关的面向对象的RPC应用。它的成员函数可以采用类似Object-function()方式调用远端的对象。目前,ORB存在两个彼此竞争的标准:CORBA
ORB和DCOM ORB。<br>
当使用ORB时,IDL(Interface Define Language)用于定义对象之间的接口,它类似于RPC中的IDL定义过程的接口。ORB特别适用于对象接口变化不频繁,不会导致代码经常被重新编译及链接的情况。ORB的总体框架图如图2所示。<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -