摘要: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-),女,九江學院信息科學與技術學院,教師。