一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法與系統(tǒng)。
【背景技術(shù)】
[0002]http接口是主流的b/s架構(gòu)的應(yīng)用程序間的數(shù)據(jù)交互接口,基于http協(xié)議,使用xml或json做為數(shù)據(jù)交互格式,實(shí)現(xiàn)兩個或多個獨(dú)立系統(tǒng)間的數(shù)據(jù)交互,使用.netwebfrom的應(yīng)用程序,一般的http接口實(shí)現(xiàn)方式如下圖1所示;
這種http接口實(shí)現(xiàn)方式的缺點(diǎn)是:
1.接口地址與接口的具體實(shí)現(xiàn)藕合,新增、修改接口的實(shí)現(xiàn)不夠靈活,對接口的管理控制不方便。
[0003]2.隨著業(yè)務(wù)的發(fā)展及變更,接口需要做一些優(yōu)化調(diào)整,經(jīng)常泄及一些接口需要批量請求,這時(shí)需要對接口進(jìn)行合并,現(xiàn)有的實(shí)現(xiàn)方式只能是新增一個新的接口,編寫代碼合并要合并的接口的邏輯,輸出新的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0004]為了克服上述技術(shù)問題,本發(fā)明的目的為了實(shí)現(xiàn)接口的動態(tài)發(fā)布,讓接口的發(fā)布與修改可以通過配置而不是硬編碼編譯更新的方式進(jìn)行,實(shí)現(xiàn)多個接口通過訪問參數(shù)的組可即可實(shí)現(xiàn)合并,而不需要二次開發(fā)。
[0005]本發(fā)明采用的技術(shù)方案是:
一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法,包括以下步驟
A)為所有參與數(shù)據(jù)交換的目標(biāo)接口定義統(tǒng)一的訪問代理地址URL;
B)向訪問代理地址URL提交目標(biāo)接口的請求數(shù)據(jù);
C)訪問代理地址URL接到該請求,通過CMD命令到配置文件中查找對應(yīng)該請求的具體實(shí)現(xiàn)類,并反射該具體實(shí)現(xiàn)類;
D)執(zhí)行所反射該具體實(shí)現(xiàn)類,從具體實(shí)現(xiàn)程序集中獲取該具體實(shí)現(xiàn)類的實(shí)現(xiàn)方法程序;
E)利用D中所述實(shí)現(xiàn)方法程序發(fā)布目標(biāo)接口。
[0006]進(jìn)一步,所述步驟C中配置文件中具體實(shí)現(xiàn)類具有相應(yīng)的配置項(xiàng),通過添加配置項(xiàng)并布署相應(yīng)的具體實(shí)現(xiàn)程序集來增加或修改接口。
[0007]所述步驟B中一次提交多個目標(biāo)接口請求。
[0008]本發(fā)明還包括與上述方法同一發(fā)明構(gòu)思的技術(shù)方案,即一種基于反射機(jī)制的Http接口動態(tài)發(fā)布系統(tǒng),包括
輸入請求模塊,供調(diào)用者提交目標(biāo)接口的請求數(shù)據(jù);
接口代理模塊,該模塊為所有參與數(shù)據(jù)交換的目標(biāo)接口定義統(tǒng)一的訪問代理地址URL,并負(fù)責(zé):接收輸入請求模塊的請求,通過CMD命令到其配置文件中查找對應(yīng)該請求的具體實(shí)現(xiàn)類,反射該具體實(shí)現(xiàn)類并執(zhí)行,獲取目標(biāo)接口的具體實(shí)現(xiàn)方法程序,然后發(fā)布目標(biāo)接Π ;
具體實(shí)現(xiàn)程序集模塊,包括若干接口的具體實(shí)現(xiàn)程序集,用于提供接口代理模塊所需的具體實(shí)現(xiàn)方法程序。
[0009]進(jìn)一步,所述接口代理模塊的配置文件中具體實(shí)現(xiàn)類具有相應(yīng)的配置項(xiàng),通過添加配置項(xiàng)并布署相應(yīng)的具體實(shí)現(xiàn)程序集來增加或修改接口。
[0010]進(jìn)一步,所述輸入請求模塊一次提交多個目標(biāo)接口請求可由所述接口代理模塊20合并多個目標(biāo)接口。
[0011]本發(fā)明的有益效果是:
1、通過配置文件而不是硬編碼來發(fā)布接口,解藕接口的Url地址與具體實(shí)現(xiàn),比一般實(shí)現(xiàn)更靈活,不需要對原來代碼做改動或重新編譯,即可增量發(fā)布新接口,或修改原來接口的實(shí)現(xiàn)。
[0012]2、一般的方案,如果要請求多個接口,需要進(jìn)行多次http請求,或改動程序,將多個接口合并成一個新的接口,這種方案不需要改動服務(wù)端代碼即可實(shí)現(xiàn)一個http請求請求多個接口,請求方對請求參數(shù)采用組合的方式即可實(shí)現(xiàn)一次請求任意多個服務(wù)端接口,對接口的設(shè)計(jì)更靈活,更好擴(kuò)展。
【附圖說明】
[0013]下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】做進(jìn)一步的說明。
[0014]圖1是傳統(tǒng)http接口動態(tài)實(shí)現(xiàn)方式的流程圖;
圖2是本發(fā)明基于反射機(jī)制的Http接口動態(tài)發(fā)布系統(tǒng)架構(gòu)圖。
【具體實(shí)施方式】
[0015]參考圖2所示,為本發(fā)明的一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法,包括以下步驟
A)為所有參與數(shù)據(jù)交換的目標(biāo)接口定義統(tǒng)一的訪問代理地址URL;
B)向訪問代理地址URL提交目標(biāo)接口的請求數(shù)據(jù);
C)訪問代理地址URL接到該請求,通過CMD命令到配置文件中查找對應(yīng)該請求的具體實(shí)現(xiàn)類,并反射該具體實(shí)現(xiàn)類;
D)執(zhí)行所反射該具體實(shí)現(xiàn)類,從具體實(shí)現(xiàn)程序集中獲取該具體實(shí)現(xiàn)類的實(shí)現(xiàn)方法程序;
E)利用D中所述實(shí)現(xiàn)方法程序發(fā)布目標(biāo)接口。
[0016]本發(fā)明還包括與上述方法同一發(fā)明構(gòu)思的技術(shù)方案,即一種基于反射機(jī)制的Http接口動態(tài)發(fā)布系統(tǒng),包括
輸入請求模塊10,供調(diào)用者提交目標(biāo)接口的請求數(shù)據(jù);
接口代理模塊20,該模塊為所有參與數(shù)據(jù)交換的目標(biāo)接口定義統(tǒng)一的訪問代理地址URL,并負(fù)責(zé):接收輸入請求模塊10的請求,通過CMD命令到其配置文件中查找對應(yīng)該請求的具體實(shí)現(xiàn)類,反射該具體實(shí)現(xiàn)類并執(zhí)行,獲取目標(biāo)接口的具體實(shí)現(xiàn)方法程序,然后發(fā)布目標(biāo)接口 ; 具體實(shí)現(xiàn)程序集模塊30,包括若干接口的具體實(shí)現(xiàn)程序集,用于提供接口代理模塊20所需的具體實(shí)現(xiàn)方法程序。
[0017]為了更充分的理解本發(fā)明,特提供應(yīng)用實(shí)例,如下:
所有接口提供統(tǒng)一的訪問代理URL,如http://***/interface, ashx ;調(diào)用者通過get或post請求,
請求參數(shù)格式如下: request={
"CMD":GetName,
……Il具體內(nèi)容 }
訪問代理地址URL接到該請求,通過CMD到配置文件中查找對應(yīng)的具體實(shí)現(xiàn)類,反射該類,配置文件如下:
<group>
<Operate CMD=//CheckPower^ Title="檢測權(quán)限 〃ClassName="NengLong.CMP.HTTP Interface.Personage.WebHttp.CheckPower, NengLong.CMP.BaseHTTPInterface, Vers1n=2.0.0.0, Culture=neutral, PublicKeyToken=null〃>〈/Operate)
</group)
然后通過反射執(zhí)行配置的方法,具體的實(shí)現(xiàn)方法可以來自不同的程序集,實(shí)現(xiàn)代理與實(shí)現(xiàn)的松藕合。
[0018]方法執(zhí)行返回應(yīng)答數(shù)據(jù),如下:{
“CMD”:GetName“ResultState”:1
……Il應(yīng)答內(nèi)容 }
要增加或修改接口,只需要添加配置項(xiàng),并布署相應(yīng)的具體實(shí)現(xiàn)程序集即可,無需修改原來的程序集,并可以在代理中對請求者進(jìn)行統(tǒng)一驗(yàn)證,對不同的請求者調(diào)用不同的實(shí)現(xiàn)方法,實(shí)現(xiàn)非常靈活的響應(yīng)機(jī)制。
[0019]如果需要合并多個接口,不需要修改實(shí)現(xiàn)的代碼,請求者只需要一次請求多個即可,請求參數(shù)如下:
request=[{
〃CMD〃: ” CheckPower’’,
……Il具體內(nèi)容 },{
"CMDYGetName'
……Il具體內(nèi)容 }]
就可以在同一個http請求中同時(shí)請求兩個接口的數(shù)據(jù),返回[{
“CMD”: ”CheckPower”
“ResultState”:1
……Il應(yīng)答內(nèi)容 },
{
“CMD”: “ GetName”
“ResultState”:1
……Il應(yīng)答內(nèi)容 }]
從而實(shí)現(xiàn)傳統(tǒng)方法無法實(shí)現(xiàn)的批量請求方式。
[0020]本發(fā)明通過定義通用的接口輸入輸出協(xié)議,使用配置文件的形式配置要發(fā)布的接口,通過.net反射機(jī)制動態(tài)加載接口的具體實(shí)現(xiàn),進(jìn)行邏輯處理并返回結(jié)果集給調(diào)用者,實(shí)現(xiàn)了接口的動態(tài)添加、修改、刪除,實(shí)現(xiàn)了模塊化熱拔插的發(fā)布方式,提高了可維護(hù)性,提高了系統(tǒng)的發(fā)布上線效率。
[0021]以上所述僅為本發(fā)明的優(yōu)先實(shí)施方式,本發(fā)明并不限定于上述實(shí)施方式,只要以基本相同手段實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案都屬于本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法,其特征在于:包括以下步驟 A)為所有參與數(shù)據(jù)交換的目標(biāo)接口定義統(tǒng)一的訪問代理地址URL; B)向訪問代理地址URL提交目標(biāo)接口的請求數(shù)據(jù); C)訪問代理地址URL接到該請求,通過CMD命令到配置文件中查找對應(yīng)該請求的具體實(shí)現(xiàn)類,并反射該具體實(shí)現(xiàn)類; D)執(zhí)行所反射該具體實(shí)現(xiàn)類,從具體實(shí)現(xiàn)程序集中獲取該具體實(shí)現(xiàn)類的實(shí)現(xiàn)方法程序; E)利用D中所述實(shí)現(xiàn)方法程序發(fā)布目標(biāo)接口。
2.根據(jù)權(quán)利要求1所述的一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法,其特征在于:所述步驟C中配置文件中具體實(shí)現(xiàn)類具有相應(yīng)的配置項(xiàng),通過添加配置項(xiàng)并布署相應(yīng)的具體實(shí)現(xiàn)程序集來增加或修改接口。
3.根據(jù)權(quán)利要求1所述的一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法,其特征在于:所述步驟B中一次提交多個目標(biāo)接口請求。
4.一種基于反射機(jī)制的Http接口動態(tài)發(fā)布系統(tǒng),其特征在于:包括 輸入請求模塊(10),供調(diào)用者提交目標(biāo)接口的請求數(shù)據(jù); 接口代理模塊(20),該模塊為所有參與數(shù)據(jù)交換的目標(biāo)接口定義統(tǒng)一的訪問代理地址URL,并負(fù)責(zé):接收輸入請求模塊(10)的請求,通過CMD命令到其配置文件中查找對應(yīng)該請求的具體實(shí)現(xiàn)類,反射該具體實(shí)現(xiàn)類并執(zhí)行,獲取目標(biāo)接口的具體實(shí)現(xiàn)方法程序,然后發(fā)布目標(biāo)接口 ; 具體實(shí)現(xiàn)程序集模塊(30),包括若干接口的具體實(shí)現(xiàn)程序集,用于提供接口代理模塊(20)所需的具體實(shí)現(xiàn)方法程序。
5.根據(jù)權(quán)利要求4所述的一種基于反射機(jī)制的Http接口動態(tài)發(fā)布系統(tǒng),其特征在于:所述接口代理模塊(20)的配置文件中具體實(shí)現(xiàn)類具有相應(yīng)的配置項(xiàng),通過添加配置項(xiàng)并布署相應(yīng)的具體實(shí)現(xiàn)程序集來增加或修改接口。
6.根據(jù)權(quán)利要求4所述的一種基于反射機(jī)制的Http接口動態(tài)發(fā)布系統(tǒng),其特征在于:所述輸入請求模塊(10) —次提交多個目標(biāo)接口請求可由所述接口代理模塊(20)合并多個目標(biāo)接口。
【專利摘要】本發(fā)明公開了一種基于反射機(jī)制的Http接口動態(tài)發(fā)布方法與系統(tǒng)通過定義通用的接口輸入輸出協(xié)議,使用配置文件的形式配置要發(fā)布的接口,通過.net反射機(jī)制動態(tài)加載接口的具體實(shí)現(xiàn),進(jìn)行邏輯處理并返回結(jié)果集給調(diào)用者,實(shí)現(xiàn)了接口的動態(tài)添加、修改、刪除,實(shí)現(xiàn)了模塊化熱拔插的發(fā)布方式,提高了可維護(hù)性,提高了系統(tǒng)的發(fā)布上線效率。
【IPC分類】H04L29-08
【公開號】CN104580501
【申請?zhí)枴緾N201510036679
【發(fā)明人】余敬龍
【申請人】廣東能龍教育股份有限公司
【公開日】2015年4月29日
【申請日】2015年1月23日