7.app和app後端的通訊,7.appapp後端通訊
經常有開發人員問:app和後端通訊是用http協議還是私人的協議?是用長串連還是短串連?通過閱讀本文,幫你解除上面的疑問。
(1)是用http協議還是私人的協議?
在間諜電視劇中,經常能看到間諜們的書信都是用暗號的,就算書信被敵人截取了不怕,需要耗費一定的時間,敵人才能解開書信中的秘密。
在電影<阿凡達>, 為提升故事真實性,詹姆斯卡梅隆甚至找到語言學家,專為納美人創造了一種自己的語言。我們看這部電影的時候,根本聽不懂潘多拉星球上的納美外星人到底說什嗎?納美語共有大約1000個單詞,全球能夠掌握其文法的人只有創造這門語言的PaulFrommer教授一人,而且就算他本人也仍然在學習如何更流暢的說納美語。
如果間諜們使用的都是大家都懂的中文,敵人截取到書信,就能立刻知道裡面的內容。
如果潘多拉星球上的納美外星人說的是中文,那麼很多人一聽就知道他們是說啥。
同樣的,app和後端的通訊,可以分為用通用的語言通訊,還是用暗語通訊兩種方式。
通用的語言有很多種,例如英語和中文,在網路的通訊中,通用的協議有很多,其中http是被最廣泛使用的。如果是私人的協議,那就只能自己設計了。
用http是最方便的,如果是私人協議,包含協議的封裝和拆解,工作量大,前端程式員和後端程式員都要增加很多額外的工作量。而且私人協議對程式員的要求高,不適合從web網站轉過來的開發人員。除非是手遊,不然用http就好了。
(2)app和伺服器通訊使用長串連還是短串連?
假設現在通過手機撥打另外一個人的手機,手機通話費用非常便宜(甚至可以忽略),但是有兩個注意的地方:
1.一台手機同一時間只能接聽一個電話。
2.一台手機電話中前非常麻煩,要撥號啦,要等接聽,這需要一段時間。
app和伺服器通訊使用長串連還是短串連這個問題,可以等同於上面電話模型,是一直保持著通話,還是有需要時才撥號通話這個問題?
當app和伺服器通訊使用長串連,就相當於一直保持著通話,伺服器能保持的通訊數量有限,如果通訊滿了,那其他app就不能和服務端通訊了。這種通訊方式,多數是使用socket或websocket串連長時間串連,對程式員的要求比較高,開發比較困難,除了手遊和聊天推送服務外,不建議使用。
當app和伺服器通訊使用短串連,就相當於需要時才撥號通話。這種通訊方式,配合http協議,是現在主流的通訊方式,開發效率高,有大量的第三方資源,使用非常廣泛,推薦使用這種方式。
(3)app和後端是怎麼通訊的?
相信大家都用過銀行的櫃員機(ATM)的查詢餘額,轉帳,取款等操作。
當在櫃員機取款的時候,我們輸入要取款的金額,隔一會錢就出來了,如果因為有什麼問題不能取款(例如超過取款金額的限制),螢幕上也會顯示出錯誤的資訊。
在整個過程中,我們只要輸入金額,獲得結果(取款成功或不成功),就行了,至於櫃員機內部是怎麼處理,我們不需要理會。
櫃員機這種把內部的處理遮蔽的做法極大方便了我們的使用。
同樣的,在後端,也只提供了一系列的功能給app使用,這系列的功能以api的形式提供。
api的定義:API(Application Programming Interface,API)是一些預先定義的函數,目的是提供應用程式與開發人員基於某軟體或硬體得以訪問一組常式的能力,而又無需訪問源碼,或理解內部工作機制的細節。
當app調用api的時候,只需要明確下面3點:
1.這個api是幹啥的(櫃員機例子中,是取款功能,還是查詢餘額,還是轉賬)
2.知道要輸入什麼(櫃員機例子中,取款要輸入金錢)
3.知道結果是什麼(櫃員機例子中,取款是成功還是失敗)
至於api內部是怎麼處理的,app根本無需理會。
api,一般是以http的形式調用的,通過http傳入參數,返回結果。其中,結果一般是以json格式返回的,因為json格式被眾多電腦語言支援,而且省流量。
---------------------------------------------------------------------------------------------------------------------------
開啟連結 app後端系列文章總目錄 總目錄 ,能查看本人發表過的所有原創“app後端”文章。
【作者】曾健生
【QQ】190678908
【qq群】254659220
【公眾號】 appbackend
【新浪微博】 @newjueqi
【部落格】http://blog.csdn.net/newjueqi