本發(fā)明涉及接口管理技術(shù)領(lǐng)域,特別是涉及一種C#接口數(shù)據(jù)交互管理系統(tǒng)。
背景技術(shù):
當(dāng)前應(yīng)用系統(tǒng)在進(jìn)行系統(tǒng)對(duì)接、數(shù)據(jù)交互時(shí),主要采用接口直接引用的方式,通過與應(yīng)用系統(tǒng)上的接口唯一對(duì)應(yīng)的代理類傳輸數(shù)據(jù)到第三方系統(tǒng),其中,一個(gè)接口對(duì)應(yīng)一個(gè)第三方系統(tǒng)?,F(xiàn)有技術(shù)中,接口的代理類在應(yīng)用系統(tǒng)中,并且接口的代理類中包含傳輸數(shù)據(jù)所必須的任務(wù)信息,所以在進(jìn)行數(shù)據(jù)交互時(shí),只能通過與接口所對(duì)應(yīng)的代理類將數(shù)據(jù)傳輸給相應(yīng)的第三方系統(tǒng),當(dāng)應(yīng)用系統(tǒng)與多個(gè)第三方系統(tǒng)對(duì)接時(shí),就需要有多個(gè)代理類來完成數(shù)據(jù)傳輸,因此現(xiàn)有技術(shù)中需要對(duì)多個(gè)接口及代理類進(jìn)行分散管理。當(dāng)應(yīng)用系統(tǒng)需要在原來的基礎(chǔ)上添加與其對(duì)接的第三方系統(tǒng)時(shí),就需要對(duì)原系統(tǒng)的代碼進(jìn)行修改,以便生成與該新增的接口對(duì)應(yīng)的代理類,實(shí)現(xiàn)與新增的第三方系統(tǒng)之間的數(shù)據(jù)傳輸。基于上述情況,現(xiàn)有技術(shù)中不易于對(duì)接口進(jìn)行管理,使工作人員的工作繁瑣、降低了工作效率。
因此,如何提供一種解決上述技術(shù)問題的C#接口數(shù)據(jù)交互管理系統(tǒng)成為本領(lǐng)域的技術(shù)人員目前需要解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種C#接口數(shù)據(jù)交互管理系統(tǒng),在使用的過程中使接口管理變得更加方便,實(shí)現(xiàn)了接口代理類與應(yīng)用系統(tǒng)的分離,降低了系統(tǒng)耦合性,提高了系統(tǒng)的可運(yùn)維度和工作人員的工作效率。
為解決上述技術(shù)問題,本發(fā)明提供了一種C#接口數(shù)據(jù)交互管理系統(tǒng),所述系統(tǒng)包括:
任務(wù)管理模塊,用于對(duì)任務(wù)進(jìn)行配置得到任務(wù)描述信息,所述任務(wù)描述信息包括第一任務(wù)關(guān)鍵字以及時(shí)間表達(dá)式;還用于對(duì)第三方系統(tǒng)預(yù)先發(fā)送的接口地址進(jìn)行登記、并預(yù)先將應(yīng)用系統(tǒng)中的與所述任務(wù)對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類注入至任務(wù)調(diào)度模塊中的IOC容器內(nèi);
所述任務(wù)調(diào)度模塊,用于依據(jù)所述時(shí)間表達(dá)式確定并獲取待發(fā)送任務(wù),并依據(jù)所述待發(fā)送任務(wù)的第一任務(wù)關(guān)鍵字從所述IOC容器內(nèi)獲取所述待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類;并依據(jù)所述待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類從所述應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第一任務(wù)數(shù)據(jù);
任務(wù)執(zhí)行模塊,用于接收所述第一任務(wù)數(shù)據(jù)并將所述第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至與所述接口地址對(duì)應(yīng)的第三方系統(tǒng)。
優(yōu)選的,所述時(shí)間表達(dá)式為Cron時(shí)間表達(dá)式。
優(yōu)選的,所述任務(wù)調(diào)度模塊包括:
所述IOC容器,用于接收所述第一任務(wù)實(shí)現(xiàn)類;
生產(chǎn)線程,用于對(duì)所有任務(wù)進(jìn)行輪詢并依據(jù)所述時(shí)間表達(dá)式判斷當(dāng)前時(shí)間是否有需要發(fā)送的任務(wù),如果有,則將所述任務(wù)放入待發(fā)送列表中,否則,重復(fù)判斷;
獲取線程,用于從所述待發(fā)送列表中確定并獲取所述待發(fā)送任務(wù),并依據(jù)所述待發(fā)送任務(wù)的第一任務(wù)關(guān)鍵字從所述IOC容器內(nèi)獲取所述待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類,并依據(jù)所述第一任務(wù)實(shí)現(xiàn)類從所述應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第一任務(wù)數(shù)據(jù)至任務(wù)執(zhí)行模塊。
優(yōu)選的,所述任務(wù)描述信息還包括用于當(dāng)多個(gè)所述任務(wù)對(duì)應(yīng)的發(fā)送時(shí)間均相同時(shí)確定發(fā)送順序的優(yōu)先級(jí);
則從所述待發(fā)送列表中確定并獲取所述待發(fā)送任務(wù)的過程為:
依據(jù)所述優(yōu)先級(jí)從所述待發(fā)送列表中確定并獲取所述待發(fā)送任務(wù)。
優(yōu)選的,所述任務(wù)執(zhí)行模塊,還用于當(dāng)成功發(fā)送所述第一任務(wù)數(shù)據(jù)后回寫發(fā)送結(jié)果。
優(yōu)選的,所述任務(wù)調(diào)度模塊還包括探測(cè)線程,用于判斷所述接口地址的狀態(tài)是否正常,如果是,則觸發(fā)所述獲取線程進(jìn)行所述第一任務(wù)數(shù)據(jù)的發(fā)送,否則,不觸發(fā)。
優(yōu)選的,所述探測(cè)線程,用于發(fā)送心跳包至與所述接口地址對(duì)應(yīng)的第三方系統(tǒng),并判斷是否在預(yù)設(shè)時(shí)間內(nèi)接受到所述第三方系統(tǒng)的返回結(jié)果,如果是,則確定所述接口地址的狀態(tài)正常,否則,確定所述接口地址的狀態(tài)異常。
優(yōu)選的,所述任務(wù)執(zhí)行模塊包括:
判斷線程,用于接收所述第一任務(wù)數(shù)據(jù),且當(dāng)所述第一任務(wù)數(shù)據(jù)正常時(shí)將所述第一任務(wù)數(shù)據(jù)發(fā)送出去;
發(fā)送線程,用于接收并通過所述統(tǒng)一的代理類發(fā)送所述第一任務(wù)數(shù)據(jù)至與所述接口地址對(duì)應(yīng)的第三方系統(tǒng),并當(dāng)所述第一任務(wù)數(shù)據(jù)發(fā)送成功后發(fā)送回調(diào)指令;
回調(diào)線程,用于依據(jù)所述回調(diào)指令回寫所述發(fā)送結(jié)果。
優(yōu)選的,所述任務(wù)管理模塊,還用于發(fā)送所述應(yīng)用系統(tǒng)的被動(dòng)接收接口地址至第三方系統(tǒng)、接收所述第三方系統(tǒng)發(fā)送的任務(wù)參數(shù),所述任務(wù)參數(shù)包括第二任務(wù)關(guān)鍵字;
所述任務(wù)調(diào)度模塊,還用于依據(jù)所述第二任務(wù)關(guān)鍵字從所述IOC容器中獲取相應(yīng)的第二任務(wù)實(shí)現(xiàn)類、并依據(jù)所述第二任務(wù)實(shí)現(xiàn)類從所述應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第二任務(wù)數(shù)據(jù);
所述任務(wù)執(zhí)行模塊,還用于接收所述第二任務(wù)數(shù)據(jù)并將所述第二任務(wù)數(shù)據(jù)返回至所述第三方系統(tǒng)。
優(yōu)選的,所述任務(wù)參數(shù)為String類型的任務(wù)參數(shù)。
本發(fā)明提供了一種C#接口數(shù)據(jù)交互管理系統(tǒng),該系統(tǒng)包括:任務(wù)管理模塊,用于對(duì)任務(wù)進(jìn)行配置得到任務(wù)描述信息,任務(wù)描述信息包括第一任務(wù)關(guān)鍵字以及時(shí)間表達(dá)式;還用于對(duì)第三方系統(tǒng)預(yù)先發(fā)送的接口地址進(jìn)行登記、并預(yù)先將應(yīng)用系統(tǒng)中的與任務(wù)對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類注入至任務(wù)調(diào)度模塊中的IOC容器內(nèi);任務(wù)調(diào)度模塊,用于依據(jù)時(shí)間表達(dá)式確定并獲取待發(fā)送任務(wù),并依據(jù)待發(fā)送任務(wù)的第一任務(wù)關(guān)鍵字從IOC容器內(nèi)獲取待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類;并依據(jù)待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類從應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第一任務(wù)數(shù)據(jù);任務(wù)執(zhí)行模塊,用于接收第一任務(wù)數(shù)據(jù)并將第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至與接口地址對(duì)應(yīng)的第三方系統(tǒng)。
本發(fā)明提供的接口數(shù)據(jù)交互管理系統(tǒng)實(shí)現(xiàn)了對(duì)應(yīng)用系統(tǒng)與第三方系統(tǒng)的數(shù)據(jù)交互的接口進(jìn)行統(tǒng)一管理,只需要一個(gè)統(tǒng)一的代理類,并且當(dāng)應(yīng)用系統(tǒng)需要在原來的基礎(chǔ)上添加與其對(duì)接的第三方系統(tǒng)時(shí),只需要通過任務(wù)管理模塊對(duì)新增的第三方系統(tǒng)所提供的接口地址進(jìn)行登記,且將對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類預(yù)先注入IOC容器中即可。本發(fā)明所提供的接口數(shù)據(jù)交互管理系統(tǒng)在使用的過程中使接口管理變得更加方便,實(shí)現(xiàn)了接口代理類與應(yīng)用系統(tǒng)的分離,降低了系統(tǒng)耦合性,提高了系統(tǒng)的可運(yùn)維度和工作人員的工作效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)現(xiàn)有技術(shù)和實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種C#接口數(shù)據(jù)交互管理系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明提供的另一種C#接口數(shù)據(jù)交互管理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種C#接口數(shù)據(jù)交互管理系統(tǒng),在使用的過程中使接口管理變得更加方便,實(shí)現(xiàn)了接口代理類與應(yīng)用系統(tǒng)的分離,降低了系統(tǒng)耦合性,提高了系統(tǒng)的可運(yùn)維度和工作人員的工作效率。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參照?qǐng)D1,圖1為本發(fā)明提供的一種C#接口數(shù)據(jù)交互管理系統(tǒng)的結(jié)構(gòu)示意圖。
該系統(tǒng)包括:
任務(wù)管理模塊1,用于對(duì)任務(wù)進(jìn)行配置得到任務(wù)描述信息,任務(wù)描述信息包括第一任務(wù)關(guān)鍵字以及時(shí)間表達(dá)式;還用于對(duì)第三方系統(tǒng)預(yù)先發(fā)送的接口地址進(jìn)行登記、并預(yù)先將應(yīng)用系統(tǒng)中的與任務(wù)對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類注入至任務(wù)調(diào)度模塊中的IOC容器21內(nèi);
任務(wù)調(diào)度模塊2,用于依據(jù)時(shí)間表達(dá)式確定并獲取待發(fā)送任務(wù),并依據(jù)待發(fā)送任務(wù)的第一任務(wù)關(guān)鍵字從IOC容器21內(nèi)獲取待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類;并依據(jù)待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類從應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第一任務(wù)數(shù)據(jù);
任務(wù)執(zhí)行模塊3,用于接收第一任務(wù)數(shù)據(jù)并將第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至與接口地址對(duì)應(yīng)的第三方系統(tǒng)。
具體的,該接口數(shù)據(jù)交互管理系統(tǒng)的任務(wù)管理模塊1,用于對(duì)系統(tǒng)中的任務(wù)進(jìn)行管理。對(duì)任務(wù)進(jìn)行配置得到任務(wù)描述信息,任務(wù)描述信息包括第一任務(wù)關(guān)鍵字以及時(shí)間表達(dá)式,其中,時(shí)間表達(dá)式是主動(dòng)任務(wù)必須配置的信息;當(dāng)執(zhí)行主動(dòng)任務(wù)時(shí),需要第三方系統(tǒng)提供一個(gè)接收數(shù)據(jù)的WebService接口,定義格式為requestService(string args),并對(duì)第三方系統(tǒng)預(yù)先提供的與其自身對(duì)應(yīng)的接口地址進(jìn)行登記,并在啟動(dòng)任務(wù)發(fā)送之前預(yù)先將應(yīng)用系統(tǒng)中的與該任務(wù)對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類注入至任務(wù)調(diào)度模塊2中的IOC容器21中,具體的,接口數(shù)據(jù)交互管理系統(tǒng)提供一個(gè)任務(wù)注入接口,該任務(wù)注入接口對(duì)應(yīng)一個(gè)注入方法,當(dāng)接口數(shù)據(jù)交互管理系統(tǒng)啟動(dòng)時(shí)會(huì)通過任務(wù)注入接口掃描第一任務(wù)實(shí)現(xiàn)類,并調(diào)用注入方法實(shí)現(xiàn)第一任務(wù)實(shí)現(xiàn)類的注入。
需要說明的是,每個(gè)接口繼承并實(shí)現(xiàn)該接口,每個(gè)實(shí)現(xiàn)對(duì)應(yīng)一個(gè)接口服務(wù),接口實(shí)現(xiàn)后該管理系統(tǒng)對(duì)接口進(jìn)行登記。
還需要說明的是,任務(wù)描述信息不僅限于上述三種信息,還可以包括其他信息,本發(fā)明在此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明的目的即可。
具體的,任務(wù)調(diào)度模塊2主要依據(jù)時(shí)間表達(dá)式確定并獲取待發(fā)送任務(wù),由于任務(wù)與其任務(wù)實(shí)現(xiàn)類是通過任務(wù)關(guān)鍵字建立聯(lián)系的,所以獲取待發(fā)送任務(wù)后再依據(jù)該待發(fā)送任務(wù)對(duì)應(yīng)的第一任務(wù)關(guān)鍵字從IOC容器21中獲取與該第一任務(wù)關(guān)鍵字對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類,也即該待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類,根據(jù)第一任務(wù)實(shí)現(xiàn)類的路徑信息反射得到最終的實(shí)例對(duì)象,然后調(diào)用實(shí)例對(duì)象的Excute()方法從應(yīng)用系統(tǒng)中獲取該任務(wù)對(duì)應(yīng)的第一任務(wù)數(shù)據(jù),并將第一任務(wù)數(shù)據(jù)發(fā)送至任務(wù)執(zhí)行模塊3。
任務(wù)執(zhí)行模塊3接收任務(wù)調(diào)度模塊2發(fā)送的第一任務(wù)數(shù)據(jù),并將該第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至與接口地址對(duì)應(yīng)的第三方系統(tǒng),以實(shí)現(xiàn)應(yīng)用系統(tǒng)與第三方系統(tǒng)之間的數(shù)據(jù)交互。
本發(fā)明提供了一種C#接口數(shù)據(jù)交互管理系統(tǒng),該系統(tǒng)包括:任務(wù)管理模塊,用于對(duì)任務(wù)進(jìn)行配置得到任務(wù)描述信息,任務(wù)描述信息包括第一任務(wù)關(guān)鍵字以及時(shí)間表達(dá)式;還用于對(duì)第三方系統(tǒng)預(yù)先發(fā)送的接口地址進(jìn)行登記、并預(yù)先將應(yīng)用系統(tǒng)中的與任務(wù)對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類注入至任務(wù)調(diào)度模塊中的IOC容器內(nèi);任務(wù)調(diào)度模塊,用于依據(jù)時(shí)間表達(dá)式確定并獲取待發(fā)送任務(wù),并依據(jù)待發(fā)送任務(wù)的第一任務(wù)關(guān)鍵字從IOC容器內(nèi)獲取待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類;并依據(jù)待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類從應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第一任務(wù)數(shù)據(jù);任務(wù)執(zhí)行模塊,用于接收第一任務(wù)數(shù)據(jù)并將第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至與接口地址對(duì)應(yīng)的第三方系統(tǒng)。
本發(fā)明提供的接口數(shù)據(jù)交互管理系統(tǒng)實(shí)現(xiàn)了對(duì)應(yīng)用系統(tǒng)與第三方系統(tǒng)的數(shù)據(jù)交互的接口進(jìn)行統(tǒng)一管理,只需要一個(gè)統(tǒng)一的代理類,并且當(dāng)應(yīng)用系統(tǒng)需要在原來的基礎(chǔ)上添加與其對(duì)接的第三方系統(tǒng)時(shí),只需要通過任務(wù)管理模塊對(duì)新增的第三方系統(tǒng)所提供的接口地址進(jìn)行登記,且將對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類預(yù)先注入IOC容器中即可。本發(fā)明所提供的接口數(shù)據(jù)交互管理系統(tǒng)在使用的過程中使接口管理變得更加方便,實(shí)現(xiàn)了接口代理類與應(yīng)用系統(tǒng)的分離,降低了系統(tǒng)耦合性,提高了系統(tǒng)的可運(yùn)維度和工作人員的工作效率。
請(qǐng)參照?qǐng)D2,圖2為本發(fā)明提供的另一種C#接口數(shù)據(jù)交互管理系統(tǒng)的結(jié)構(gòu)示意圖,在上述實(shí)施例的基礎(chǔ)上:
作為優(yōu)選的,時(shí)間表達(dá)式為Cron時(shí)間表達(dá)式。
當(dāng)然,時(shí)間表達(dá)式的具體形式不僅限于Cron時(shí)間表達(dá)式,還可以是其他形式的時(shí)間表達(dá)式,本發(fā)明在此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明的目的即可。
作為優(yōu)選的,任務(wù)調(diào)度模塊2包括:
IOC容器21,用于接收第一任務(wù)實(shí)現(xiàn)類;
生產(chǎn)線程22,用于對(duì)所有任務(wù)進(jìn)行輪詢并依據(jù)時(shí)間表達(dá)式判斷當(dāng)前時(shí)間是否有需要發(fā)送的任務(wù),如果有,則將任務(wù)放入待發(fā)送列表中,否則,重復(fù)判斷;
獲取線程23,用于從待發(fā)送列表中確定并獲取待發(fā)送任務(wù),并依據(jù)待發(fā)送任務(wù)的第一任務(wù)關(guān)鍵字從IOC容器21內(nèi)獲取待發(fā)送任務(wù)的第一任務(wù)實(shí)現(xiàn)類,并依據(jù)第一任務(wù)實(shí)現(xiàn)類從應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第一任務(wù)數(shù)據(jù)至任務(wù)執(zhí)行模塊3。
作為優(yōu)選的,任務(wù)描述信息還包括用于當(dāng)多個(gè)任務(wù)對(duì)應(yīng)的發(fā)送時(shí)間均相同時(shí)確定發(fā)送順序的優(yōu)先級(jí);
則從待發(fā)送列表中確定并獲取待發(fā)送任務(wù)的過程為:
依據(jù)優(yōu)先級(jí)從待發(fā)送列表中確定并獲取待發(fā)送任務(wù)。
具體的,生產(chǎn)線程22依據(jù)時(shí)間表達(dá)式對(duì)系統(tǒng)內(nèi)所有的任務(wù)進(jìn)行輪詢,并將當(dāng)前時(shí)間需要發(fā)送的任務(wù)放入待發(fā)送列表;獲取線程23從待發(fā)送列表中確定并獲取待發(fā)送任務(wù),需要說明的是,當(dāng)有多個(gè)任務(wù)所對(duì)應(yīng)的發(fā)送時(shí)間都相同時(shí),則按照任務(wù)的優(yōu)先級(jí)確定并獲取待發(fā)送任務(wù),即優(yōu)先級(jí)高的先發(fā)送,優(yōu)先級(jí)低的后發(fā)送;當(dāng)獲取線程23獲取待發(fā)送任務(wù)后,依據(jù)該待發(fā)送任務(wù)對(duì)應(yīng)的第一任務(wù)關(guān)鍵字從任務(wù)調(diào)度模塊2的IOC容器21中獲取該待發(fā)送任務(wù)對(duì)應(yīng)的第一任務(wù)實(shí)現(xiàn)類,然后再依據(jù)該第一任務(wù)實(shí)現(xiàn)類即可從應(yīng)用系統(tǒng)中獲取該任務(wù)對(duì)應(yīng)的第一任務(wù)數(shù)據(jù),根據(jù)第一任務(wù)實(shí)現(xiàn)類的路徑信息反射得到最終的實(shí)例對(duì)象,然后調(diào)用該實(shí)例對(duì)象的Excute()方法從應(yīng)用系統(tǒng)中獲取該任務(wù)對(duì)應(yīng)的第一任務(wù)數(shù)據(jù),并將第一任務(wù)數(shù)據(jù)發(fā)送至任務(wù)執(zhí)行模塊3。
作為優(yōu)選的,任務(wù)執(zhí)行模塊3,還用于當(dāng)成功發(fā)送第一任務(wù)數(shù)據(jù)后回寫發(fā)送結(jié)果。
需要說明的是,任務(wù)執(zhí)行模塊3接收獲取線程23發(fā)送的第一任務(wù)數(shù)據(jù)后,將該第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至與接口地址對(duì)應(yīng)的第三方系統(tǒng),當(dāng)?shù)谝蝗蝿?wù)數(shù)據(jù)發(fā)送成功后回寫發(fā)送結(jié)果,以便工作人員及時(shí)了解發(fā)送情況。
作為優(yōu)選的,任務(wù)調(diào)度模塊2還包括探測(cè)線程24,用于判斷接口地址的狀態(tài)是否正常,如果是,則觸發(fā)獲取線程23進(jìn)行第一任務(wù)數(shù)據(jù)的發(fā)送,否則,不觸發(fā)。
需要說明的是,為了及時(shí)了解接口地址的狀態(tài),以確保應(yīng)用系統(tǒng)與第三方系統(tǒng)之間的數(shù)據(jù)交互的正常進(jìn)行,還可以通過任務(wù)調(diào)度模塊2的探測(cè)線程24對(duì)接口地址的狀態(tài)進(jìn)行判斷,只有當(dāng)接口地址的狀態(tài)正常時(shí)才觸發(fā)獲取線程23使其將第一任務(wù)數(shù)據(jù)的發(fā)送至任務(wù)執(zhí)行模塊3,這樣可以提高數(shù)據(jù)發(fā)送成功的概率。
作為優(yōu)選的,探測(cè)線程24,用于發(fā)送心跳包至與接口地址對(duì)應(yīng)的第三方系統(tǒng),并判斷是否在預(yù)設(shè)時(shí)間內(nèi)接受到第三方系統(tǒng)的返回結(jié)果,如果是,則確定接口地址的狀態(tài)正常,否則,確定接口地址的狀態(tài)異常。
具體的,探測(cè)線程24可以通過發(fā)送心跳包至第三方系統(tǒng)來判斷第三方系統(tǒng)對(duì)應(yīng)的接口地址的狀態(tài)是否正常,具體判斷方法為:當(dāng)探測(cè)線程24在預(yù)設(shè)時(shí)間內(nèi)接收到第三方系統(tǒng)返回的返回結(jié)果時(shí)即可確定第三方系統(tǒng)能接受到所傳輸?shù)男畔?,也就是該第三方系統(tǒng)所對(duì)應(yīng)的接口地址的狀態(tài)正常;當(dāng)探測(cè)線程24沒有在預(yù)設(shè)時(shí)間內(nèi)接受到第三方系統(tǒng)返回的返回結(jié)果時(shí)即可確定第三方系統(tǒng)不能接受到所傳輸?shù)男畔ⅲ簿褪窃摰谌较到y(tǒng)所對(duì)應(yīng)的接口地址的狀態(tài)異常。
需要說明的是,探測(cè)線程24還可以通過其他方式來判斷該第三方系統(tǒng)所對(duì)應(yīng)的接口地址的狀態(tài)是否正常,其具體判斷方式本發(fā)明在此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明的目的即可。
還需要說明的是,預(yù)設(shè)時(shí)間的具體數(shù)值可以根據(jù)實(shí)際情況確定。
作為優(yōu)選的,任務(wù)執(zhí)行模塊3包括:
判斷線程31,用于接收第一任務(wù)數(shù)據(jù),且當(dāng)?shù)谝蝗蝿?wù)數(shù)據(jù)正常時(shí)將第一任務(wù)數(shù)據(jù)發(fā)送出去;
發(fā)送線程32,用于接收并通過統(tǒng)一的代理類發(fā)送第一任務(wù)數(shù)據(jù)至與接口地址對(duì)應(yīng)的第三方系統(tǒng),并當(dāng)?shù)谝蝗蝿?wù)數(shù)據(jù)發(fā)送成功后發(fā)送回調(diào)指令;
回調(diào)線程33,用于依據(jù)回調(diào)指令回寫發(fā)送結(jié)果。
具體的,任務(wù)執(zhí)行模塊3中的判斷線程31接收獲取線程23發(fā)送的第一任務(wù)數(shù)據(jù),并判斷該第一任務(wù)數(shù)據(jù)是否正常,當(dāng)該第一任務(wù)數(shù)據(jù)正常時(shí)將其發(fā)送至發(fā)送線程32,當(dāng)該第一任務(wù)數(shù)據(jù)不正常時(shí)則不發(fā)送,該過程提高了發(fā)送數(shù)據(jù)的準(zhǔn)確率;
發(fā)送線程32接收判斷線程31發(fā)送的第一任務(wù)數(shù)據(jù)后將該第一任務(wù)數(shù)據(jù)通過統(tǒng)一的代理類發(fā)送至第三方系統(tǒng),當(dāng)?shù)谝蝗蝿?wù)數(shù)據(jù)發(fā)送成功后生成并發(fā)送回調(diào)指令至回調(diào)線程33,回調(diào)線程33依據(jù)接收到的回調(diào)指令回寫發(fā)送結(jié)果;當(dāng)然,在第一任務(wù)數(shù)據(jù)發(fā)送失敗時(shí)也可以生成相應(yīng)的回調(diào)指令,并將任務(wù)發(fā)送失敗對(duì)應(yīng)的回調(diào)指令發(fā)送至回調(diào)線程33,回調(diào)線程33接收該回調(diào)指令后回寫相應(yīng)的發(fā)送結(jié)果,以便工作人員更加及時(shí)準(zhǔn)確的了解第一任務(wù)數(shù)據(jù)的發(fā)送情況。
作為優(yōu)選的,任務(wù)管理模塊1,還用于發(fā)送應(yīng)用系統(tǒng)的被動(dòng)接收接口地址至第三方系統(tǒng)、接收第三方系統(tǒng)發(fā)送的任務(wù)參數(shù),任務(wù)參數(shù)包括第二任務(wù)關(guān)鍵字;
任務(wù)調(diào)度模塊2,還用于依據(jù)第二任務(wù)關(guān)鍵字從IOC容器21中獲取相應(yīng)的第二任務(wù)實(shí)現(xiàn)類、并依據(jù)第二任務(wù)實(shí)現(xiàn)類從應(yīng)用系統(tǒng)中獲取并發(fā)送相應(yīng)的第二任務(wù)數(shù)據(jù);
任務(wù)執(zhí)行模塊3,還用于接收第二任務(wù)數(shù)據(jù)并將第二任務(wù)數(shù)據(jù)返回至第三方系統(tǒng)。
需要說明的是,當(dāng)系統(tǒng)運(yùn)行時(shí)創(chuàng)建兩個(gè)WCF通道分別用于主動(dòng)和被動(dòng)任務(wù),所以該數(shù)據(jù)交互管理系統(tǒng)不僅適用于對(duì)任務(wù)的主動(dòng)發(fā)送,還適用于對(duì)任務(wù)的被動(dòng)接收。
當(dāng)對(duì)任務(wù)進(jìn)行被動(dòng)接收時(shí)任務(wù)管理模塊1需要向第三方系統(tǒng)發(fā)送應(yīng)用系統(tǒng)的被動(dòng)接收接口地址;當(dāng)?shù)谌较到y(tǒng)接收到該應(yīng)用系統(tǒng)的用于被動(dòng)接收的接口地址后,第三方系統(tǒng)通過該接口地址向任務(wù)管理模塊1發(fā)送相應(yīng)任務(wù)的任務(wù)參數(shù),該任務(wù)參數(shù)主要包括第二任務(wù)關(guān)鍵字;任務(wù)管理模塊1接收第二任務(wù)關(guān)鍵字后,任務(wù)調(diào)度模塊2依據(jù)該第二任務(wù)關(guān)鍵字從任務(wù)調(diào)度模塊2的IOC容器21中獲取相應(yīng)的第二任務(wù)實(shí)現(xiàn)類,再依據(jù)該第二任務(wù)實(shí)現(xiàn)類的路徑信息反射成實(shí)例對(duì)象(如果已經(jīng)反射過不需要再次反射,保證系統(tǒng)中接口實(shí)現(xiàn)的實(shí)例對(duì)象只存在一個(gè)),然后調(diào)用該實(shí)例對(duì)象的Excute()方法從應(yīng)用系統(tǒng)中獲取相應(yīng)的第二任務(wù)數(shù)據(jù),并將該第二任務(wù)數(shù)據(jù)發(fā)送至任務(wù)執(zhí)行模塊3,任務(wù)執(zhí)行模塊3接收第二任務(wù)數(shù)據(jù)后將其通過原路經(jīng)返回至第三方系統(tǒng)。
當(dāng)然,上述任務(wù)參數(shù)不僅限于包括第二任務(wù)關(guān)鍵字,還可以包括其他參數(shù)信息,本發(fā)明在此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明的目的即可。
需要說明的是,對(duì)任務(wù)的主動(dòng)發(fā)送和被動(dòng)接收可共用接口實(shí)現(xiàn)實(shí)例對(duì)象。
作為優(yōu)選的,任務(wù)參數(shù)為String類型的任務(wù)參數(shù)。
具體的,本申請(qǐng)中的任務(wù)參數(shù)為String類型,并以xml格式定義。
當(dāng)然,任務(wù)參數(shù)的類型不僅限于String類型,還可以為其他類型,本發(fā)明在此不做特殊的限定,能實(shí)現(xiàn)本發(fā)明的目的即可。
需要說明的是,對(duì)于多個(gè)第三方系統(tǒng)與應(yīng)用系統(tǒng)進(jìn)行對(duì)接時(shí)采用分發(fā)機(jī)制,即在WCF透明通道內(nèi)配置多個(gè)第三方系統(tǒng)的接口地址,同時(shí)在透明通道內(nèi)包含一個(gè)第三方系統(tǒng)接口的統(tǒng)一代理類,每個(gè)第三方系統(tǒng)按統(tǒng)一代理類的要求條件實(shí)現(xiàn)接口int requestService(string args);當(dāng)主動(dòng)發(fā)送任務(wù)進(jìn)行數(shù)據(jù)傳輸時(shí),先從配置文件內(nèi)獲取所有第三方地址,然后以接口地址為參數(shù)實(shí)例化第三方系統(tǒng)接口代理,調(diào)用requestService(string args)方法傳輸數(shù)據(jù)并獲取返回結(jié)果。
該數(shù)據(jù)交互接口管理系統(tǒng)部署安裝獨(dú)立,不依賴、不影響應(yīng)用系統(tǒng)的運(yùn)行;并且接口分為主動(dòng)發(fā)送和被動(dòng)接收兩種方式,兩者可隨意切換;添加和管理接口可動(dòng)態(tài)配置,不影響軟件正常運(yùn)行,可以動(dòng)態(tài)裝載和卸載。
還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。