討論5:一個B/S高手的困惑
☆★☆★快來!!10月25日讀者見面會☆★☆★ 前幾天,收到一封來自B/S開發高手的來信,其內容如下:博主你好: 部落格文章非常好,我也是有些許疑惑,一直在纏繞著自己, 我也做開發3年多了從Asp做到Jsp【ssh 多種組合】再到現在的PHP【自己也寫了個公司架構】,現在是個teamleader 項目架構也從簡單的虛擬機器主機、單獨伺服器、均衡負載等等。開發方面一直在這麼做下去。 可我一直認為,如果純做這種BS架構的東西,我一直沒有對程式入門! 此入門或許你應該能理解到bs 的 和 cs 的區別,我想走CS 方向 可看代碼都沒問題 可是CS 和BS的區別在於 需要調用的函數太多了 需要去瞭解太多的 包 我這人很煩筆試,但凡有鄙視的,如果題目太基礎,我基本都白捲走人,我是來做事的,不是學校畢業的,不想當菜鳥來考基礎題的:) 堅持我的BS ,那我的路在何方? 我現在基本上已經是負責策劃與架構,可我總看不到我所能看到的東西——漲薪資,或者說沒有更大的技術上的挑戰!!! 如果我走 CS 路在何方?
回信內容如下: 看到了你的來信,看得出來你的心情很困惑,我在此不得不花一些時間好好的給你說說。
從你的文章中得知,你在CS與BS架構方面比較困惑,同時,對自己堅持的東西似乎看不到方向了,我想我從以下兩個方面來說: 1、BS和CS本質上沒有任何區別,但他們又有區別,請參考我的書中的某章節
2、如何利用好現有技術再去深挖它的潛力。
3、薪資的問題得慢慢來。
好,下面我們來分別闡述。
1、BS和CS本質上沒有任何區別,但他們又有區別 我在《Java程式員,上班那點事兒》7.4.1 <B/S是一個很好的創意>中有這樣一段描述: 在互連網應用程式應用初期,大多數應用都是建立在C/S結構基礎上的,瀏覽器的應用促使動態網頁面的實現,於是就有人提出來,能不能用瀏覽器作為應用程式的用戶端呢?
於是,B/S程式結構便應運而生,瀏覽器和伺服器結構是對C/S結構的一種變化或者改進的結構。在這種結構下,使用者工作介面是通過WWW瀏覽器來實現,極少部分事務邏輯在前端(Browser)實現,但是主要事務邏輯在伺服器端(Server)實現,形成所謂三層結構。這樣就大大簡化了用戶端電腦載荷,減輕了系統維護與升級的成本和工作量,降低了使用者的總體成本。
以目前的技術看,區域網路建立B/S結構的網路應用,並通過Internet/Intranet模式下資料庫應用,相對易於把握、成本也是較低的。它是一次性到位的開發,能實現不同的人員,從不同的地點,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)訪問和操作共同的資料庫;它能有效地保護資料平台和管理存取權限,伺服器資料庫也很安全 。特別是在Java這樣的跨平台語言出現之後,B/S架構管理軟體更是方便、快捷、高效。
傳統的C/S體繫結構雖然採用的是開放模式,但這隻是系統開發一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟體支援。 所以,我們說B/S實際上是在C/S發展多年基礎上創意衍生出來的一種程式運行方式。我在我在《Java程式員,上班那點事兒》7.4.2 <B/S程式本身也是一個C/S程式>中有這樣一段描述: 可以觀察一下這兩個結構的形式,看看它們有什麼相似之處。 用戶端軟體是為了完成更多的管理功能而開發的,通過它將與資料庫系統進行資料交換,達到管理資料的目的。將各種計算與資料邏輯加入到用戶端軟體中,伺服器端只負責存取資料,因此,用戶端與伺服器端互動的資料完全是純資料流。
然後我們再看一下B/S的架構,
B/S結構的用戶端是瀏覽器,資料邏輯與計算基本上都是在伺服器端進行,用戶端僅僅是將計算與資料取得的結果予以呈現,而這時候所呈現的內容也依賴伺服器端所返回的Http資料流中包含的標記。
大家看看這兩個結構圖的差異,不難發現他們的基本結構極其相似,都是有“用戶端”的,只不過B/S的用戶端是瀏覽器而已。這說明,從本質上來說,B/S結構的系統也是一種C/S的軟體。
所以,當你真正的瞭解到C/S和B/S的本質與聯絡後,你就更能夠使用好B/S結構的柔韌有餘的靈活之處了。 當然,我看得出來,你應該是一個出身於“ASP”的程式員,ASP的進入門檻較低,利用ASP的思維可以套出JSP,也可以套出PHP,但無論如何也套不出JavaSE,以及VB/VC。所以,你對J2se、VB、VC有很強的神秘感。 然而,當你瞭解了他們的本質以後,你會發現也沒有什麼神秘的了!
2、如何利用好現有技術再去深挖它的潛力。
如果,你搞JSP不想搞清楚Java是不可能的,但是搞清楚Java不一定要搞J2se的程式。J2se的程式目前來說應用範圍在縮小,更多的還是利用Java去程式開發伺服器端組件,多線程網路服務程式等等。
所以,如何利用好自己的現有技術優勢,去深挖它的潛力是尤為重要的。 我想我對你應該有幾個建議: 1、可以研究一下利用Java開發一些主機網路服務程式,利用Java的跨平台優勢搞出點名堂來。 2、利用你B/S結構豐富的知識,搞出些名堂來,別小看PHP,目前業內很多大型門戶的開發語言就是PHP,好多開源的網站架構都是PHP的。
3、薪資的問題得慢慢來 我們技術人員往往都容易陷入一個誤區,想當然的認為薪資水平一定和技術水平掛鈎的。其實,不盡然! 你說會Java的就一定比會PHP的水平高? 但有時候,PHP的程式員拿得工資就會比Java程式員工資高,你如何解釋? 所以,薪資水平並不等於技術水平,技術水平也並不等於使用哪種語言,或哪種開發方式。 你說,C/S開發就一定比B/S開發的人工資高? 誰告訴你的? 影響你工資的只有一個,那就是:
供求關係! 你是一個相對少的人才,你的工資就是相對高的,你是一個相對多的人才,你缺少競爭力,你的工資就相對低。但有時候,你是一個相對多的人才,但是在那個公司的地位相對高,或者某個項目對於這個公司很重要,而你卻又是這個項目的創始人之一,缺了你這項目就得找別人研究倆月,那麼你仍然工資相對高。 這說明什嗎?
供求關係! 所以,你不需要著急,供求關係在一定情況下不平衡時,你的薪資就會調整。當然,這個過程自然是緩慢的,你也可以通過你的方法提示公司方面,但要注意方式方法,切不可以辭職作為要挾,以及其他過激行為,往往會適得其反。 如果,你不能做到“供求關係”有利於你,那麼你應該作的就是去想辦法,將“供求關係”調整的適合你,這個就得自己想辦法了。
結論: 回答你的問題,你的發展方向是怎麼樣? 1、忘掉C/S和B/S的那個耿耿於懷的事情吧! 2、學會經營自己的優勢:是金子就會發光,利用自己的優勢,努力營造自己的優勢! 鐘聲2009-8-10 0點25分
《
Java程式員,上班那點事兒
》,
前言
,
目錄
卓越網銷售連結
China-pub銷售連結
噹噹網銷售連結
《Java程式員,上班那點事》紀念帖
☆★☆★快來!!10月25日讀者見面會☆★☆★