
網絡編程最主要的工作就是在發送端把信息通過規定好的協議進行組裝包,在接收端按照規定好的協議把包進行解析,從而提取出對應的信息,達到通信的目的 。如何學習互聯網編程呢?
1:學會用C和socket或windows的http server api做一個http server,搞成一個小網站2:多加幾個網頁之后你就明白為什么大家總是需要一個template語言/工具了,然后你可以試著自己開發一個3:于是你開始試圖做動態網頁,你就要用jquery和XMLHttpRequest修改html本身還有和C服務器進行數據交換4:然后你開始給你的網站加一個Windows桌面的客戶端,這是對模塊化能力的重大考驗5:你會發現你重復了很多代碼,所以開始使用MVC和一些小的設計模式來幫你劃分模塊6:然后你發現,盡管C用IOCP是很方便 , 但是拼HTML字符串還是難爆了 。于是你開始嘗試把C服務器改成純粹的功能服務器,然后用一個薄薄的http server來host你的網頁,網頁開始用js獲取后臺數據,然后用js調用你的新template工具來生成HTML,再也不要在C里面拼字符串了 。
做到這里,你的小網站已經變成了 C功能服務器/不知道什么寫的http server/js template ajax的browser端/不知道什么寫的GUI客戶端
這個時候你差不多可以用你學到的知識來做你想要的東西,于是后面你就面臨幾大問題1:用戶登錄怎么做 。authentication是需要特別豐富的知識的,而且在天朝不能因為規定你要給提供用戶的密碼你就非得把密碼的明文保存在生產環境里等著被拖庫 。2:用戶太多了 , 功能服務期一臺機器hold不住了 , 你需要寫分布式系統3:客戶端漸漸蔓延到了windows phone、android、ios 。如果你不讓view層變得很?。?你就會在各種端和語言里面重復實現你的controller , 做大了之后簡直無法維護 。
做到這里,你基本上已經碰到了如何在各種奇葩的語言之間交換數據的問題了 。當然這個問題肯定很早就被人解決了,但是因為你需要學會整個知識框架體系,那你一定會開始去山寨一個你自己的protocol buffer這樣的東西 。服務器也開始知道如何用restful http server來把功能抽象成model了,然后你的MVC到這里就正式學會了 。
【如何學習互聯網編程】
