這段時間接手了**魔盒的支付模塊和供三方應(yīng)用調(diào)用的支付SDK模塊,這才發(fā)現(xiàn)SDK開發(fā)跟應(yīng)用版本開發(fā)的理念不太相同。無線應(yīng)用產(chǎn)品捷绑,版本更新越快越新可能就越開心儡蔓,說明業(yè)務(wù)以及產(chǎn)品在不斷發(fā)展满哪、優(yōu)化和改進;然而對于SDK來說,發(fā)布新版本的心情卻是復(fù)雜的,開心又心塞... ... 開心的是有新功能卧须,但是更多的是多版本維護帶來的各種壓力和成本,SDK一個版本的生命周期不可能像應(yīng)用那么短,而且它帶來的問題影響也會更加長久花嘶,接入方不可能輕易更換SDK版本笋籽,新功能要考慮到使用舊版SDK應(yīng)用的適配性,因此要更加謹慎和慎重椭员。
總的說來车海,一個好的SDK需要具備以下三個特性:
一、輕便且易擴展的SDK API
接入API一定要簡單隘击!要簡單容劳!要簡單!重要的事情說三遍闸度!對于SDK的客戶端開發(fā),雖然你可以任性地在不同版本隨意的優(yōu)化入?yún)⒁约罢{(diào)用方式并且不會招致什么大問題蚜印。但是這對于接入SDK的開發(fā)來說莺禁,絕對是噩夢一般的存在。理想的SDK接入過程一定是非痴常“順滑”的哟冬,哪怕不開文檔只看接口,也能順利接入忆绰,這才是一個設(shè)計良好的SDK浩峡。反之當SDK接入、更新的成本超過甚至逼近開發(fā)直接對接的成本時错敢,這個SDK其實是失敗的翰灾,而且也失去了應(yīng)有的意義。
SDK也是一個產(chǎn)品稚茅,但是又有其特殊性:API一般說來要有一定的持久性和穩(wěn)定性纸淮,因此需要在設(shè)計初期考慮到產(chǎn)品后期的業(yè)務(wù)發(fā)展趨勢,提前留好接口的相關(guān)業(yè)務(wù)擴展參數(shù)亚享。
二咽块、已接入應(yīng)用適配問題
保證已接入應(yīng)用適配問題的關(guān)鍵在于兩點:一個是極簡集成、一個是分層設(shè)計欺税。極簡集成顧名思義就是把SDK做薄侈沪,只做最基本的業(yè)務(wù)參數(shù)傳遞和通道建立;分層設(shè)計則將SDK和業(yè)務(wù)核心模塊區(qū)分了開來晚凿,這樣可以讓核心業(yè)務(wù)不受SDK版本的限制亭罪。
我所負責的**魔盒支付模塊基本架構(gòu)如下圖所示:
采用這樣的架構(gòu)模式,業(yè)務(wù)方只需要在引入SDK jar包后加入短短幾行代碼歼秽,就可以把支付功能托付給支付核心模塊來做皆撩,在不改變API的情況下,底層業(yè)務(wù)的更新可以直接供上層使用,無須再次接入新的SDK扛吞。
三呻惕、穩(wěn)定性保障
SDK以及相關(guān)核心業(yè)務(wù)的穩(wěn)定性也是至關(guān)重要,主要需要關(guān)注以下幾點:
1滥比、安全機制亚脆;
2、線程管理盲泛;
3濒持、用戶界面友好性;
4寺滚、內(nèi)存使用情況柑营;
5、CPU占用情況村视。
最后就是SDK的版本控制官套,個人覺得最好的版本狀態(tài)是有三條分支:穩(wěn)定版、開發(fā)版以及定制版蚁孔。穩(wěn)定版用于大面積的推廣奶赔;開發(fā)版用于一些急于使用新功能的應(yīng)用試用。穩(wěn)定版本和開發(fā)版本的存在是為了提高SDK的版本質(zhì)量杠氢,同時結(jié)合版本發(fā)布的一些策略站刑,降低SDK版本質(zhì)量對使用者的影響以及SDK的bug的影響范圍。