DevOps和持續(xù)交付并不強(qiáng)制應(yīng)該怎么做事情,所以最有效率的方法更令人中意。
在我們的例子里,可以說把變更的實(shí)現(xiàn)分?jǐn)偟缴a(chǎn)者和消費(fèi)者里是代價最小的辦法。
不管怎樣,生產(chǎn)者需要變化,而消費(fèi)者需要接受實(shí)現(xiàn)Tolerant Reader的一次性開銷。通過SOAP和XIVIL來實(shí)現(xiàn)也是可以的,但是相比REST來說顯得不那么自然。這也是為什么在擁抱DevOps和持續(xù)交付的企業(yè)里,REST的實(shí)現(xiàn)更加流行的一個原因。
如何實(shí)現(xiàn)Tolerant Reader模式在實(shí)踐中因平臺而異。對JsonRest來說,通常把JSON結(jié)構(gòu)轉(zhuǎn)換成同等的語言結(jié)構(gòu)就足夠了。你的程序需要哪些部分,你就用哪些部分。所有的其他部分,不管是舊的還是新的,通通忽略掉。這種辦法的局限是,生產(chǎn)者不能移除消費(fèi)者依賴的部分。增加新部分沒有問題,因?yàn)樗鼈儗缓雎浴?/p>
這樣又給生產(chǎn)者增加了負(fù)擔(dān),它必須記住哪些是消費(fèi)者需要的。
在企業(yè)的高墻內(nèi),這并不是什么大問題。生產(chǎn)者可以知道消費(fèi)者最新的代碼并在構(gòu)建生產(chǎn)者的階段進(jìn)行測試。
而對于那些暴露在因特網(wǎng)上的服務(wù),這種方法并不那么實(shí)用,這時會傾向于使用更為嚴(yán)格的SOAP方式。