最近,項目中負(fù)責(zé)接口開發(fā)的同事出了一個小問題。
????
???? 比如:系統(tǒng)A和系統(tǒng)B之間需要通過接口abInterface來通信和交換數(shù)據(jù),系統(tǒng)A中有一類數(shù)據(jù)為data-01,系統(tǒng)B中有一類數(shù)據(jù)為data-02,但實際上data-01和data-02對于業(yè)務(wù)而言是同一個含義,表達(dá)的是同樣的意思,那么如果直接將data-01類型的數(shù)據(jù)傳送給系統(tǒng)B,那么系統(tǒng)B就無法解釋其含義,目前我們系統(tǒng)的解決辦法是:
???? 在傳送數(shù)據(jù)的時候,由系統(tǒng)A將data-01型數(shù)據(jù)轉(zhuǎn)換成data-02型數(shù)據(jù),然后再傳送給接口。
????
???? 但這種方式是錯誤的,大家討論后得到了這樣的一個比喻:中國人和英國人進(jìn)行交流,中間配了一個翻譯。正確的思路應(yīng)該是,中國人將中文信息傳送給翻譯,翻譯聽懂以后,將信息翻譯成英語,再把英語信息傳送給英國人。在這其中,翻譯和中國人之間以及翻譯和英國人之間都是共用一套語言。
????
???? 目前接口出現(xiàn)的問題就是:中國人先將中文翻譯成英文,再把英文信息說給翻譯,翻譯再把英文信息一字不差地說給英國人,所以,翻譯在這里除了簡單傳送一下信息外,其他就什么也沒做。翻譯沒有將自己的職責(zé)進(jìn)行到位,而中國人的事情卻超越了自己的職責(zé),相當(dāng)于中國人還做了半個翻譯的事情。
???? 對應(yīng)于系統(tǒng)接口而言,系統(tǒng)A和abInterface之間的信息data-01是互相能理解的,系統(tǒng)B和abInterface之間的信息data-02也是互相能理解的,系統(tǒng)A和系統(tǒng)B之間的信息不應(yīng)該交叉。
???? 結(jié)論:接口的雙方的信息是不互通的,接口和任意一方的信息格式應(yīng)該遵循同一種規(guī)則,接口要做兩件事:一是轉(zhuǎn)換數(shù)據(jù)格式,二是傳輸?shù)谝徊浇?jīng)過轉(zhuǎn)換的傳送目標(biāo)能夠理解的數(shù)據(jù)格式。