App開發(fā)者們在處理App后臺(tái)的通信時(shí)經(jīng)常問:App和后臺(tái)的通信是用HTTP協(xié)議還是私有協(xié)議?是用長連接還是短連接?深圳APP開發(fā)希望您在閱讀此文后可以解除上面的疑問。
1.用HTTP協(xié)議還是私有協(xié)議?間諜電視劇經(jīng)常能看到間諜們的書信是使用暗號(hào)的,就算書信被敵人截取,敵人也需要耗費(fèi)一定的時(shí)間才能解開書信中的秘密。在電影《阿凡達(dá)》中為提升故事真實(shí)性,導(dǎo)演詹姆斯·卡梅隆甚至找到語言學(xué)家PaulFrommer教授,創(chuàng)造了一種屬于納美人的語言。大家看這部電影的時(shí)候,根本聽不懂潘多拉星球上的納美外星人到底說什么。納美語共有大約1000個(gè)單詞,全球能夠掌握其語法的人只有創(chuàng)造這門語言的PaulFrommer一人,而且就算他本人也仍然在學(xué)習(xí)如何更流暢地說納美語。如果間諜們使用的都是大家都懂的中文,敵人截取到書信,就能立刻知道里面的內(nèi)容。如果潘多拉星球上的納美外星人說的是中文,那么很多人一聽就知道其具體內(nèi)容。App和App后臺(tái)的通信也同樣,可以分為使用通用語言通信和使用暗語通信兩種方式。通用語言有很多種,例如英語和中文。協(xié)議就相當(dāng)于一套語言,雙方都知道每個(gè)字節(jié)的具體含義。網(wǎng)絡(luò)通信中有很多通用協(xié)議,其中HTTP協(xié)議是使用得最廣泛的一種。大多數(shù)開發(fā)語言都支持通用協(xié)議,有大量的成熟模塊供程序員調(diào)用,方便程序員解析這些通用協(xié)議的內(nèi)容。使用私有協(xié)議就相當(dāng)于使用暗語通信,其類似于開發(fā)一套新的語言。私有協(xié)議對協(xié)議的封裝和拆解工作量大,App程序員和后臺(tái)程序員都要增加額外的工作量,而且私有協(xié)議對程序員的設(shè)計(jì)能力要求高,從Web網(wǎng)站轉(zhuǎn)向移動(dòng)開發(fā)的開發(fā)者上手有一定的困難。除非開發(fā)者對App的安全性和性能要求高,不然選擇HTTP協(xié)議就足夠。
2.App和App后臺(tái)通信使用長連接還是短連接?假設(shè)讀者通過手機(jī)撥打另外一個(gè)人的手機(jī),手機(jī)通話費(fèi)用非常便宜(甚至可以忽略),但這個(gè)打電話過程有兩個(gè)特點(diǎn)。
(1)一部手機(jī)同一時(shí)間只能接聽一個(gè)電話。
(2)一部手機(jī)接聽電話前非常麻煩,要撥號(hào),要等接接聽,這些過程需要耗費(fèi)一段時(shí)間。App和服務(wù)器通信使用長連接還是短連接這個(gè)問題,可以使用上述的手機(jī)撥打電話的模型理解:是一直保持著通話,還是有需要時(shí)才撥號(hào)通話?當(dāng)App和服務(wù)器通信使用長連接,就相當(dāng)于一直保持著通話,服務(wù)器能保持的通信數(shù)量有限,如果達(dá)到通信數(shù)量的限制,必須增加服務(wù)器才能讓其他App繼續(xù)和后臺(tái)通信。這種通信方式,多數(shù)是使用Socket或WebSocket連接長時(shí)間連接,對程序員的素質(zhì)要求高,開發(fā)困難,除了手游和聊天推送服務(wù)外,不建議使用。當(dāng)App和服務(wù)器通信使用短連接,就相當(dāng)于需要時(shí)才撥號(hào)通話。這種通信方式主要是HTTP協(xié)議,是現(xiàn)在主流的通信方式,開發(fā)效率高,有大量的第三方軟件可供開發(fā)人員使用,而且大多數(shù)開發(fā)人員對HTTP協(xié)議有一定的了解,能大大減少開發(fā)人員的認(rèn)知成本,推薦使用這種方式。
3.App和后端是怎么通信的?相信讀者都用過銀行的柜員機(jī)(ATM)的查詢余額、轉(zhuǎn)賬、取款等功能。當(dāng)用戶在ATM取款時(shí)只需要輸入取款的金額,隔一會(huì)兒錢就出來,如果因?yàn)橛惺裁磫栴}不能取款(例如超過取款金額的限制),屏幕上也會(huì)顯示出錯(cuò)誤的信息。在整個(gè)過程中,用戶只要輸入金額就能獲得結(jié)果(取出錢或屏幕提示不成功),至于柜員機(jī)內(nèi)部是怎么處理,用戶不需要知道。用戶使用ATM的流程如圖1-1所示。
用戶使用ATM的流程ATM這種把內(nèi)部的處理遮蔽的做法極大方便了用戶的使用。同樣在App后臺(tái)也只提供了一系列的功能給App使用,這系列的功能以API的形式提供。API的定義:API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無須訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。當(dāng)App調(diào)用后端提供API的時(shí)候,只需要明確下面3點(diǎn):
(1)這個(gè)API的用途:在ATM的例子中,是取款,還是查詢余額,還是轉(zhuǎn)賬?
(2)輸入什么:在ATM的例子中,使用取款功能要輸入金額。
(3)結(jié)果是什么:在ATM的例子中,取款是成功還是失???至于API內(nèi)部是怎么處理,App無須知道。深圳APP開發(fā)公司博納網(wǎng)絡(luò)編輯整理。全文未完,如果您感覺本文對您有幫助,敬請繼續(xù)關(guān)注本站。謝謝