利用ASP实现分布式异构数据库共享服务的几点技术探讨.
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用ASP实现分布式异构数据 库共享服务的几点技术探讨
张 耀 南
中科院寒区旱区环境与工程研究所
主要内容
问题的提出 利用ASP实现对数据库的共享访问 利用COM组件共享分布式异构数据库 利用存储过程提高ASP对数据库的共享速 度 利用ASP实现对共享服务的跟踪
1.问题的提出
科学数据库事实上是一个数据库群体 由于数据来源、格式、分类等因素的不同,大 多为分布式的异构数据库群。 操作系统各异,对用户来讲,数据库的访问复 杂化。 基于Internet的B/S架构,利用ASP、COM/ DCOM组件技术,来实现分布式异构数据库群 的共享服务和数据共享用户的跟踪。
3.利用COM共享访问分布式异构数据库
在OLE DB 下层的ODBC并不是为分布式计算设计的, ODBC仅适用于关系数据库。 Web本身的无状态性、以及大量访问都使得这种靠保 持永久性连接是无法实现。 COM(Component Object Model)及DCOM (Distributed COM)实现了跨网络节点的对象访问 能力。 COM/DCOM也逐渐发展成了Windows系列操作系统 的重要组成部分。 COM是建立在OSF DCE标准的远程方法调用RPC (Remote Procedure Call)基础上的。
2.利用ASP实现对数据库的共享访问
建立SQL Server 类型的数据库对象 Dim Params, conn Set CreatSQLServerConnection = Nothing Set conn = Server.CreateObject(“ADODB.Connection”) Params = “Provider=SQLOLEDB.1” Params = Params & “;Data Source=” & Computer Params = Params & “;User ID=” & UserID Params = Params & “;Password=” & Password Params = Params & “.Initial Catalog=”&数据库名称 Conn open Paras Set CreateSQLServerRecordset= Server.CreateObject("ADODB.Recordset") CreateSQLServerRecordset.Open source, conn, 2, 2 End Function
COM
Remote Machine Remote Server Process
Remote Object Proxy
RPC
Stub
Remote Object
COM
Remote Server
3.利用COM共享访问分布式异构数据库
有了上述对WEB管理服务器的定义和设置,可以利用一组COM 组件对象来完成通过ASP脚本对分布式异构数据库的访问。
2.利用ASP实现对数据库的共享访问
但靠这三个对象还是无法存取数据库的,还必须具有数 据库存取的驱动程序:OLE DB和ODBC驱动程序
ADO ADO层
OLE DB OLE DB层 Jet SQL Oracle ODBC
Jet
SQL
Oracle
ODBC层
数据存储层 Access SQL Oracle Access SQL Oracle
资源组件
文本及二进制节点组 件 文件二进制数组件 网络共享目录组件
数据库节点
文件收集组件
目录收集组件
4.用存储过程提高ASP对数据库的共享速度
对一些处理过程,本身的流程较复杂,使用表格中的数据较多, 而且要反复的使用表格中的数据,但返回的结果却很少,就特别 适合于使用存储过程。 存储过程被数据库编译产生一个执行计划,执行速度比对应的 SQL 语句快。存储过程在数据库服务器端执行且使用的数据不通 过网络的传输过程,从而提高了访问速度。 因此可以把某些表的访问封装在存储过程中,然后指定这些表只 能被存储过程访问。这样,既可以提高数据的速度和安全性,也 可以防止一些潜在的危险的SQL操作。 如从某结点 n 开始找到最上层的父亲结点,这种经常用到的过程 可以由存储过程来担当,在网页中重复使用达到共享。
小结
ASP作为一种微软(Microsoft公司)基于 WEB的编程脚本,在INTERNET环境下有着 广泛的应用,特别与面向对象的COM组件结 合,非常有利于分布式异构数据库在WEB环 境中的访问,尽管WEB分布式数据库访问的 脚本语言颇多,但ASP仍不失为一种有效的选 择。在采用数据库存储过程技术、利用ASP脚 本很好地完成了分布式异构数据库的共享目的 和数据库共享访问用户的跟踪。
5.用ASP实现共享服务的跟踪
在ASP中通常使用application对象制作在线人员的访问情况。 首先在global.asa中设置application(“user_online”) (以 下简称auo),格式为: 用户姓名0~用户名0~上线时间0~最后刷新时间0~登录IP地 址 0, 用户姓名1~用户名1~上线时间1~最后刷新时间1~登录IP地 址1 ......
>
2.利用ASP实现对数据库的共享访问
Access类型的数据库对象 Dim conn,Provider,DBPath Set conn = Server.CreateObject("ADODB.Connection") Provider = "Provider=Microsoft.Jet.OLEDB.4.0;" DBPath = "Data Source=" & Server.MapPath( "数据库文件名" ) conn.Open Provider & DBPath Set CreateAccessRecordset = Server.CreateObject("ADODB.Recordset") CreateAccessRecordset.Open " 数据表名", conn, 2, 2 End Function
2.利用ASP实现对数据库的共享访问
首先建立一个ADODB.Connection 接口的对象,接着在这一个对象上 绑定相应的数据源(可以用有名数据源和无名数据源),根据需要建 立或者不建立记录集,然后在该数据源上链接用执行或打开的方法来 对相应的表进行操作 。Asp访问数据库的一般方法:
< Set oConn=Server.CreateObject(“ADODB.Connection”) Set oRS=Server.CreateObject(“ADODB.RecordSet”) Set strConn="Provider=SQLOLEDB;User ID=sa;Initial Catalog=Pubs;Data Source=" &request.ServerVariables("SERVER_NAME") oConn.open strConn set ORS=oConn.execute(“select * from test”)
3.利用COM共享访问分布式异构数据库
Client Process
In-Process Object
Local Server Process
Local Object
Stub
Client Application
In-Process Server RPC
Local Object Proxy
COM Local Server
2.利用ASP实现对数据库的共享访问
在ASP中,用来存取数据库的对象统称ADO (Active Data Objects) 主要有
– Connection – Recordset – Command三种对象
其中Connection负责打开或连接数据库 Recordset负责存取数据表 Command负责对数据库执行行动查询(Action Query)命令和 执行SQL Server的存储过程(Stored Pro两帧(左右、上下均可以),其中一帧的高度 (或宽度,如果是左右两帧的话)为零。 ②在该隐藏帧中放置一能够自刷新的页面(通过setTimeout函 数来reload页面)。 ③在该页面的刷新过程中更新并检测用户相关信息:
5.用ASP实现共享服务的跟踪
· 如 果 该 用 户 的 用 户 名 不 在 (instr(auo,"~"& 用 户 名 &"~")<0)auo 中那么将该用户的信息整理后(设置用户姓名、 用户名、登陆IP为用户信息,设置登陆时间和最后刷新时间为当 前时间)添加到auo的最后(字符串与操作)。 · 如果该用户的用户名已经存在于 auo 中,那么更新该用户的最 后刷新时间为当前时间。 · 计算每个用户的登陆时间与最后刷新时间之间的时间差,如果 大于设定值(如: 7秒)则表明该用户已经下线,则可以从auo 中将该用户删除。 通过上述思路实现了在线访问数据库人员的数量统计、在线人员 的名称显示、在线人员的停留时间显示并按照停留时间排序、禁 止同一账号同时在不同的机器(IP地址)上登录、在线短信息的 发送(增加检索是否与该用户想匹配的信息的程序段即可)。
张 耀 南
中科院寒区旱区环境与工程研究所
主要内容
问题的提出 利用ASP实现对数据库的共享访问 利用COM组件共享分布式异构数据库 利用存储过程提高ASP对数据库的共享速 度 利用ASP实现对共享服务的跟踪
1.问题的提出
科学数据库事实上是一个数据库群体 由于数据来源、格式、分类等因素的不同,大 多为分布式的异构数据库群。 操作系统各异,对用户来讲,数据库的访问复 杂化。 基于Internet的B/S架构,利用ASP、COM/ DCOM组件技术,来实现分布式异构数据库群 的共享服务和数据共享用户的跟踪。
3.利用COM共享访问分布式异构数据库
在OLE DB 下层的ODBC并不是为分布式计算设计的, ODBC仅适用于关系数据库。 Web本身的无状态性、以及大量访问都使得这种靠保 持永久性连接是无法实现。 COM(Component Object Model)及DCOM (Distributed COM)实现了跨网络节点的对象访问 能力。 COM/DCOM也逐渐发展成了Windows系列操作系统 的重要组成部分。 COM是建立在OSF DCE标准的远程方法调用RPC (Remote Procedure Call)基础上的。
2.利用ASP实现对数据库的共享访问
建立SQL Server 类型的数据库对象 Dim Params, conn Set CreatSQLServerConnection = Nothing Set conn = Server.CreateObject(“ADODB.Connection”) Params = “Provider=SQLOLEDB.1” Params = Params & “;Data Source=” & Computer Params = Params & “;User ID=” & UserID Params = Params & “;Password=” & Password Params = Params & “.Initial Catalog=”&数据库名称 Conn open Paras Set CreateSQLServerRecordset= Server.CreateObject("ADODB.Recordset") CreateSQLServerRecordset.Open source, conn, 2, 2 End Function
COM
Remote Machine Remote Server Process
Remote Object Proxy
RPC
Stub
Remote Object
COM
Remote Server
3.利用COM共享访问分布式异构数据库
有了上述对WEB管理服务器的定义和设置,可以利用一组COM 组件对象来完成通过ASP脚本对分布式异构数据库的访问。
2.利用ASP实现对数据库的共享访问
但靠这三个对象还是无法存取数据库的,还必须具有数 据库存取的驱动程序:OLE DB和ODBC驱动程序
ADO ADO层
OLE DB OLE DB层 Jet SQL Oracle ODBC
Jet
SQL
Oracle
ODBC层
数据存储层 Access SQL Oracle Access SQL Oracle
资源组件
文本及二进制节点组 件 文件二进制数组件 网络共享目录组件
数据库节点
文件收集组件
目录收集组件
4.用存储过程提高ASP对数据库的共享速度
对一些处理过程,本身的流程较复杂,使用表格中的数据较多, 而且要反复的使用表格中的数据,但返回的结果却很少,就特别 适合于使用存储过程。 存储过程被数据库编译产生一个执行计划,执行速度比对应的 SQL 语句快。存储过程在数据库服务器端执行且使用的数据不通 过网络的传输过程,从而提高了访问速度。 因此可以把某些表的访问封装在存储过程中,然后指定这些表只 能被存储过程访问。这样,既可以提高数据的速度和安全性,也 可以防止一些潜在的危险的SQL操作。 如从某结点 n 开始找到最上层的父亲结点,这种经常用到的过程 可以由存储过程来担当,在网页中重复使用达到共享。
小结
ASP作为一种微软(Microsoft公司)基于 WEB的编程脚本,在INTERNET环境下有着 广泛的应用,特别与面向对象的COM组件结 合,非常有利于分布式异构数据库在WEB环 境中的访问,尽管WEB分布式数据库访问的 脚本语言颇多,但ASP仍不失为一种有效的选 择。在采用数据库存储过程技术、利用ASP脚 本很好地完成了分布式异构数据库的共享目的 和数据库共享访问用户的跟踪。
5.用ASP实现共享服务的跟踪
在ASP中通常使用application对象制作在线人员的访问情况。 首先在global.asa中设置application(“user_online”) (以 下简称auo),格式为: 用户姓名0~用户名0~上线时间0~最后刷新时间0~登录IP地 址 0, 用户姓名1~用户名1~上线时间1~最后刷新时间1~登录IP地 址1 ......
>
2.利用ASP实现对数据库的共享访问
Access类型的数据库对象 Dim conn,Provider,DBPath Set conn = Server.CreateObject("ADODB.Connection") Provider = "Provider=Microsoft.Jet.OLEDB.4.0;" DBPath = "Data Source=" & Server.MapPath( "数据库文件名" ) conn.Open Provider & DBPath Set CreateAccessRecordset = Server.CreateObject("ADODB.Recordset") CreateAccessRecordset.Open " 数据表名", conn, 2, 2 End Function
2.利用ASP实现对数据库的共享访问
首先建立一个ADODB.Connection 接口的对象,接着在这一个对象上 绑定相应的数据源(可以用有名数据源和无名数据源),根据需要建 立或者不建立记录集,然后在该数据源上链接用执行或打开的方法来 对相应的表进行操作 。Asp访问数据库的一般方法:
< Set oConn=Server.CreateObject(“ADODB.Connection”) Set oRS=Server.CreateObject(“ADODB.RecordSet”) Set strConn="Provider=SQLOLEDB;User ID=sa;Initial Catalog=Pubs;Data Source=" &request.ServerVariables("SERVER_NAME") oConn.open strConn set ORS=oConn.execute(“select * from test”)
3.利用COM共享访问分布式异构数据库
Client Process
In-Process Object
Local Server Process
Local Object
Stub
Client Application
In-Process Server RPC
Local Object Proxy
COM Local Server
2.利用ASP实现对数据库的共享访问
在ASP中,用来存取数据库的对象统称ADO (Active Data Objects) 主要有
– Connection – Recordset – Command三种对象
其中Connection负责打开或连接数据库 Recordset负责存取数据表 Command负责对数据库执行行动查询(Action Query)命令和 执行SQL Server的存储过程(Stored Pro两帧(左右、上下均可以),其中一帧的高度 (或宽度,如果是左右两帧的话)为零。 ②在该隐藏帧中放置一能够自刷新的页面(通过setTimeout函 数来reload页面)。 ③在该页面的刷新过程中更新并检测用户相关信息:
5.用ASP实现共享服务的跟踪
· 如 果 该 用 户 的 用 户 名 不 在 (instr(auo,"~"& 用 户 名 &"~")<0)auo 中那么将该用户的信息整理后(设置用户姓名、 用户名、登陆IP为用户信息,设置登陆时间和最后刷新时间为当 前时间)添加到auo的最后(字符串与操作)。 · 如果该用户的用户名已经存在于 auo 中,那么更新该用户的最 后刷新时间为当前时间。 · 计算每个用户的登陆时间与最后刷新时间之间的时间差,如果 大于设定值(如: 7秒)则表明该用户已经下线,则可以从auo 中将该用户删除。 通过上述思路实现了在线访问数据库人员的数量统计、在线人员 的名称显示、在线人员的停留时间显示并按照停留时间排序、禁 止同一账号同时在不同的机器(IP地址)上登录、在线短信息的 发送(增加检索是否与该用户想匹配的信息的程序段即可)。