不會真的有人以為C/S是拿槍干的吧?
本文轉(zhuǎn)載自微信公眾號「見賢思編程」,作者泰斗賢若如 。轉(zhuǎn)載本文請聯(lián)系見賢思編程公眾號。
軟件開發(fā)兩大巨頭
B/S 和 C/S 是當(dāng)今世界的兩大主流開發(fā)體系。
什么是B/S?
B/S 結(jié)構(gòu)(Browser/Server)是瀏覽器服務(wù)器這種開發(fā)模式,
就是只安裝維護(hù)一個服務(wù)器( Server ),而客戶端采用瀏覽器( Browse )運(yùn)行軟件
什么是C/S?
C/S又稱 Client/Server 或客戶/服務(wù)器模式。需要做客戶端服務(wù)器端 。服務(wù)器通常采用高性能的 PC 、工作站或小型機(jī),并采用大型數(shù)據(jù)庫系統(tǒng),如 Oracle 、Sybase 、Informix 或 SQL Server ??蛻舳诵枰惭b專用的客戶端軟件。
我想看到 B/S 和 C/S 的定義,玩過電腦的朋友應(yīng)該都明白,通俗點(diǎn)說就是像 4399 小游戲這樣運(yùn)行在瀏覽器上的軟件就是 B/S 開發(fā)模式,像QQ 、吃雞游戲、英雄聯(lián)盟等軟件需要下載客戶端軟件,這種軟件就是C/S開發(fā)模式。
這個很好理解,沒什么可說的。我覺得這不是啥必備的知識點(diǎn),不牽扯會不會,我也不知道重要不重要,但作為一個程序員,我覺得這應(yīng)該是個常識吧,就像上廁所要帶紙,談戀愛要趁早。哈哈,開個玩笑,意思差不多。
基于B/S模式開發(fā)
老師之前跟我們說,我們現(xiàn)在學(xué)的都是基于B/S模式開發(fā),剛開始我也一臉懵,后來想明白了,為什么這些年微信小程序那么火,還是有道理的。
上面的這張圖是我當(dāng)初理解 B/S 和 C/S 后,理解和總結(jié)的,對應(yīng)于生活去理解,我是個90后,記得小時候偷著去網(wǎng)吧玩,網(wǎng)吧電腦上都是些像“血戰(zhàn)上海灘”,“紅色警戒”等游戲,那個時期,都是局域網(wǎng),用的最多的都是在 C/S 模式下開發(fā)的軟件,直到后來互聯(lián)網(wǎng)興起,剛開始能在網(wǎng)頁上玩一些小游戲,后來網(wǎng)頁上的小游戲也越來越火,好多人都在玩,再發(fā)展到今天,微信小程序也是火的飛起。
我一直在想,要是有一天,在網(wǎng)頁上開發(fā)的游戲體驗(yàn)和在客戶端下載的游戲體驗(yàn)一樣,那 B/S 模式會不會替代 C/S 模式,因?yàn)?B/S 模式操作簡單,內(nèi)存占用少,而 C/S 模式內(nèi)存占用大,安裝復(fù)雜,我覺得要真有這么一天,可能······很爽!
從B/S引出瀏覽器頁面歷史
在這穿插一個故事,都說了我們是大多基于 B/S 模式開發(fā),既然是B/S模式,怎能離的開瀏覽器呢?
知識都是死的,思想是活的,看書上的官方語句實(shí)在太枯燥,反正我是不想看。我喜歡聽故事,我覺得通過故事學(xué)到知識,在輕松的環(huán)境中學(xué)知識,很爽。
下面請看故事:
JavaScript的誕生
早期的瀏覽器頁面很簡單,就是用一些 HTML 和 CSS 寫的,跟上面的圖顯示的差不多。里面就一些簡單的超鏈接,沒有像現(xiàn)在的瀏覽器頁面那樣炫酷的東西。
后來有一家公司叫 Netscape(網(wǎng)景)公司,這家公司不簡單,在一次公司會議中有人提出了一個想法,說能不能在瀏覽器頁面上跟客戶端的用戶有一些交互?
這個想法一被提出來,馬上引起了公司員工的熱議,各種新鮮的想法一躍而出,比如在點(diǎn)那些超鏈接的時候出現(xiàn)彈框提示等,在那個絕大多數(shù)用戶都在使用調(diào)制調(diào)解器上網(wǎng)的時代,用戶填寫完一個表單點(diǎn)擊提交,需要等待幾十秒,完了服務(wù)器反饋給你說某個地方填錯了。
emmmmm······
在當(dāng)時,如果能在客戶端完成一些基本的驗(yàn)證絕對是令人興奮的。但這僅僅是想法,關(guān)鍵是如何去實(shí)現(xiàn)呢?
不要急,關(guān)鍵的人物出現(xiàn)了,當(dāng)時就職于網(wǎng)景公司的布蘭登 * 艾奇是個牛人,他回去了后在家奇思妙想,而創(chuàng)新有時候就是在這種奇思妙想中產(chǎn)生的,他搞了幾天就搞出一門編程語言,解決了在瀏覽器客戶端與用戶交互的問題。
沒錯,這個腳本語言就是 JavaScript 。這種語言能在網(wǎng)頁上和用戶產(chǎn)生互動,讓用戶體驗(yàn)更佳。這個語言出世后很火,可以說是取得了很大的成功。其實(shí)這門語言剛出現(xiàn)的時候叫 LiveScript ,后來網(wǎng)景公司為了搭上媒體熱炒的 Java 順風(fēng)車,臨時把 LiveScript 改為 JavaScript 。
所以從本質(zhì)上來說 JavaScript 和 Java 沒什么關(guān)系。JavaScript 1.0 獲得了巨大的成功,網(wǎng)景公司隨后在Netscape Navigator 3(網(wǎng)景瀏覽器)中發(fā)布了JavaScript 1.1。
之后作為競爭對手的微軟在自家的 IE3 中加入了名為 JScript(名稱不同是為了避免侵權(quán))的 JavaScript 實(shí)現(xiàn)。而此時市面上有3個不同的JavaScript 版本,分別是 IE 的 JScript 、網(wǎng)景的 JavaScript 和ScriptEase 中的 CEnvi 。
當(dāng)時還沒有標(biāo)準(zhǔn)規(guī)定 JavaScript 的語法和特性。隨著版本不同暴露的問題日益加劇,JavaScript 的規(guī)范化最終被提上日程。
1997年,以 JavaScript1.1 為藍(lán)本的建議被提交給了歐洲計(jì)算機(jī)制造商協(xié)會(ECMA,European Computer Manufactures Association)該協(xié)會指定 39 號技術(shù)委員會負(fù)責(zé)將其進(jìn)行標(biāo)準(zhǔn)化,TC39 來此各大公司以及其他關(guān)注腳本語言發(fā)展的公司的程序員組成,經(jīng)過數(shù)月的努力完成了ECMA-262——定義了一種名為 ECMAScript 的新腳本語言的標(biāo)準(zhǔn)。
第二年,ISO/IEC(國標(biāo)標(biāo)準(zhǔn)化組織和國際電工委員會)也采用了ECMAScript 作為標(biāo)準(zhǔn)(即ISO/IEC-16262)。
到這故事就講完了,有些是自己虛構(gòu)的情節(jié),不要考量故事的真實(shí)性,沒意義,能從中學(xué)到知識就好,可能有些理解還不到位,要是有高人在可以在留言區(qū)補(bǔ)充修改。
B/S和C/S優(yōu)缺點(diǎn)比較
B/S
C/S