本發(fā)明涉及軟件系統(tǒng)集成領(lǐng)域,具體地說(shuō)是一種面向接口編程實(shí)現(xiàn)通用數(shù)據(jù)交換的方法。
背景技術(shù):
數(shù)據(jù)交換涉及到數(shù)據(jù)發(fā)送方系統(tǒng)和數(shù)據(jù)接收方系統(tǒng),傳統(tǒng)的數(shù)據(jù)交換實(shí)現(xiàn)方法,主要有以下幾種方式:
(1)基于數(shù)據(jù)庫(kù)實(shí)現(xiàn)的數(shù)據(jù)交換
數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)交換,利用數(shù)據(jù)庫(kù)之間的聯(lián)通技術(shù)比如Oracle的DBLink作為不同數(shù)據(jù)庫(kù)之間通信的橋梁,通過(guò)SQL或者存儲(chǔ)過(guò)程實(shí)現(xiàn)數(shù)據(jù)發(fā)送方系統(tǒng)與數(shù)據(jù)接收方系統(tǒng)之間的數(shù)據(jù)處理。這種實(shí)現(xiàn)方式雖然不依賴應(yīng)用程序,實(shí)現(xiàn)過(guò)程簡(jiǎn)單,但所有的功能都需要通過(guò)SQL或者存儲(chǔ)過(guò)程實(shí)現(xiàn),數(shù)據(jù)庫(kù)中的SQL或者存儲(chǔ)過(guò)程調(diào)試?yán)щy,不適用于復(fù)雜的業(yè)務(wù)邏輯處理。此外,需要將數(shù)據(jù)庫(kù)暴露出來(lái),安全性會(huì)受到一定的威脅。
(2)基于消息中間件實(shí)現(xiàn)的數(shù)據(jù)交換
數(shù)據(jù)發(fā)送方系統(tǒng)通過(guò)消息中間件給數(shù)據(jù)接收方系統(tǒng)發(fā)送接收數(shù)據(jù)的指令消息,然后再以消息內(nèi)容為載體,將數(shù)據(jù)也以消息的形式傳送給數(shù)據(jù)接收方,數(shù)據(jù)接收方接收到數(shù)據(jù)接收指令消息之后,調(diào)用本地的程序接收來(lái)自數(shù)據(jù)發(fā)送方傳送消息中包含的數(shù)據(jù)。這種實(shí)現(xiàn)實(shí)現(xiàn)方式雖然和數(shù)據(jù)庫(kù)層解耦,但又必須依賴于消息中間件,數(shù)據(jù)發(fā)送方和數(shù)據(jù)接收方都需要對(duì)數(shù)據(jù)進(jìn)行加工處理才能完成數(shù)據(jù)的交換,并且這種實(shí)現(xiàn)方式通常不支持事務(wù)控制,數(shù)據(jù)一致性無(wú)法保證。
(3)直接調(diào)用程序?qū)崿F(xiàn)的數(shù)據(jù)交換
數(shù)據(jù)接收方提供接收數(shù)據(jù)的程序包以及程序說(shuō)明文檔,數(shù)據(jù)發(fā)送方按照程序說(shuō)明文檔傳遞對(duì)應(yīng)的數(shù)據(jù)交換參數(shù),直接調(diào)用數(shù)據(jù)接收方提供的數(shù)據(jù)接收程序?qū)崿F(xiàn)數(shù)據(jù)交換。這種方式雖然和數(shù)據(jù)庫(kù)層解耦,并且實(shí)現(xiàn)方式簡(jiǎn)單,但是不符合依賴倒置原則,不適用于面向?qū)ο箝_(kāi)發(fā),如果針對(duì)同一個(gè)數(shù)據(jù)接收方的系統(tǒng)有很多數(shù)據(jù)接收程序需要調(diào)用,當(dāng)數(shù)據(jù)接收程序一旦發(fā)生變化時(shí),數(shù)據(jù)發(fā)送方系統(tǒng)的代碼維護(hù)將會(huì)變得非常復(fù)雜,增大了后期代碼維護(hù)的成本。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種面向接口編程實(shí)現(xiàn)通用數(shù)據(jù)交換的方法,以面向接口的編程方式調(diào)用數(shù)據(jù)交換實(shí)現(xiàn)程序、數(shù)據(jù),記錄數(shù)據(jù)交換程序的調(diào)用參數(shù)和調(diào)用結(jié)果。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種面向接口編程實(shí)現(xiàn)通用數(shù)據(jù)交換的方法,其特征在于以面向接口編程的方式調(diào)用數(shù)據(jù)交換程序;持久化保存數(shù)據(jù)交換信息支持失敗重新調(diào)用;事務(wù)控制數(shù)據(jù)交換過(guò)程保證數(shù)據(jù)一致性;分布式數(shù)據(jù)交換狀態(tài)機(jī)支持應(yīng)用集群;
以面向接口的方式調(diào)用數(shù)據(jù)交換程序,數(shù)據(jù)接收方以接口方式定義數(shù)據(jù)交換程序?qū)ο蟮臉?gòu)造方法、數(shù)據(jù)交換程序參數(shù)接收方法以及執(zhí)行數(shù)據(jù)交換的方法,具體實(shí)現(xiàn)過(guò)程在內(nèi)部封裝,對(duì)外不可見(jiàn),并將接口調(diào)用方式和需要的參數(shù)說(shuō)明提供給數(shù)據(jù)發(fā)送方;數(shù)據(jù)發(fā)送方以面向接口編程的方式先調(diào)用數(shù)據(jù)交換程序?qū)ο蟮臉?gòu)造方法獲取數(shù)據(jù)交換的執(zhí)行對(duì)象,然后再調(diào)用數(shù)據(jù)交換程序參數(shù)接收方法傳遞數(shù)據(jù)交換參數(shù),最后調(diào)用數(shù)據(jù)交換對(duì)象執(zhí)行數(shù)據(jù)交換的方法完成數(shù)據(jù)交換過(guò)程;
不是所有的數(shù)據(jù)交換過(guò)程都需要和業(yè)務(wù)邏輯處理過(guò)程組成一個(gè)事務(wù),即有些數(shù)據(jù)交換即使失敗了,也不能影響整個(gè)業(yè)務(wù)過(guò)程的繼續(xù)執(zhí)行,因此在這種數(shù)據(jù)交換失敗的情況下,首先保證整個(gè)業(yè)務(wù)過(guò)程可以繼續(xù)成功執(zhí)行,而調(diào)用失敗的數(shù)據(jù)交換需要支持重新再次調(diào)用,直到最終調(diào)用成功為止。為了實(shí)現(xiàn)數(shù)據(jù)交換失敗之后能夠重新調(diào)用,系統(tǒng)需要持久化保存數(shù)據(jù)交換的必要信息,包括數(shù)據(jù)交換調(diào)用的接口、調(diào)用參數(shù)等;
事務(wù)控制數(shù)據(jù)交換過(guò)程,將數(shù)據(jù)發(fā)送方系統(tǒng)業(yè)務(wù)邏輯處理的代碼和調(diào)用數(shù)據(jù)接收方數(shù)據(jù)交換的代碼都放在同一個(gè)事務(wù)控制的程序塊中,數(shù)據(jù)交換和業(yè)務(wù)邏輯處理這兩個(gè)子操作過(guò)程組成一個(gè)事務(wù),當(dāng)數(shù)據(jù)交換失敗回滾之后,對(duì)應(yīng)的業(yè)務(wù)邏輯處理成功結(jié)果也進(jìn)行回滾,這樣當(dāng)任意一個(gè)子過(guò)程失敗整個(gè)事務(wù)過(guò)程都將失敗,只有所有的子過(guò)程都成功,整個(gè)事務(wù)過(guò)程才成功,事務(wù)的回滾機(jī)制有效地保證了數(shù)據(jù)發(fā)送方系統(tǒng)和數(shù)據(jù)接收方系統(tǒng)的數(shù)據(jù)一致性;
當(dāng)應(yīng)用集群時(shí),同一個(gè)系統(tǒng)的應(yīng)用程序會(huì)被部署到多個(gè)分布式的應(yīng)用節(jié)點(diǎn),不同應(yīng)用節(jié)點(diǎn)的程序版本是相同的,如果每一個(gè)應(yīng)用節(jié)點(diǎn)包含的數(shù)據(jù)交換代碼都執(zhí)行,相同的數(shù)據(jù)交換代碼將會(huì)被執(zhí)行多次,導(dǎo)致數(shù)據(jù)交換過(guò)程重復(fù)執(zhí)行;分布式數(shù)據(jù)交換狀態(tài)機(jī),通過(guò)數(shù)據(jù)交換集群控制中心記錄各節(jié)點(diǎn)數(shù)據(jù)交換程序開(kāi)始執(zhí)行和結(jié)束執(zhí)行的狀態(tài),當(dāng)一個(gè)數(shù)據(jù)交換開(kāi)始執(zhí)行前,首先到數(shù)據(jù)交換集群控制中心檢測(cè)數(shù)據(jù)交換執(zhí)行狀態(tài),如果已有應(yīng)用節(jié)點(diǎn)開(kāi)始執(zhí)行或者執(zhí)行完畢,本節(jié)點(diǎn)將不再執(zhí)行,如果還沒(méi)有應(yīng)用節(jié)點(diǎn)執(zhí)行,數(shù)據(jù)交換集群控制中心記錄開(kāi)始執(zhí)行狀態(tài)并在本節(jié)點(diǎn)開(kāi)始執(zhí)行,當(dāng)數(shù)據(jù)交換執(zhí)行完成之后,數(shù)據(jù)交換集群控制中心再記錄結(jié)束執(zhí)行的狀態(tài)。
優(yōu)選的,系統(tǒng)業(yè)務(wù)邏輯代碼和數(shù)據(jù)交換實(shí)現(xiàn)代碼解耦,封裝的數(shù)據(jù)交換實(shí)現(xiàn)代碼對(duì)業(yè)務(wù)邏輯代碼透明。
優(yōu)選的,同步執(zhí)行的業(yè)務(wù)邏輯處理代碼和數(shù)據(jù)交換代碼可以通過(guò)事務(wù)控制數(shù)據(jù)一致性,而異步執(zhí)行的業(yè)務(wù)邏輯代碼和數(shù)據(jù)交換代碼,持久化保存數(shù)據(jù)交換信息支持失敗重新調(diào)用。
優(yōu)選的,應(yīng)用集群環(huán)境,分布式數(shù)據(jù)交換狀態(tài)機(jī)有效保證數(shù)據(jù)交換被唯一執(zhí)行,增強(qiáng)數(shù)據(jù)交換程序水平擴(kuò)展性。
本發(fā)明的一種面向接口編程實(shí)現(xiàn)通用數(shù)據(jù)交換的方法和現(xiàn)有技術(shù)相比,具有以下有益效果:
面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,提搞了程序的復(fù)用性,而依賴倒置原則是面向?qū)ο蟪绦蛟O(shè)計(jì)方法遵循的原則之一,通過(guò)面向接口編程的方式調(diào)用數(shù)據(jù)交換程序,調(diào)用者只需要通過(guò)接口就能完成所要實(shí)現(xiàn)的功能,而不必關(guān)注數(shù)據(jù)交換具體的實(shí)現(xiàn)細(xì)節(jié);
持久化保存數(shù)據(jù)交換信息支持失敗重新調(diào)用,對(duì)于異步執(zhí)行數(shù)據(jù)交換程序的系統(tǒng),數(shù)據(jù)交換程序執(zhí)行過(guò)程和業(yè)務(wù)邏輯處理過(guò)程分離,當(dāng)數(shù)據(jù)交換失敗,系統(tǒng)持久化保存了數(shù)據(jù)交換的必要信息,支持重新調(diào)用,減少人工處理數(shù)據(jù)交換失敗的工作量;
事務(wù)控制數(shù)據(jù)交換過(guò)程保證數(shù)據(jù)的一致性,對(duì)于執(zhí)行數(shù)據(jù)交換對(duì)數(shù)據(jù)一致性要求較高的系統(tǒng),通過(guò)事務(wù)控制業(yè)務(wù)邏輯處理代碼和數(shù)據(jù)交換程序代碼,要么全部執(zhí)行成功,要么全部執(zhí)行失敗,最終保證數(shù)據(jù)的一致性;
分布式數(shù)據(jù)交換狀態(tài)機(jī)支持應(yīng)用系統(tǒng)集群,應(yīng)用集群系統(tǒng),通過(guò)分布式數(shù)據(jù)交換狀態(tài)機(jī)控制數(shù)據(jù)交換程序執(zhí)行時(shí)機(jī),有效保證數(shù)據(jù)交換被唯一執(zhí)行,增強(qiáng)數(shù)據(jù)交換程序的水平擴(kuò)展性,提高應(yīng)用系統(tǒng)整體可用性。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
一種面向接口編程實(shí)現(xiàn)通用數(shù)據(jù)交換的方法,其特征在于以面向接口編程的方式調(diào)用數(shù)據(jù)交換程序;持久化保存數(shù)據(jù)交換信息支持失敗重新調(diào)用;事務(wù)控制數(shù)據(jù)交換過(guò)程保證數(shù)據(jù)一致性;分布式數(shù)據(jù)交換狀態(tài)機(jī)支持應(yīng)用集群;
系統(tǒng)業(yè)務(wù)邏輯代碼和數(shù)據(jù)交換實(shí)現(xiàn)代碼解耦,封裝的數(shù)據(jù)交換實(shí)現(xiàn)代碼對(duì)業(yè)務(wù)邏輯代碼透明。
同步執(zhí)行的業(yè)務(wù)邏輯處理代碼和數(shù)據(jù)交換代碼可以通過(guò)事務(wù)控制數(shù)據(jù)一致性,而異步執(zhí)行的業(yè)務(wù)邏輯代碼和數(shù)據(jù)交換代碼,持久化保存數(shù)據(jù)交換信息支持失敗重新調(diào)用。
應(yīng)用集群環(huán)境,分布式數(shù)據(jù)交換狀態(tài)機(jī)有效保證數(shù)據(jù)交換被唯一執(zhí)行,增強(qiáng)數(shù)據(jù)交換程序水平擴(kuò)展性。
以面向接口的方式調(diào)用數(shù)據(jù)交換程序,數(shù)據(jù)接收方以接口方式定義數(shù)據(jù)交換程序?qū)ο蟮臉?gòu)造方法、數(shù)據(jù)交換程序參數(shù)接收方法以及執(zhí)行數(shù)據(jù)交換的方法,具體實(shí)現(xiàn)過(guò)程在內(nèi)部封裝,對(duì)外不可見(jiàn),并將接口調(diào)用方式和需要的參數(shù)說(shuō)明提供給數(shù)據(jù)發(fā)送方;數(shù)據(jù)發(fā)送方以面向接口編程的方式先調(diào)用數(shù)據(jù)交換程序?qū)ο蟮臉?gòu)造方法獲取數(shù)據(jù)交換的執(zhí)行對(duì)象,然后再調(diào)用數(shù)據(jù)交換程序參數(shù)接收方法傳遞數(shù)據(jù)交換參數(shù),最后調(diào)用數(shù)據(jù)交換對(duì)象執(zhí)行數(shù)據(jù)交換的方法完成數(shù)據(jù)交換過(guò)程;
不是所有的數(shù)據(jù)交換過(guò)程都需要和業(yè)務(wù)邏輯處理過(guò)程組成一個(gè)事務(wù),即有些數(shù)據(jù)交換即使失敗了,也不能影響整個(gè)業(yè)務(wù)過(guò)程的繼續(xù)執(zhí)行,因此在這種數(shù)據(jù)交換失敗的情況下,首先保證整個(gè)業(yè)務(wù)過(guò)程可以繼續(xù)成功執(zhí)行,而調(diào)用失敗的數(shù)據(jù)交換需要支持重新再次調(diào)用,直到最終調(diào)用成功為止。為了實(shí)現(xiàn)數(shù)據(jù)交換失敗之后能夠重新調(diào)用,系統(tǒng)需要持久化保存數(shù)據(jù)交換的必要信息,包括數(shù)據(jù)交換調(diào)用的接口、調(diào)用參數(shù)等;
事務(wù)控制數(shù)據(jù)交換過(guò)程,將數(shù)據(jù)發(fā)送方系統(tǒng)業(yè)務(wù)邏輯處理的代碼和調(diào)用數(shù)據(jù)接收方數(shù)據(jù)交換的代碼都放在同一個(gè)事務(wù)控制的程序塊中,數(shù)據(jù)交換和業(yè)務(wù)邏輯處理這兩個(gè)子操作過(guò)程組成一個(gè)事務(wù),當(dāng)數(shù)據(jù)交換失敗回滾之后,對(duì)應(yīng)的業(yè)務(wù)邏輯處理成功結(jié)果也進(jìn)行回滾,這樣當(dāng)任意一個(gè)子過(guò)程失敗整個(gè)事務(wù)過(guò)程都將失敗,只有所有的子過(guò)程都成功,整個(gè)事務(wù)過(guò)程才成功,事務(wù)的回滾機(jī)制有效地保證了數(shù)據(jù)發(fā)送方系統(tǒng)和數(shù)據(jù)接收方系統(tǒng)的數(shù)據(jù)一致性;
當(dāng)應(yīng)用集群時(shí),同一個(gè)系統(tǒng)的應(yīng)用程序會(huì)被部署到多個(gè)分布式的應(yīng)用節(jié)點(diǎn),不同應(yīng)用節(jié)點(diǎn)的程序版本是相同的,如果每一個(gè)應(yīng)用節(jié)點(diǎn)包含的數(shù)據(jù)交換代碼都執(zhí)行,相同的數(shù)據(jù)交換代碼將會(huì)被執(zhí)行多次,導(dǎo)致數(shù)據(jù)交換過(guò)程重復(fù)執(zhí)行;分布式數(shù)據(jù)交換狀態(tài)機(jī),通過(guò)數(shù)據(jù)交換集群控制中心記錄各節(jié)點(diǎn)數(shù)據(jù)交換程序開(kāi)始執(zhí)行和結(jié)束執(zhí)行的狀態(tài),當(dāng)一個(gè)數(shù)據(jù)交換開(kāi)始執(zhí)行前,首先到數(shù)據(jù)交換集群控制中心檢測(cè)數(shù)據(jù)交換執(zhí)行狀態(tài),如果已有應(yīng)用節(jié)點(diǎn)開(kāi)始執(zhí)行或者執(zhí)行完畢,本節(jié)點(diǎn)將不再執(zhí)行,如果還沒(méi)有應(yīng)用節(jié)點(diǎn)執(zhí)行,數(shù)據(jù)交換集群控制中心記錄開(kāi)始執(zhí)行狀態(tài)并在本節(jié)點(diǎn)開(kāi)始執(zhí)行,當(dāng)數(shù)據(jù)交換執(zhí)行完成之后,數(shù)據(jù)交換集群控制中心再記錄結(jié)束執(zhí)行的狀態(tài)。
通過(guò)上面具體實(shí)施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實(shí)現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的具體實(shí)施方式。在公開(kāi)的實(shí)施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實(shí)現(xiàn)不同的技術(shù)方案。
除說(shuō)明書(shū)所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。