本技術(shù)涉及車輛軟件架構(gòu),尤其涉及一種軟件組件的代理方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、soa(service-oriented?architecture,面向服務(wù)的架構(gòu))是一種軟件設(shè)計(jì)和軟件架構(gòu)模式,它將應(yīng)用程序的不同服務(wù)通過定義良好的接口和協(xié)議進(jìn)行組合。這些服務(wù)是獨(dú)立的、可重用的,它們可以跨多個(gè)系統(tǒng)和組織進(jìn)行交互。soa的目標(biāo)是提高軟件系統(tǒng)的靈活性、可擴(kuò)展性和可維護(hù)性。
2、其中,對(duì)于應(yīng)用層功能的實(shí)現(xiàn),其通過atomic?swc(atomic?software?componen,原子軟件組件)實(shí)現(xiàn),一般一個(gè)功能服務(wù)可對(duì)應(yīng)一個(gè)原子軟件組件,而該原子軟件組件與外部服務(wù)器的數(shù)據(jù)交互則依賴于composition?swc(組合軟件組件)。其中,需要將原子軟件組件的端口代理到組合軟件組件外部端口,以使原子軟件組件直接通過該組合軟件組件的外部端口與外部控制器進(jìn)行數(shù)據(jù)交互。
3、相關(guān)技術(shù)中,在對(duì)原子軟件組件的端口進(jìn)行代理時(shí),一般由架構(gòu)設(shè)計(jì)工程師對(duì)每一個(gè)在組合軟件組件實(shí)例化后的原子軟件組件進(jìn)行端口檢查,通過查詢api(applicationprogramming?interface,應(yīng)用程序編程接口)服務(wù)詳表中服務(wù)的通信行為來對(duì)該端口在工具中進(jìn)行手動(dòng)代理。
4、然而,上述手動(dòng)代理的方式整個(gè)過程雖然是有可行性的,但是soa架構(gòu)設(shè)計(jì)需要開發(fā)的服務(wù)有成百上千個(gè),每個(gè)服務(wù)又有1到幾十上百個(gè)不等的端口,因此在代理工作中,其工作量較為龐大,且容易出現(xiàn)失誤,影響用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供了一種軟件組件的代理方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì),以解決現(xiàn)有技術(shù)中手動(dòng)將原子軟件組件的端口代理至組合軟件組件的方法工作量較為龐大,且容易出現(xiàn)失誤,影響用戶體驗(yàn)的技術(shù)問題。
2、第一方面,本技術(shù)提供了一種軟件組件的代理方法,所述方法包括:
3、獲取預(yù)設(shè)的架構(gòu)設(shè)計(jì)模組生成的代理文檔,所述代理文檔包括預(yù)設(shè)控制器對(duì)應(yīng)的組合軟件組件、所述預(yù)設(shè)控制器包括的多個(gè)原子軟件組件;
4、對(duì)所述代理文檔進(jìn)行解析,得到包含多個(gè)所述原子軟件組件的端口信息的端口數(shù)據(jù)庫(kù);
5、獲取通信行為匯總表,所述通信行為匯總表包括所述預(yù)設(shè)控制器與其他控制器之間的通信行為;
6、根據(jù)所述通信行為匯總表,從所述端口數(shù)據(jù)庫(kù)中確定待代理端口,并為所述待代理端口增加與所述組合軟件組件的通信端口之間的代理連線,以使所述待代理端口通過所述通信端口與所述其他控制器進(jìn)行通信。
7、作為一種可選的實(shí)現(xiàn)方式,對(duì)所述代理文檔進(jìn)行解析,得到包含多個(gè)所述原子軟件組件的端口信息的端口數(shù)據(jù)庫(kù),包括:
8、通過預(yù)設(shè)的解析算法對(duì)所述代理文檔進(jìn)行解析,得到所述組合軟件組件的組件信息,以及全部所述原子軟件組件中,每一所述原子軟件組件對(duì)應(yīng)的端口信息;
9、根據(jù)所述組件信息,將待代理的原子軟件組件對(duì)應(yīng)的端口信息寫入預(yù)設(shè)的初始端口數(shù)據(jù)庫(kù),得到所述端口數(shù)據(jù)庫(kù)。
10、作為一種可選的實(shí)現(xiàn)方式,所述組件信息包括每一原子軟件組件對(duì)應(yīng)的實(shí)例,以及所述實(shí)例與所述原子軟件組件之間的引用關(guān)系;
11、根據(jù)所述組件信息,將待代理的原子軟件組件對(duì)應(yīng)的端口信息寫入預(yù)設(shè)的初始端口數(shù)據(jù)庫(kù),得到所述端口數(shù)據(jù)庫(kù),包括:
12、根據(jù)所述組件信息,遍歷所述組合軟件組件包括的每一實(shí)例;
13、針對(duì)遍歷到的每一實(shí)例,根據(jù)所述實(shí)例對(duì)應(yīng)的引用關(guān)系確定所述實(shí)例對(duì)應(yīng)的目標(biāo)原子軟件組件;
14、確定所述目標(biāo)原子軟件組件是否存在預(yù)設(shè)的引子標(biāo)簽,所述引子標(biāo)簽用于表征對(duì)應(yīng)的原子軟件組件為引入的其他控制器的虛擬組件;
15、在確定所述目標(biāo)原子軟件組件不存在所述引子標(biāo)簽的情況下,將所述目標(biāo)原子軟件組件的端口信息存儲(chǔ)至所述初始端口數(shù)據(jù)庫(kù);
16、在對(duì)所述組合軟件組件包括的全部實(shí)例遍歷完成后,得到所述端口數(shù)據(jù)庫(kù)。
17、作為一種可選的實(shí)現(xiàn)方式,所述組件信息包括所述組合軟件組件的代理連線信息,所述代理連線信息包括所述原子軟件組件的端口、所述組合軟件組件的通信端口,以及兩者之間的代理信息;
18、根據(jù)所述通信行為匯總表,從所述端口數(shù)據(jù)庫(kù)中確定待代理端口,包括:
19、根據(jù)所述通信行為匯總表,從所述端口數(shù)據(jù)庫(kù)中查詢當(dāng)前的全部代理端口;其中,所述代理端口包括待代理端口和已代理端口;
20、根據(jù)所述代理連線信息,從全部所述代理端口中,確定待代理端口。
21、作為一種可選的實(shí)現(xiàn)方式,獲取通信行為匯總表,包括:
22、對(duì)所述預(yù)設(shè)控制器對(duì)應(yīng)的服務(wù)詳情表進(jìn)行解析,得到所述預(yù)設(shè)控制器與至少一個(gè)所述其他控制器之間的通信服務(wù)和通信關(guān)系;其中,所述通信關(guān)系用于表征在所述通信服務(wù)中所述預(yù)設(shè)控制器與所述其他控制器之間的發(fā)送方和接收方之間的關(guān)系;
23、根據(jù)所述通信服務(wù)和所述通信關(guān)系,生成通信行為匯總表。
24、作為一種可選的實(shí)現(xiàn)方式,根據(jù)所述通信行為匯總表,從所述端口數(shù)據(jù)庫(kù)中查詢當(dāng)前的全部代理端口,包括:
25、遍歷所述端口數(shù)據(jù)庫(kù)中的全部端口;
26、針對(duì)遍歷到的每一端口,確定所述端口的端口屬性,所述端口屬性包括接收方屬性或發(fā)送方屬性;
27、查詢所述端口所屬的通信服務(wù)名稱;
28、根據(jù)所述通信服務(wù)名稱、所述端口屬性,以及所述預(yù)設(shè)控制器的控制器名稱,從所述通信行為匯總表中查詢目標(biāo)通信方;
29、在確定所述目標(biāo)通信方非所述預(yù)設(shè)控制器的情況下,將所述端口確定為代理端口。
30、作為一種可選的實(shí)現(xiàn)方式,所述代理連線信息還包括所述原子軟件組件的端口的端口屬性,所述端口屬性包括接收方屬性或發(fā)送方屬性;
31、根據(jù)所述代理連線信息,從全部所述代理端口中,確定待代理端口,包括:
32、針對(duì)每一所述代理端口,確定所述代理端口的目標(biāo)端口屬性;
33、根據(jù)所述目標(biāo)端口屬性,從所述代理連線信息中確定多個(gè)目標(biāo)代理連線信息;
34、確定每一所述目標(biāo)代理連線信息包括的端口是否為所述代理端口;
35、在確定全部所述目標(biāo)代理連線信息包括的端口均非所述代理端口的情況下,將所述代理端口確定為待代理端口。
36、作為一種可選的實(shí)現(xiàn)方式,為所述待代理端口增加與所述組合軟件組件的通信端口之間的代理連線,包括:
37、針對(duì)每一所述待代理端口,生成所述代理端口對(duì)應(yīng)通信端口的通信端口標(biāo)簽;
38、將所述通信端口標(biāo)簽寫入所述代理文檔中用于記錄通信端口的第一預(yù)設(shè)位置處;
39、生成所述代理端口和對(duì)應(yīng)所述通信端口之間的代理連線標(biāo)簽;
40、將所述代理連線標(biāo)簽寫入所述代理文檔中用于記錄代理連線的第二預(yù)設(shè)位置處;
41、所述方法還包括:
42、將增加所述待代理端口與所述組合軟件組件的通信端口之間的代理連線后的代理文檔發(fā)送至所述架構(gòu)設(shè)計(jì)模組,以使所述架構(gòu)設(shè)計(jì)模組根據(jù)所述代理文檔生成所述待代理端口與所述組合軟件組件的通信端口之間的代理關(guān)系。
43、第二方面,本技術(shù)提供了一種軟件組件的代理裝置,所述裝置包括:
44、第一獲取模塊,用于獲取預(yù)設(shè)的架構(gòu)設(shè)計(jì)模組生成的代理文檔,所述代理文檔包括預(yù)設(shè)控制器對(duì)應(yīng)的組合軟件組件、所述預(yù)設(shè)控制器包括的多個(gè)原子軟件組件,以及所述組合軟件組件與部分所述原子軟件組件之間的代理連線;
45、解析模塊,用于對(duì)所述代理文檔進(jìn)行解析,得到包含多個(gè)所述原子軟件組件的端口信息的端口數(shù)據(jù)庫(kù);
46、第二獲取模塊,用于獲取通信行為匯總表,所述通信行為匯總表包括所述預(yù)設(shè)控制器與其他控制器之間的通信行為;
47、確定模塊,用于根據(jù)所述通信行為匯總表,從多個(gè)所述端口數(shù)據(jù)庫(kù)中確定待代理端口,并為所述待代理端口增加與所述組合軟件組件的通信端口之間的代理連線,以使所述待代理端口通過所述通信端口與所述其他控制器進(jìn)行通信。
48、第三方面,本技術(shù)提供了一種電子設(shè)備,包括:處理器和存儲(chǔ)器,所述處理器用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的軟件組件的代理程序,以實(shí)現(xiàn)第一方面中任一項(xiàng)所述的軟件組件的代理方法。
49、第四方面,本技術(shù)提供了一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,所述一個(gè)或者多個(gè)程序可被一個(gè)或者多個(gè)處理器執(zhí)行,以實(shí)現(xiàn)第一方面中任一項(xiàng)所述的軟件組件的代理方法。
50、本技術(shù)實(shí)施例提供的技術(shù)方案,通過對(duì)架構(gòu)設(shè)計(jì)模組針對(duì)預(yù)設(shè)控制器生成的代理文檔進(jìn)行解析,以獲取預(yù)設(shè)控制器內(nèi)多個(gè)原子軟件組件的端口,并將端口寫入端口數(shù)據(jù)庫(kù),之后,可根據(jù)該預(yù)設(shè)控制器與其他控制器之間的通信行為準(zhǔn)確篩選端口數(shù)據(jù)庫(kù)中需要代理且還未與組合軟件組件構(gòu)成代理連線的待代理端口,從而為該待代理端口構(gòu)建與組合軟件組件之間的代理連線,該過程中在不涉及用戶操作的情況下,可以準(zhǔn)確為控制器中待代理的原子軟件組件構(gòu)建與組合軟件組件之間的代理關(guān)系,實(shí)現(xiàn)了自動(dòng)且準(zhǔn)確地構(gòu)建控制器中的原子軟件組件構(gòu)建與組合軟件組件之間的代理關(guān)系,提升用戶體驗(yàn)。