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