陳建國 汪秋蒙 尚 忝
(綿陽職業(yè)技術學院,四川 綿陽 621000)
基于WEB Service 虛擬數(shù)據(jù)中心的建立及安全性研究
陳建國 汪秋蒙 尚 忝
(綿陽職業(yè)技術學院,四川 綿陽 621000)
為了解決不同時期不同業(yè)務部門所開發(fā)的應用系統(tǒng)異構型數(shù)據(jù)庫數(shù)據(jù)共享問題,必須建立業(yè)務系統(tǒng)中數(shù)據(jù)的交換與同步機制,既要保證原來的系統(tǒng)業(yè)務流程不發(fā)生改變,又要保證數(shù)據(jù)傳輸?shù)母咝О踩?。文章采用基于WEB service技術來創(chuàng)建一個虛擬的數(shù)據(jù)中心,提供數(shù)據(jù)交換接口,利用插件分發(fā)方式給各個業(yè)務系統(tǒng)實現(xiàn)與虛擬數(shù)據(jù)中心的數(shù)據(jù)交換。通過設置SoapHeader來控制非法用戶對WebService的調(diào)用,既能保證各業(yè)務系統(tǒng)獲取中心數(shù)據(jù)的實時性,又能保證數(shù)據(jù)傳輸?shù)陌踩?。很好地解決了異構數(shù)據(jù)庫數(shù)據(jù)交換與共享問題。
數(shù)據(jù)庫;Webservice;數(shù)據(jù)安全;數(shù)據(jù)交換
目前在各個應用領域和行業(yè)中,不同的系統(tǒng)由于當時條件的限制,可能采用的不同的數(shù)據(jù)庫,如果希望實現(xiàn)數(shù)據(jù)的共享以及大數(shù)據(jù)的分析應用,迫切需要一種途徑來集成這些系統(tǒng)中分布的、異構的數(shù)據(jù)庫資源。
異構數(shù)據(jù)集成是把不同來源、格式、特點性質(zhì)的數(shù)據(jù)在邏輯上或物理上有機地集中,從而為企業(yè)提供全面的數(shù)據(jù)共享。目前實現(xiàn)異構數(shù)據(jù)庫共享的理論研究有多種方法和途徑,歸納起來有幾種方法:
(1)基于中間件的數(shù)據(jù)定時采集方式,構建中心數(shù)據(jù)庫方式。這種方式數(shù)據(jù)采集的模式至關重要,其優(yōu)點是數(shù)據(jù)集中管理,數(shù)據(jù)存儲的安全性好,其缺點是數(shù)據(jù)傳輸?shù)陌踩圆荒苡行У谋WC,數(shù)據(jù)讀取實時效率低。
(2)基于數(shù)據(jù)庫的數(shù)據(jù)訂閱與數(shù)據(jù)發(fā)布方式,這種方式是利用數(shù)據(jù)庫本身的數(shù)據(jù)處理的特點,實現(xiàn)數(shù)據(jù)的訂閱與發(fā)布,這種方式對異構性數(shù)據(jù)的處理實現(xiàn)比較困難,訂閱和發(fā)布必須對數(shù)據(jù)庫的結構要熟悉,批量的數(shù)據(jù)訂閱和發(fā)布可能影響數(shù)據(jù)庫的性能。
(3)基于XML數(shù)據(jù)存儲的數(shù)據(jù)中心方式,這種方法就是將各系統(tǒng)的數(shù)據(jù)采集并以 XML數(shù)據(jù)存儲的方式實現(xiàn)數(shù)據(jù)的交換以達到數(shù)據(jù)共享的目的,這種方法的優(yōu)點是數(shù)據(jù)的存儲簡單,數(shù)據(jù)的交互性好,但數(shù)據(jù)的安全性,以及數(shù)據(jù)管理的能力差。
(4)同一數(shù)據(jù)中心和數(shù)據(jù)管理模式,這種方式必須重新構建應用系統(tǒng),在實際應用中對于已經(jīng)存在信息化管理的行業(yè)和部門基本不可行。
目前除了一些大型的企業(yè)提供了一整套的數(shù)據(jù)共享的解決方案,但價格昂貴,在實際應用中不能根據(jù)實際情況進行數(shù)據(jù)的采集和數(shù)據(jù)處理。
虛擬數(shù)據(jù)中心為此需要解決以下幾個問題:
(1)要求能夠在保持原來應用系統(tǒng)的情況下,利用現(xiàn)有資源構建新的應用,并能方便的集成待建與在建項目。
(2)應支持分布式異構系統(tǒng)的快速集成,支持各種不同的操作系統(tǒng)及數(shù)據(jù)源。
(3)數(shù)據(jù)交換平臺應具備靈活的策略定義與配置,應提供簡單易用的工具或界面,便于掌握及使用。
(4)基于各部門的共享數(shù)據(jù),建設數(shù)據(jù)中心,統(tǒng)一數(shù)據(jù)標準,以便對各類數(shù)據(jù)進行綜合利用,提供對各類信息的綜合分析和展示。
(5)數(shù)據(jù)交換的安全性,要保證各業(yè)務數(shù)據(jù)交換的數(shù)據(jù)安全。
基于.NET 的Web Server具有與平臺和語言無關、可跨越防火墻的特點,適合實現(xiàn)系統(tǒng)的集成和數(shù)據(jù)的共享,該方案主要在原來各系統(tǒng)的基礎基礎上,增加WEB服務器、數(shù)據(jù)同步接口、WEB Service應用接口、臨時數(shù)據(jù)存儲交換數(shù)據(jù)庫,在不改變原來應用的基礎上構成一虛擬的數(shù)據(jù)中心。其結構如下:
圖1 虛擬數(shù)據(jù)中心結構圖
其中數(shù)據(jù)同步接口插件、WEB應用接口插件以DLL文件的方法根據(jù)用戶的需要由虛擬數(shù)據(jù)中心分發(fā)給業(yè)務部門和需要調(diào)用虛擬中心數(shù)據(jù)的客戶。虛擬數(shù)據(jù)中心的Web服務器可以根據(jù)業(yè)務的需求建立多個群組,用來滿足不同業(yè)務邏輯對數(shù)據(jù)的需求。
2.1 系統(tǒng)實現(xiàn)
數(shù)據(jù)同步方式有兩種,一種是主動同步,即在訪問本地數(shù)據(jù)庫時,同時訪問虛擬數(shù)據(jù)庫中心的數(shù)據(jù),如果對應的數(shù)據(jù)有變化,則同步本地數(shù)據(jù),這樣就可以實現(xiàn)本地數(shù)據(jù)與數(shù)據(jù)中心的數(shù)據(jù)同步。另一種方式是被動同步,一般處理方法是如果某應用的數(shù)據(jù)庫的數(shù)據(jù)發(fā)生變變化時,主動的更新需要該數(shù)據(jù)的其他應用的數(shù)據(jù)庫,這種方式數(shù)據(jù)處理的效率低??梢圆捎迷谔摂M數(shù)據(jù)中心建立臨時的數(shù)據(jù)庫,所有共享的數(shù)據(jù)更新時提供一個更新消息,發(fā)送到虛擬數(shù)據(jù)中心,這樣要共享數(shù)據(jù)的應用獲取虛擬數(shù)據(jù)中心的變化信息,根據(jù)其狀態(tài)確定是否獲取相應數(shù)據(jù)源的數(shù)據(jù)來更新本地數(shù)據(jù),采用這種方式,大大的減少了數(shù)據(jù)數(shù)據(jù)傳輸?shù)膲毫?。為了有效的實現(xiàn)虛擬數(shù)據(jù)中心的數(shù)據(jù)同步,需要在虛擬數(shù)據(jù)中心創(chuàng)建如下同步數(shù)據(jù)表。
所有應用中需要共享的數(shù)據(jù),除提供數(shù)據(jù)檢索的 Web Servce數(shù)據(jù)接口外,還要將數(shù)據(jù)變化的數(shù)據(jù)記錄信息寫入到同步數(shù)據(jù)表中,同一個數(shù)據(jù)源的同一數(shù)據(jù)表記錄是唯一的,即這里只保存最新的更新記錄。其表結構如表1所示:
表1 數(shù)據(jù)源同步數(shù)據(jù)表
同步記錄表該用于記錄獲取虛擬同步數(shù)據(jù)的應用,當應用獲取虛擬數(shù)據(jù)庫中的同步數(shù)據(jù)時,則登記其獲取數(shù)據(jù)源的信息,利用這個表,可以確定當前本地信息是否為最新的數(shù)據(jù)信息。其表結構如表2所示。
表2 同步記錄表
數(shù)據(jù)源表用于存儲虛擬數(shù)據(jù)中心中所有共享數(shù)據(jù)源的基本信息。其表結構如表3所示。
表3 數(shù)據(jù)源表
2.2 接口的實現(xiàn)
各個頁面數(shù)據(jù)庫可以是目前流行的可以 SQL Server、MySQL、Orcale數(shù)據(jù)庫管理系統(tǒng),為了對數(shù)據(jù)交換的管理,可以在虛擬數(shù)據(jù)中心的 WEB服務器創(chuàng)建虛擬中心數(shù)據(jù)庫VDataCenter,其DBMS根據(jù)情況選定。
應用插件的以及 WEB 服務的開發(fā)可以采用微軟的.NET的WEB services技術、XML技術實現(xiàn)數(shù)據(jù)的交換。其關鍵技術及代碼如下:
//數(shù)據(jù)中心
public class VDataCenter{
/// 獲取數(shù)據(jù)中心的所有數(shù)據(jù)源服務器信息
public List
}
//數(shù)據(jù)源
public class DataSoure{
public String DataUrl { get;set;} //Web service地址
public String DataName { set;get;} //業(yè)務數(shù)據(jù)源名
/// 獲取指定數(shù)據(jù)庫服務器所有需要同步的數(shù)據(jù)表信息
public List
}
//同步數(shù)據(jù)表
public class SysDataTable {
public DataSoure SysDataSoure { get;set;} //數(shù)據(jù)源
public String TableName { get;set;} //數(shù)據(jù)名
public String KeyName { get;set;}//表
public String KeyValue { get;set;}//的值
public String ValueType { get;set;}//類型
public String SysnType { get;set;} //同步類型
/// 根據(jù)業(yè)務需求獲取數(shù)據(jù)中心的數(shù)據(jù)信息,在獲取數(shù)據(jù)的同時在數(shù)據(jù)中心建設數(shù)據(jù)鏡像,實現(xiàn)數(shù)據(jù)的快速訪問
public DataSet GetDate( );
}
Web service 部分關鍵代碼:
public class Service : System.Web.Services.WebService{
//數(shù)據(jù)安全效驗類
public CredentialSoapHeader myHeader=new CredentialSoapHeader();
[SoapHeader("myHeader")]
[WebMethod(Description = "修改學生信息,參數(shù):學號,姓名,班級,學生層次,性別,地址)]
public int SetDataStudents(string ID, string Name, string classes, string Level, string sex, string Addr){
string message = "";
if (!myHeader.IsValid(out message))//安全效驗
return -1;
Student st = new Student();
return st.SetDataStudent(ID, Name, classes, Level, sex, Addr);
}
[SoapHeader("myHeader")]
[WebMethod(Description = "返回學生基本信息,參數(shù):學號")]
public string GetDataStudentInfoCode(string ID){
if (!myHeader.IsValid(out message))
return toXml(message);//將string類型轉(zhuǎn)換為XML格式
Myvtc.DAL.Student s = new Myvtc.DAL.Student();
DataSet ds = s.GetStudentInfoCode(id);
return ds.toXml();
}
}
其實現(xiàn)的過程中數(shù)據(jù)中心的構建以及數(shù)據(jù)的安全至關重要,在數(shù)據(jù)集成的過程中,存在以下必須解決的問題:(1)數(shù)據(jù)傳輸?shù)陌踩?;?)數(shù)據(jù)獲取的效率;(3)數(shù)據(jù)存儲的安全性。
這里需要解決的主要問題是如何保證有效用戶調(diào)用數(shù)據(jù)中心的數(shù)據(jù),通過設置 SoapHeader來控制非法用戶對WebService的調(diào)用。其處理的方式:首先要自定義SoapHeader,須繼承System.Web.Services.Protocols. SoapHeader。
//數(shù)據(jù)安全效驗類
public class CredentialSoapHeader : System.Web.Services. Protocols.SoapHeader{
public string UserName{get;set;}
public string PassWord{get;set;}
public bool IsValid(string Name, string password out string msg){
msg= "";
//加密對象
CryptHelper.CryptoHelper ct = new CryptHelper.
CryptoHelper();
try {
//解密,password加密后的字符串
string userPassword = ct.GetDecryptedValue(password);
//根據(jù)用戶名和用戶密碼獲取用戶信息
WebUser webUser = new WebUser(RegName, userPassword);
bool bl = webUser.IsValid();
if (bl==false){
msg= "sorry,你沒有授權訪問該web service";
return bl;
}
}
客戶端調(diào)用,分別使用不設置SoapHeader與設置SoapHeader就可以實現(xiàn)對Web sevice方法的安全調(diào)用。
通過構建一個虛擬的中心數(shù)據(jù)平臺實現(xiàn)相關部門的數(shù)據(jù)共享,將各個不同的系統(tǒng)應用的數(shù)據(jù)有效的集成,即不大動干戈的修改原來系統(tǒng)的的業(yè)務流程,又能保證數(shù)據(jù)的共享。在未來的擴展應用中,包括基于數(shù)據(jù)中心的業(yè)務流再構、數(shù)據(jù)統(tǒng)計分析、大數(shù)據(jù)分析、智能決策等方面都具有一定的應用價值。目前該技術應用到學院的網(wǎng)絡收費,新生報到系統(tǒng)中,通過一年的運行,效果良好。
[1] 華悅,徐濤.一種基于SOA消息安全傳輸機制[J].計算機科學,2012,39(6):77-80.
[2] 賀正求,吳禮發(fā),洪征,等.Wbb 服務安全問題研究[J].計算機科學,2010,37(8):32-38.
[3] 王藝霖,金澈清,王曉玲.公交數(shù)據(jù)管理系統(tǒng)的設計與實現(xiàn)[J].計算機應用,2016(S10):240-242.
[4] 張宇臣,沈備軍.軟件工程關聯(lián)數(shù)據(jù)的自動構建[J].計算機應用,2016,36(3):44-49.
[5] 李宗育,王勁松,宋慶軍.基于WSE的SOAP消息部分信息加密機制[J].計算機工程與設計,2016,37(1):56-59.
[6] 崔恒香.基于隔離網(wǎng)閘的異構數(shù)據(jù)庫同步技術研究與實現(xiàn)[J].軟件工程,2016(2):11-13.
[7] 鄒凌君.基于Web Service的數(shù)字化校園信息共享平臺的構建研究[J].輕工科技,2016(4):63-65.
[8] 鐘樹華.虛擬化下數(shù)據(jù)庫集群系統(tǒng)構建與性能分析[J].教育,2016,5(7):1474.
[9]| 易珺,梁志勇,唐平.基于 XML的虛擬數(shù)據(jù)庫中間件的研究[J].計算機與數(shù)字工程,2004(5) :86-88.
[10] 馮濤,袁占亭.基于虛擬數(shù)據(jù)庫的網(wǎng)站開發(fā)[J].甘肅工業(yè)大學學報,2002(2):69-72.
[11] 郭成城,晏蒲柳.一種異構 Web服務器集群動態(tài)負載均衡算法[J].計算機學報,2005(2):179-184.
[12] 潘蕾,徐汀榮.基于Web服務的SQL數(shù)據(jù)庫訪問中間件的設計與實現(xiàn)[J].計算機與現(xiàn)代化,2006(3):67-69.
[13] 戴維,蔣玉芳.基于Ajax技術實現(xiàn)Web異步樹的應用研究[J].計算機與現(xiàn)代化,2011(2):138-149.
[14] 廖華江,鐘劍.基于Web Service的校園一卡通應用集成接口研究[J].計算機與現(xiàn)代化,2010(12):149-151.
[15] 王洋.基于 XML/SOAP的煤礦企業(yè)異構信息源集成的研究[J].煤炭技術,2012(8):160-161.
[16] 王元,張金江,郭創(chuàng)新.基于SOAP/REST混合式SOA的輸變電設備信息集成平臺[J].機電工程,2014,31(4):501-506.
[17] 曹秀麗.基于SOAP協(xié)議的XML跨平臺WebService核心技術研究[J].湖北第二師范學院學報,2015,32(8):36-40.
Establishment of virtual data center and security research based WEB Service
In order to solve sharing problem of application system heterogeneous database developed by the different business units in different periods, it needed to set up data exchange and synchronization mechanisms of business systems. We must ensure that the original business process of the system does not be change, but also guarantee the efficiency and safety of data transmission. In this paper, a virtual data center is created based on WEB service technology. It provides data exchange interface, applying plug-ins distribution to realize the data exchange for the virtual data center. The illegal user is controlled to call the Web Service by setting Soap Header, which can ensure the real-time of system center data, and guarantee the security of data transmission. So, this paper solutes the problem of heterogeneous database data exchange and sharing.
database; Web Service; data security; data exchange
TP316
A
1008-1151(2016)09-0001-03
2016-08-11
陳建國(1965-),男,重慶忠縣人,綿陽職業(yè)技術學院副教授,研究方向為數(shù)據(jù)挖掘與軟件開發(fā);汪秋蒙(1979-),男(羌族),四川綿陽人,綿陽職業(yè)技術學院講師,碩士研究生,研究方向為網(wǎng)絡安全;尚忝(1980-),男,四川綿陽人,綿陽職業(yè)技術學院講師,碩士研究生,研究方向為數(shù)據(jù)庫技術。