中國(guó)信息通信研究院電信與信息服務(wù)咨詢(xún)中心 宗漢文
?
互聯(lián)網(wǎng)數(shù)據(jù)接口開(kāi)發(fā)及應(yīng)用
中國(guó)信息通信研究院電信與信息服務(wù)咨詢(xún)中心宗漢文
【摘要】本人從事過(guò)很多項(xiàng)目的開(kāi)發(fā),曾經(jīng)使用過(guò)VB語(yǔ)言,C+ 語(yǔ)言和C#語(yǔ)言,現(xiàn)如今數(shù)據(jù)接口的應(yīng)用范圍現(xiàn)在越來(lái)越寬廣,但是其安全性與效率也為人所擔(dān)心。本人在經(jīng)歷的項(xiàng)目中,總結(jié)了一些數(shù)據(jù)接口設(shè)計(jì)方面的心得。
【關(guān)鍵詞】數(shù)據(jù)接口;開(kāi)發(fā);應(yīng)用
互聯(lián)網(wǎng)的普及,特別是移動(dòng)互聯(lián)網(wǎng)的普及,使得眾多的企業(yè)和個(gè)人的信息交互更加頻繁。訂單信息、付款信息以及個(gè)人信息等私密或不私密的信息不斷的在互聯(lián)網(wǎng)以及移動(dòng)終端進(jìn)行交互。在這之間,數(shù)據(jù)的封裝與發(fā)送,數(shù)據(jù)的加密與解密,成為了重要的工作。而完成這些工作的,就是數(shù)據(jù)接口。相比于內(nèi)網(wǎng)的數(shù)據(jù)交互,互聯(lián)網(wǎng)的數(shù)據(jù)交互的要求更多,也更加復(fù)雜。下面我將為大家簡(jiǎn)要介紹一下互聯(lián)網(wǎng)數(shù)據(jù)接口的使用與開(kāi)發(fā)。
雖然接口的雙方都在網(wǎng)絡(luò)內(nèi)部,但是仍然不能排除接口的服務(wù)攻擊、惡意調(diào)用和非法調(diào)用等。所以在接口的調(diào)用與被調(diào)用時(shí),必須考慮認(rèn)證安全問(wèn)題。在做數(shù)據(jù)的采集端,所有的調(diào)用用戶(hù)應(yīng)該具有唯一的用戶(hù)名和密碼,經(jīng)過(guò)必要的身份認(rèn)證后,方可進(jìn)行接口訪問(wèn)。調(diào)用方在接到接口返回的認(rèn)證成功的返回后,方可進(jìn)行下一步操作。
數(shù)據(jù)的安全表現(xiàn)是如何保證數(shù)據(jù)在網(wǎng)絡(luò)傳輸過(guò)程中不會(huì)被截獲并被解析其中內(nèi)容從而引起信息泄露與如何保證數(shù)據(jù)在傳輸過(guò)程中的數(shù)據(jù)完整性?xún)蓚€(gè)方面。
WebService采用XML數(shù)據(jù)格式來(lái)進(jìn)行信息傳輸,所以要求采用對(duì)XML數(shù)據(jù)加密之后來(lái)傳輸。外部系統(tǒng)接口上有很多種類(lèi)型的業(yè)務(wù),可以針對(duì)不同的業(yè)務(wù)類(lèi)型分配不同的密鑰,也可以根據(jù)不同的企業(yè)分配不同的密鑰,可以按照需求進(jìn)行選擇。密鑰的發(fā)布由系統(tǒng)服務(wù)方來(lái)發(fā)布,由客戶(hù)端根據(jù)情況進(jìn)行針對(duì)性開(kāi)發(fā)。
為了數(shù)據(jù)的完整性,必須采用數(shù)據(jù)簽名。利用XML的數(shù)字簽名對(duì)SOAP進(jìn)行擴(kuò)展,在SOAP的頭元素中定義簽名屬性來(lái)實(shí)現(xiàn)。
事務(wù)是系統(tǒng)中一組相關(guān)的任務(wù),作為獨(dú)立于其他任務(wù)的單元成功或失敗。要提保證不論系統(tǒng)崩潰或是發(fā)生其他無(wú)法預(yù)料的事件,更改都必須是永久有效的。即使只有一個(gè)步驟無(wú)法保證這一點(diǎn),整個(gè)事務(wù)也將失敗,所有相關(guān)操作都將回滾。
外網(wǎng)系統(tǒng)和服務(wù)端系統(tǒng)是處于網(wǎng)絡(luò)上的兩個(gè)分布式接口,使用的是分布式事務(wù)。要啟用分布式事務(wù),可能需要通過(guò)網(wǎng)絡(luò)啟用MSDTC,以便在使用應(yīng)用了最新的ServiceBack的較新操作系統(tǒng),必須允許MSDTC服務(wù)使用網(wǎng)絡(luò)或打開(kāi)MSDTC端口。
接口的服務(wù)端和客戶(hù)端的環(huán)境始終相同,對(duì)于該事務(wù)上下文是當(dāng)前的。這樣的事務(wù)會(huì)造成性能的損失,因?yàn)榭赡苄枰^承原來(lái)的,但是,這樣的事務(wù)確保了在數(shù)據(jù)庫(kù)操作時(shí)信息的完整性。
在接口設(shè)計(jì)之初就需要考慮性能問(wèn)題。同時(shí),在項(xiàng)目的開(kāi)發(fā)過(guò)程要反復(fù)進(jìn)行測(cè)試。接口上面的性能考慮主要從下面幾個(gè)方面來(lái)優(yōu)化:
1)使用一次連接,多次調(diào)用,優(yōu)化連接資源。
2)對(duì)于并行的接口調(diào)用使用異步的調(diào)用方式。
3)優(yōu)化線程池減少競(jìng)爭(zhēng)。
4)考慮使用XML壓縮。
5)如果不需要返回,考慮使用單工通訊的方式。
6)適當(dāng)?shù)脑O(shè)置(如果有代理)代理超時(shí),頁(yè)面超時(shí),WebService超時(shí)。
7)設(shè)計(jì)”大塊頭”的接口減少往返。
8)基于消息的編程而不是遠(yuǎn)程過(guò)程調(diào)用(RPC)。
9)使用XML字串作為參數(shù)。
10) 盡量使用原始數(shù)據(jù)類(lèi)型參數(shù)。
11) 避免在調(diào)用之間維護(hù)服務(wù)器狀態(tài)。
12) 考慮為復(fù)雜的WebMethod提供輸入校驗(yàn)。
13) 考慮對(duì)WebMethod的結(jié)果使用緩存。
14) 選擇適用的大數(shù)據(jù)包傳送方式。
15) 避免調(diào)用本地的WebService。
客戶(hù)端向服務(wù)端發(fā)送數(shù)據(jù),服務(wù)端進(jìn)行數(shù)據(jù)解析,反饋信息給客戶(hù)端,這中間的環(huán)節(jié)只要某一個(gè)環(huán)節(jié)出現(xiàn)問(wèn)題,都會(huì)造成接口的失敗。按照失敗產(chǎn)生的環(huán)節(jié)分類(lèi),我們可以從三個(gè)方面來(lái)處理接口的失敗。
1)網(wǎng)絡(luò)連接失敗。
2)反饋錯(cuò)誤信息。
3)網(wǎng)絡(luò)連接正常,但是無(wú)信息反饋。
通過(guò)以上的幾個(gè)步驟的考慮,就可以完成一個(gè)數(shù)據(jù)的采集、發(fā)送的安全的數(shù)據(jù)接口,也將在系統(tǒng)開(kāi)發(fā)的過(guò)程中給大家以指導(dǎo)。
參考文獻(xiàn)
[1]Brunner, Robert. Practical Guide for Programmers[J]. Morgan Kaufmann Publishers, 2003,16(2):233-237.
Internet data interface development and Application ZONG Han-wen
(Telecommunications and information consulting service center of China Academy of Telecommunication Research,Beijing,China)
Abstract:I have been engaged in the development of many projects, have used VB language, C+ language and C# language, now the application of data interface is now more and more broad, but its security and efficiency are also worried about people. I have experienced in the project, summed up some of the data interface design experience.
KeyWords:Data interface;exploit;apply