
網(wǎng)絡(luò)編程最主要的工作就是在發(fā)送端把信息通過(guò)規(guī)定好的協(xié)議進(jìn)行組裝包 , 在接收端按照規(guī)定好的協(xié)議把包進(jìn)行解析 , 從而提取出對(duì)應(yīng)的信息 , 達(dá)到通信的目的 。如何學(xué)習(xí)互聯(lián)網(wǎng)編程呢?
1:學(xué)會(huì)用C++和socket或windows的http server api做一個(gè)http server , 搞成一個(gè)小網(wǎng)站2:多加幾個(gè)網(wǎng)頁(yè)之后你就明白為什么大家總是需要一個(gè)template語(yǔ)言/工具了 , 然后你可以試著自己開(kāi)發(fā)一個(gè)3:于是你開(kāi)始試圖做動(dòng)態(tài)網(wǎng)頁(yè) , 你就要用jquery和XMLHttpRequest修改html本身還有和C++服務(wù)器進(jìn)行數(shù)據(jù)交換4:然后你開(kāi)始給你的網(wǎng)站加一個(gè)Windows桌面的客戶端 , 這是對(duì)模塊化能力的重大考驗(yàn)5:你會(huì)發(fā)現(xiàn)你重復(fù)了很多代碼 , 所以開(kāi)始使用MVC和一些小的設(shè)計(jì)模式來(lái)幫你劃分模塊6:然后你發(fā)現(xiàn) , 盡管C++用IOCP是很方便 , 但是拼HTML字符串還是難爆了 。于是你開(kāi)始嘗試把C++服務(wù)器改成純粹的功能服務(wù)器 , 然后用一個(gè)薄薄的http server來(lái)host你的網(wǎng)頁(yè) , 網(wǎng)頁(yè)開(kāi)始用js獲取后臺(tái)數(shù)據(jù) , 然后用js調(diào)用你的新template工具來(lái)生成HTML , 再也不要在C++里面拼字符串了 。
做到這里 , 你的小網(wǎng)站已經(jīng)變成了 C++功能服務(wù)器/不知道什么寫的http server/js+template+ajax的browser端/不知道什么寫的GUI客戶端
這個(gè)時(shí)候你差不多可以用你學(xué)到的知識(shí)來(lái)做你想要的東西 , 于是后面你就面臨幾大問(wèn)題1:用戶登錄怎么做 。authentication是需要特別豐富的知識(shí)的 , 而且在天朝不能因?yàn)橐?guī)定你要給提供用戶的密碼你就非得把密碼的明文保存在生產(chǎn)環(huán)境里等著被拖庫(kù) 。2:用戶太多了 , 功能服務(wù)期一臺(tái)機(jī)器hold不住了 , 你需要寫分布式系統(tǒng)3:客戶端漸漸蔓延到了windows phone、android、ios 。如果你不讓view層變得很薄 , 你就會(huì)在各種端和語(yǔ)言里面重復(fù)實(shí)現(xiàn)你的controller , 做大了之后簡(jiǎn)直無(wú)法維護(hù) 。
做到這里 , 你基本上已經(jīng)碰到了如何在各種奇葩的語(yǔ)言之間交換數(shù)據(jù)的問(wèn)題了 。當(dāng)然這個(gè)問(wèn)題肯定很早就被人解決了 , 但是因?yàn)槟阈枰獙W(xué)會(huì)整個(gè)知識(shí)框架體系 , 那你一定會(huì)開(kāi)始去山寨一個(gè)你自己的protocol buffer這樣的東西 。服務(wù)器也開(kāi)始知道如何用restful http server來(lái)把功能抽象成model了 , 然后你的MVC到這里就正式學(xué)會(huì)了 。
【如何學(xué)習(xí)互聯(lián)網(wǎng)編程】
推薦閱讀
- 如何判斷你的網(wǎng)站是否應(yīng)該重新設(shè)計(jì)?
- H5建站:移動(dòng)互聯(lián)網(wǎng)時(shí)代企業(yè)建站的不二之選
- 運(yùn)營(yíng)思路之如何做好一個(gè)新項(xiàng)目
- 設(shè)計(jì)實(shí)戰(zhàn):視覺(jué)設(shè)計(jì)如何繼承品牌基因
- 如何做好網(wǎng)站流量統(tǒng)計(jì)分析工作?
- 如何做一個(gè)合格的運(yùn)營(yíng)
- 商城網(wǎng)站如何做才能吸引客戶
- 優(yōu)化網(wǎng)站如何做 一步步打造高質(zhì)量網(wǎng)站
- 康乃馨小苗如何修剪 康乃馨幼苗怎么修剪長(zhǎng)得旺
- 企業(yè)網(wǎng)站如何建設(shè)才更具有吸引力?
