论文部分内容阅读
摘要:SYBASE公司的ASE数据库管理系统的客户端与服务器的模式确保了应用程序运行稳定性和高效性,但是这种方式使得应用系统的维护非常困难,数据服务器的安全性不高。文章分析了如何在确保这种模式的优点的同时如何解决系统维护困难,提高数据服务器的安全性,并提出一种有效的解决方法。
关键词:客户机/服务器;OPEN CLIENT;封装;安全性;系统维护
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)06-10000-00
Automatic encapsulateSybase Adaptive ServerEnterprise client
ZhangXinYi GaoYanLing
(Information Science and TechnologyInstitute of Jiujiang University, Jiujiang 332005,China)
abstract:SYBASE Corporation’s ASE database management system in particular its client andserver pattern has guaranteed the application procedure movement stability and effectiveness, but this way causes the maintenance of the application systemto be extremely difficult, the data server security is also not high. this article mainly analyze how to solve the system maintenance difficulty, enhances the data server’s security while guarantees this kind of pattern merit, and proposes one effective solution.
Key words:Client/server; OPEN CLIENT; encapsulate; security; maintain
1 Sybase Adaptive Server Enterprise介绍
Sybase Adaptive Server Enterprise是sybase公司的旗舰产品。在ASE系统中Sybase公司首先提出了客户机与服务器的理论,将ASE分为OPEN SERVER和OPEN CLIENT两个部分。Open server是一个服务器构造工具,帮助集成联机企业的各种数据资源及服务。Open client是一个客户端的应用程序包,提供调用级接口,用来建立有效的前端应用,向服务器Adaptive Server或Open Server程序发出请求,获得消息和服务。
2 ODBC与客户端模式的比较
在设计用客户端/服务器(C/S)模式的数据库应用程序时,windows平台下的应用程序于DBMS连接的方法一般有两种方式:一是通过微软提供的公共数据接口ODBC与DBMS进行连接,二是直接使用DBMS厂商提供的客户端与DBMS进行连接。前者需要DBMS厂商提供ODBC驱动程序,数据要经过多次编码与解码,运行速度较慢。而后者的整合性较好,数据传输速度快,但是必须安装对应的DBMS客户端程序。
3 客户端模式的弊端
目前的许多应用系统都是以C/S模式进行设计的。在系统统入运行以后,我们发现虽然采用OPEN CLIENT与ASE进行连接可以加快了程序运行的速度,提高操作效率,但是无形的增加了系统的维护工作。
通常的做法是,在客户端上安装sybase central,并且使用dsedit命令准确配置server属性,如图1所示。
图1 SYBASE ASE 客户端手工配置窗口
这种方式由于必须在使用程序的client上安装sybase central,这样就使得系统的维护工作变得繁重,而且用户使用也极不方便。一旦用户需要重新安装操作系统或不慎将sybase central改变,那么系统维护人员将不得不为系统用户重新安装与配置sybase central,这样将使得维护人员花费大量的时间在重复的工作上,用户也因为不能正常使用而影响工作的效率。最重要的一点:安装sybase central能够使得他人轻而易举的了解到我后台数据库的名称、IP地址以及端口号。这样就为服务器的安全埋下了隐患。
4 客户端模式实质分析
通过ODBC与DBMS进行连接实际上是调用了一些针对不同DBMS进行通信的动态链接库实现的,而ODBC的驱动配置都是通过注册表进行记录,由此可知应用程序利用OPEN CLIENT与ASE进行连接的实质也是读取一些配置文件和调用一些用于通信的动态库,同样要通过注册表来记录驱动程序相关信息。
分析注册表发现,SYBASE客户端连接的环境变量位于HKEY_LOCAL_MACHINE\software\sybase\setup主键下面,在其下面有两个键值名,分别是ProgramFolder和sybase,而ProgramFolder的键值是sybase,sybase的键值便是OPEN CLIENT的安装目录,应用程序便是通过这两个键值来获取OPEN CLIENT的安装位置并调用对应的配置文件和通信动态库,因此我们可以直接在应用程序中编写代码设置这两个键值实现客户端的自动封装。
在setup主键下面还有一个SharedDLLs主键,它里面的键值都是一些动态库名称,而这些动态库就是应用程序与ASE进行连接所必须的各种通信程序,在WINDOWS下面,应用系统查找动态链接库的路径一般是首先搜索当前目录,然后通过注册表搜索操作系统设置的驱动目录,例如c:\windows\system目录,因此我们在进行封装的时候直接将这些动态库放在应用程序当前目录即可。
在ASE 客户端的安装目录中,包含有配置文件的只有charsets目录,是包含了各种字符集信息;ini目录,包含了数据库服务器的地址和端口信息;locales目录,包含了各种系统的本地化语言信息,这三个目录中的配置文件信息便是自动封装ASE客户端所必须的相关配置文件。
5 解决方案
因为每个用户可能更加具体的情况将应用系统安装在不同的系统路径下面,因此我们的应用程序必须具备获取自身所在路径的功能。这一功能可以通过调用WINDOWS API函数GetModuleFileName实现,在PB中的做法是:
1)首先在declare中添加gloable external functions
Function ulong GetModuleFileName(ulong hModule,ref string lpFileName,ulong nSize) LIBRARY "kernel32.dll" ALIAS FOR "GetModuleFileNameA"
2)编写获取路径的代码
string str_AppPath//应用程序全路径,包括程序文件名
integer int_ret,len_filename
str_AppPath = Space (128)
int_ret = GetModuleFileName (Handle (GetApplication ()), str_Apppath, 128)
//len_filename是可执行文件名称长度,如a.exe的len_filename=4
str_apppath=left(str_appPath,len(str_appPath)-len_filename
获取到应用程序的路径后,通过注册表操作函数设置ASE客户端的环境变量:
//第一次使用时首先要配置ASE客户端
Integer li_Rtn
string ls_temp,ls_key
//---0. 判断是否已经存设置过sybase环境变量
ls_key="HKEY_LOCAL_MACHINE\Software"
li_Rtn=RegistryGet(ls_key,"sybase",RegString!,ls_temp)
IF li_Rtn=1 THEN
ls_key="HKEY_LOCAL_MACHINE\Software\sybase"
Li_Rtn= RegistryGet(ls_key,"setup",RegString!,ls_temp)
If li_Rtn=1 then
Return
Else
messagebox("提示:","您是第一次使用本系统,首先要注册进行ASE客户端配置!",INFORMATION!)
endif
else
messagebox("提示:","您是第一次使用本系统,首先要注册进行ASE客户端配置!",INFORMATION!)
END IF
//设置客户端环境变量
ls_key=" HKEY_LOCAL_MACHINE\Software\Sybase\setup"
//创建ASE环境变量的键值
registryset(ls_key," ProgramFolder ",regstring!,"sybase")
registryset(ls_key,"SYBASE",regstring!,str_appPath "SYBASE")
messagebox("提示信息….","ASE客户端设置完毕!")
至此我们便实现了ASE客户端的自动封装工作,应用程序直接安装就可以和ASE数据库进行通信了。
参考文献:
[1]董钢. Sybase数据库备份恢复故障处理一例[J]. 华南金融电脑,2007(01).
[2]毕明新.都淑萍 关于Sybase在应用系统中的运行效率研究[J].软件导刊,2007(05).
[3]曾勇进.Sybase ODBC的安全性问题[J].科技咨询导报,2007(10).
收稿日期:2008-01-12
作者简介:张鑫翊(1986-)女,九江学院信息科学与技术学院,计算机科学与技术专业A0414班;高艳玲 (1978-),女,九江学院信息科学与技术学院,教师。
关键词:客户机/服务器;OPEN CLIENT;封装;安全性;系统维护
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)06-10000-00
Automatic encapsulateSybase Adaptive ServerEnterprise client
ZhangXinYi GaoYanLing
(Information Science and TechnologyInstitute of Jiujiang University, Jiujiang 332005,China)
abstract:SYBASE Corporation’s ASE database management system in particular its client andserver pattern has guaranteed the application procedure movement stability and effectiveness, but this way causes the maintenance of the application systemto be extremely difficult, the data server security is also not high. this article mainly analyze how to solve the system maintenance difficulty, enhances the data server’s security while guarantees this kind of pattern merit, and proposes one effective solution.
Key words:Client/server; OPEN CLIENT; encapsulate; security; maintain
1 Sybase Adaptive Server Enterprise介绍
Sybase Adaptive Server Enterprise是sybase公司的旗舰产品。在ASE系统中Sybase公司首先提出了客户机与服务器的理论,将ASE分为OPEN SERVER和OPEN CLIENT两个部分。Open server是一个服务器构造工具,帮助集成联机企业的各种数据资源及服务。Open client是一个客户端的应用程序包,提供调用级接口,用来建立有效的前端应用,向服务器Adaptive Server或Open Server程序发出请求,获得消息和服务。
2 ODBC与客户端模式的比较
在设计用客户端/服务器(C/S)模式的数据库应用程序时,windows平台下的应用程序于DBMS连接的方法一般有两种方式:一是通过微软提供的公共数据接口ODBC与DBMS进行连接,二是直接使用DBMS厂商提供的客户端与DBMS进行连接。前者需要DBMS厂商提供ODBC驱动程序,数据要经过多次编码与解码,运行速度较慢。而后者的整合性较好,数据传输速度快,但是必须安装对应的DBMS客户端程序。
3 客户端模式的弊端
目前的许多应用系统都是以C/S模式进行设计的。在系统统入运行以后,我们发现虽然采用OPEN CLIENT与ASE进行连接可以加快了程序运行的速度,提高操作效率,但是无形的增加了系统的维护工作。
通常的做法是,在客户端上安装sybase central,并且使用dsedit命令准确配置server属性,如图1所示。
图1 SYBASE ASE 客户端手工配置窗口
这种方式由于必须在使用程序的client上安装sybase central,这样就使得系统的维护工作变得繁重,而且用户使用也极不方便。一旦用户需要重新安装操作系统或不慎将sybase central改变,那么系统维护人员将不得不为系统用户重新安装与配置sybase central,这样将使得维护人员花费大量的时间在重复的工作上,用户也因为不能正常使用而影响工作的效率。最重要的一点:安装sybase central能够使得他人轻而易举的了解到我后台数据库的名称、IP地址以及端口号。这样就为服务器的安全埋下了隐患。
4 客户端模式实质分析
通过ODBC与DBMS进行连接实际上是调用了一些针对不同DBMS进行通信的动态链接库实现的,而ODBC的驱动配置都是通过注册表进行记录,由此可知应用程序利用OPEN CLIENT与ASE进行连接的实质也是读取一些配置文件和调用一些用于通信的动态库,同样要通过注册表来记录驱动程序相关信息。
分析注册表发现,SYBASE客户端连接的环境变量位于HKEY_LOCAL_MACHINE\software\sybase\setup主键下面,在其下面有两个键值名,分别是ProgramFolder和sybase,而ProgramFolder的键值是sybase,sybase的键值便是OPEN CLIENT的安装目录,应用程序便是通过这两个键值来获取OPEN CLIENT的安装位置并调用对应的配置文件和通信动态库,因此我们可以直接在应用程序中编写代码设置这两个键值实现客户端的自动封装。
在setup主键下面还有一个SharedDLLs主键,它里面的键值都是一些动态库名称,而这些动态库就是应用程序与ASE进行连接所必须的各种通信程序,在WINDOWS下面,应用系统查找动态链接库的路径一般是首先搜索当前目录,然后通过注册表搜索操作系统设置的驱动目录,例如c:\windows\system目录,因此我们在进行封装的时候直接将这些动态库放在应用程序当前目录即可。
在ASE 客户端的安装目录中,包含有配置文件的只有charsets目录,是包含了各种字符集信息;ini目录,包含了数据库服务器的地址和端口信息;locales目录,包含了各种系统的本地化语言信息,这三个目录中的配置文件信息便是自动封装ASE客户端所必须的相关配置文件。
5 解决方案
因为每个用户可能更加具体的情况将应用系统安装在不同的系统路径下面,因此我们的应用程序必须具备获取自身所在路径的功能。这一功能可以通过调用WINDOWS API函数GetModuleFileName实现,在PB中的做法是:
1)首先在declare中添加gloable external functions
Function ulong GetModuleFileName(ulong hModule,ref string lpFileName,ulong nSize) LIBRARY "kernel32.dll" ALIAS FOR "GetModuleFileNameA"
2)编写获取路径的代码
string str_AppPath//应用程序全路径,包括程序文件名
integer int_ret,len_filename
str_AppPath = Space (128)
int_ret = GetModuleFileName (Handle (GetApplication ()), str_Apppath, 128)
//len_filename是可执行文件名称长度,如a.exe的len_filename=4
str_apppath=left(str_appPath,len(str_appPath)-len_filename
获取到应用程序的路径后,通过注册表操作函数设置ASE客户端的环境变量:
//第一次使用时首先要配置ASE客户端
Integer li_Rtn
string ls_temp,ls_key
//---0. 判断是否已经存设置过sybase环境变量
ls_key="HKEY_LOCAL_MACHINE\Software"
li_Rtn=RegistryGet(ls_key,"sybase",RegString!,ls_temp)
IF li_Rtn=1 THEN
ls_key="HKEY_LOCAL_MACHINE\Software\sybase"
Li_Rtn= RegistryGet(ls_key,"setup",RegString!,ls_temp)
If li_Rtn=1 then
Return
Else
messagebox("提示:","您是第一次使用本系统,首先要注册进行ASE客户端配置!",INFORMATION!)
endif
else
messagebox("提示:","您是第一次使用本系统,首先要注册进行ASE客户端配置!",INFORMATION!)
END IF
//设置客户端环境变量
ls_key=" HKEY_LOCAL_MACHINE\Software\Sybase\setup"
//创建ASE环境变量的键值
registryset(ls_key," ProgramFolder ",regstring!,"sybase")
registryset(ls_key,"SYBASE",regstring!,str_appPath "SYBASE")
messagebox("提示信息….","ASE客户端设置完毕!")
至此我们便实现了ASE客户端的自动封装工作,应用程序直接安装就可以和ASE数据库进行通信了。
参考文献:
[1]董钢. Sybase数据库备份恢复故障处理一例[J]. 华南金融电脑,2007(01).
[2]毕明新.都淑萍 关于Sybase在应用系统中的运行效率研究[J].软件导刊,2007(05).
[3]曾勇进.Sybase ODBC的安全性问题[J].科技咨询导报,2007(10).
收稿日期:2008-01-12
作者简介:张鑫翊(1986-)女,九江学院信息科学与技术学院,计算机科学与技术专业A0414班;高艳玲 (1978-),女,九江学院信息科学与技术学院,教师。