昨天被華章安利了一本今年8月份的新書《后台開發:核心技術與應用實踐》,極好的書,評價和口碑超高。
這本書騰訊公司資深研發工程師多年后台開發經驗總結,獲騰訊、Facebook、微軟、阿里、百度多位資深技術專家高度認可。 完整勾勒后台開發技術能力體系,多維度講解了成為一名后台開發工程師所需掌握的核心技術、開發工具和實踐方法,后台工程師修煉必讀。作者sharexu是位值得推崇的女性開發者。
后台開發是一個“歷史悠久”的領域,同是也是一個沉淀深厚,高技術價值的領域。本書清晰、嚴謹、務實的風格顯示出曉鑫對該領域知識的深刻理解。——張子興 Facebook對外支付項目主程,美國加州MenloPark
每一位從事后台開發的專業人士都需要一本《后台開發:核心技術與應用實踐》。對每一位想要認真從事該領域工作的人來說,這是一本絕對必讀的書籍。——彭可競 微軟軟件工程師,美國華盛頓州Redmond
《后台開發:核心技術與應用實踐》是作者多年后台開發、架構和研究的精華。本書用通俗的文字、詳盡的示例代碼,結合實際工作中的案例,講述了后台開發方方面面的知識,內容豐富。對於從事后台開發的人員,這是一本很好的由淺入深的學習書籍。——周樂 阿里巴巴資深算法工程師,北京望京
使用C 語言進行后台開發有一定的門檻,本書可以很好的幫助你跨過這個“門檻”。——暢晉 百度大數據高級測試工程師,北京上地
徐曉鑫:
聽到“后台開發”這個詞,估計很多人心中都會有一些自己的感性認識,這種認識具體到每個人可能有一些差別,但估計大部分人都有這么一種看法:“后台開發”是編寫一些用戶看不見的程序,也就是非界面的,既不是網頁,也不是App,更不是桌面程序,因為這些都是用戶看得見的(被稱為“前台開發”)。這種感性認識在一定程度上是正確的,但是它不夠具體,也不夠全面。
我所理解的“后台開發”的確是用戶“看不見”的部分,但是還有很多界面性的程序是給企業內部人員使用的,這些雖然是界面程序,但是對於最終用戶來說也是“看不到”的。舉個例子,開發一個電子商務的網站,提供給客戶進行商品購買的網頁是用戶看得見的,不屬於“后台”,但是電商網站內部員工使用的“用戶管理系統”,“訂單管理系統”等,也是用戶看不見的,但它們不屬於本書中所指的“后台”。在有些場合,或者一些人的習慣中,這些內部使用的系統也叫“后台”,這樣並沒有錯,希望讀者在聽到的時候,知道說話人指的是什么。
在BAT這類成熟的、大型的、技術分工明確的互聯網公司里,一般提到“后台開發”,指的是“服務端的網絡程序開發”,從功能上可以具體描述成這樣:服務器收到客戶端發來的請求數據,解析請求數據,然后進行處理,最后把結果返回,如下圖所示。

“SERVER”
這里的“SERVER”就是后台開發程序員需要用盡畢生精力去耕耘的“后台程序”,或者“服務器”。 SERVER接收請求的方式既可以是通過TCP請求包,也可以是HTTP請求包(其實也是 TCP連接)。如果是HTTP方式的請求,請求包的格式一般是JSON或者XML ,或者自定義的ASCII文本;如果是TCP請求,二進制的格式會常見一些。解析請求包的方式自然是請求包的格式相對應的,來的是什么格式的包,就用對應的解包庫區解析,如果是自定義的格式,就按照自定義的方式去解析。“處理請求”這一步是后台程序的具體業務邏輯。很多封裝好的后台程序包會把其他三步都做好,但是這一步還是需要開發者自己去實現,因為只有開發者自己清楚,程序是要去做“登陸”還是去做“注冊”的事情。“輸出回復包”和“接收請求包”是對應的,一般來說,收到的是 JSON,那么回復的也是JSON,收到的是 XML,那么發送的也是XML,其他的格式也是一樣的。這四個步驟是所有后台程序都會有的,無論使用什么語言去實現,都可以看到這四個步驟的影子。
“CLIENT”
“CLIENT”指的是向“ SERVER”發起請求,並接收“SERVER”回復的一方,就是通常稱的“客戶端”。既然后台程序是通過 TCP或者HTTP 接收和回復消息的,那么只要是能夠發起TCP或者HTTP連接的都可以作為客戶端,可以是瀏覽器, PC端的程序,安卓應用,IOS應用,等等。
當然,這只是“后台開發”最基本的概念認識,也是像BAT這類成熟的大型互聯網公司對“后台開發”這個崗位的工作范圍定位。具體到實際的工作中,后台開發工程師需要涉及的技術層面很多,接入層、邏輯層、數據層等、需要考慮的問題也很多,個人認為最重要的幾個就是高可用性(availabilty)、可擴展性(scalability),健壯性(robustness)。也許以后咱們可以一起仔細聊一聊這些話題。
本文部分段落摘自《后台開發:核心技術與應用實踐》緒論部分

《后台開發:核心技術與應用實踐》
ISBN:978-7-111-54339-8
作者:徐曉鑫