一起学习
1.1 中间件的定义
毕业设计是做一个基于两层C/S中的中间件, 具体来说,就是要提高用户访问WEB数据库的效率,中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
1. 2 开发中间件的必要性
网上学院所采用的C/S两层结构,Web服务器和CGI程序实际起到了HTML和SQL转换的网关的作用。CGI的典型操作过程是:分析CGI数据;打开与DBMS的连接;发送SQL请求并得到结果;将结果转化为HTML;关闭DBMS的连接;将HTML结果返回给Web服务器,虽然在很大程度上便利了教学,但是我们可以看到它也存在很大的缺点。
l 编码的复杂性
网上学院(传统的Client / Server应用)的开发很大部分是用VB和ASP以及后台的数据库来做到的,但是我们可以看到ASP有一个天生的缺点,就是ASP代码和HTML代码是混在一起的,ASP程序员既需要考虑与数据库打交道,需要关心如何与HTML配合,有时还需要用ASP直接生成HTML代码。其结果是,当程序逻辑足够复杂时,.asp源文件非常长;而且,无论客户提出用户界面的改变,还是商业逻辑的改变,都需要对.asp文件进行改动,我们在做网上学院的模块化的时候就遇到这个问题。
l WEB访问速度的瓶颈
客户端与后端数据库服务器通信必须通过Web服务器,且Web服务器要进行数据与HTML文档的互相转换,当多个用户同时发出请求时,必然在Web服务器形成信息和发布瓶颈。动态Web站点往往用数据库存储的信息生成Web页面,每一个页面请求导致一次数据库访问。连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务,因而往往成为最为耗时的操作。当然,实际的连接时间开销千变万化,但1到2秒延迟并非不常见。如果某个基于数据库的Web应用只需建立一次初始连接,不同页面请求能够共享同一连接,就能获得显著的性能改善。
l CGI应用程序每次运行都需打开和关闭数据库连接,效率低,操作费时.
l CGI应用程序接受每次请求又生成一个进程,导致性能低下.
CGI应用程序不能由多个客户机请求共享,即使新请求到来时CGI程序正在运行,也会启动另一个CGI应用程序,随着并行请求的数量增加,服务器上将生成越来越多的进程。为每个请求都生成进程既费时又需要大量内存,影响了资源的使用效率,导致性能降低并增加等待时间
l 安全性差,缺少用户访问控制,对数据库难以设置安全访问权限
l HTTP协议是无状态且没有常连接的协议,DBMS事务的提交与否无法得到验证,不能构造Web上的OLTP应用。
1.3 解决办法
多层结构的应用正是在对C/S 结构的总结基础上产生的,并且也已经扩展到了B/S应用开发领域。 即将应用划分为三层(可以有更多层,但三层最常见): 用户界面层, 中间件层,数据库层。 用户界面层负责处理用户的输入和向用户的输出,但并不负责解释其含义(出于效率的考虑,它可能在向上传输用户输入前进行合法性验证),这一层通常用前端工具(VB,VC,ASP等)开发;中间件层是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成SQL语句检索或更新数据库,并把结果返回给客户端,这一层通常以动态链接库的形式存在并注册到服务器的注册簿(Registry)中,它与客户端通讯的接口符合某一特定的组件标准(如COM,CORBA),可以用任何支持这种标准的工具开发;数据库层负责实际的数据存储和检索。有了这样的结构,上面的问题迎刃而解。
1. 1 数据库中间件构造图
2. 解决办法的几种途径。
2.1 基于服务器扩展的API
为了克服CGI的局限性,出现的另一种中间件解决方案是基于服务器扩展API的结构。与CGI相比,API应用程序与Web服务器结合得更加紧密,占用的系统资源也少得多,而运行效率却大大提高,同时还提供更好的保护和安全性。
服务器API一般作为一个DLL提供,是驻留在WWW服务器中的程序代码,其扩展WWW服务器的功能与CGI相同。WWW开发人员不仅可以API解决CGI可以解决的一切问题,而且能够进一步解决基于不同WWW应用程序的特殊请求。各种API与其相应的WWW服务器紧密结合,其初始开发目标服务器的运行性能进一步发掘、提高。用API开发的程序比用CGI开发的程序在性能上提高了很多,但开发API程序比开发CGI程序要复杂得多。API应用程序需要一些编程方面的专门知识,如多线程、进程同步、直接协议编程以及错误处理等。目前主要的WWW API有Microsoft公司的ISAPI、Netscape公司的NSAPI和O'Reily公司的WSAPI等。使用ISPAI开发的程序性能要优于用CGI开发的程序,这主要是因为ISAPI应用程序是一些与WWW服务器软件处于同一地址空间的DLL,因此所有的HTTP服务器进程能够直接利用各种资源这显然比调用不在同一地址空间的CGI程序语句要占用更少的系统时间。而NSAPI同ISAPI一样,给WWW开发人员定制了Netscape WWW服务器基本服务的功能。开发人员利用NSAPI可以开发与WWW服务器的接口,以及与数据库服务器等外部资源的接口。
虽然基于服务器扩展API的结构可以方便、灵活地实现各种功能,连接所有支持32位ODBC的数据库系统,但这种结构的缺陷也是明显的:
l 各种API之间兼容性很差,缺乏统一的标准来管理这些接口;
l 开发API应用程序也要比开发CGI应用复杂得多;
l 这些API只能工作在专用Web服务器和操作系统上。
2.2 基于JDBC的Web数据库技术
Java的推出,使WWW页面有了活力和动感。Internet用户可以从WWW服务器上下载Java小程序到本地浏览器运行。这些下载的小程序就像本地程序一样,可独立地访问本地和其他服务器资源。而最初的Java语言并没有数据库访问的功能,随着应用的深入,要求Java提供数据库访问功能的呼声越来越高。为了防止出现对Java在数据库访问方面各不相同的扩展,JavaSoft公司指定了JDBC,作为Java语言的数据库访问API。
采用JDBC的优势在于:
l Java是一种面向对象、多线程与平台无关的编程语言,具有极强的可移植性、安全性和强健性。
l JDBC是一种规范,能为开发者提供标准的数据库访问类和接口,能够方便地向任何关系数据库发送SQL语句。
l JDBC是一个支持基本SQL功能的低层应用程序接口,但实际上也支持高层的数据库访问工具及API。
JDBC的主要任务是定义一个自然的Java接口来与X/Open CLI中定义的抽象层和概念连接。JDBC的两种主要接口分别面向应用程序的开发人员的JDBC API和面向驱动程序低层的JDBC Driver API。JDBC完成的工作是:建立与数据库的连接;发送SQL语句;返回数据结果给Web浏览器。
采用JDBC的缺点在于:
l 只能进行简单的数据库查询等操作,还不能进行OLTP。
l 安全性、缓冲机制和连接管理仍不完善。
l SUN承诺的完全跨[平台跨数据库系统的功能和标准远未实现。
2.3 准备采用的技术及原因。
采用JDBC很容易用SQL语句访问异构数据库,如通过JDBC API,只需编写一个JDBC API,就可以把SQL查询语句送往Sybase,Oracle或 Informix数据库,同时采用Java语言编写应用程序,具有平台无关性,不要为不同的平台编写不同的应用程序。
Java程序不经改变即可部署到任何运行Java虚拟机的计算机结构和操作系统。JDBC(Java Database Connection)是SUN提出的Java完全访问数据库方案,它和ODBC具有相似的概念,向应用程序开发者提供了独立与数据库的统一的API,支持Java程序与数据库系统之间的无缝连接,但它是完全用Java编写的,因此具有平台无关性。采用Java和JDBC技术使数据库前台可适应多种操作系统、运行于多种硬件平台,并可通过不同的驱动程序及新的Java API对象和方法对多种类型数据库系统进行查询,增加了系统的灵活性和适应能力。
Java是一种简单、面向对象、易传送、稳固安全、多线程执行控制及3D空间设计的语言,它为Internet注入了交互性。Java支持数据库的访问,是因为SUN公司提供了一种标准的SQL访问数据库的Java语言应用程序编程接口(JDBC)。构成Java语言的基础是一系列类库,而JDBC正是定义了Java与数据库之间的接口类库(Java.sql包),它是Java语言中执行SQL语句的API,它由一系列类和接口所组成,这些类和接口均是由Java语言写成的,通过它一个程序开发者可以在Java语言中建立与数据库的链接,执行SQL语句和处理SQL语句返回的结果
下载本文示例代码
关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件关于中间件
阅读(215) | 评论(0) | 转发(0) |