你不是菜鸟(9):一个B/S老鸟的困惑
前几天,收到一封来自B/S开发高手的来信,其内容如下:
博主你好:
博客文章非常好,我也是有些许疑惑,一直在缠绕着自己, 我也做开发3年多了从Asp做到Jsp【ssh 多种组合】再到现在的PHP【自己也写了个公司架构】,现在是个teamleader 项目架构也从简单的虚拟主机、单独服务器、均衡负载等等。开发方面一直在这么做下去。
可我一直认为,如果纯做这种BS架构的东西,我一直没有对程序入门!
此入门或许你应该能理解到bs 的 和 cs 的区别,我想走CS 方向 可看代码都没问题 可是CS 和BS的区别在于 需要调用的函数太多了 需要去了解太多的 包 我这人很烦笔试,但凡有鄙视的,如果题目太基础,我基本都白卷走人,我是来做事的,不是学校毕业的,不想当菜鸟来考基础题的:)
坚持我的BS ,那我的路在何方?
我现在基本上已经是负责策划与架构,可我总看不到我所能看到的东西——涨薪资,或者说没有更大的技术上的挑战!!!
如果我走 CS 路在何方?
回信内容如下:
看到了你的来信,看得出来你的心情很困惑,我在此不得不花一些时间好好的给你说说。
从你的文章中得知,你在CS与BS架构方面比较困惑,同时,对自己坚持的东西似乎看不到方向了,我想我从以下两个方面来说:
从你的文章中得知,你在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结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过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程序>中有这样一段描述:
可以观察一下这两个结构的形式,看看它们有什么相似之处。
![](http://hi.csdn.net/attachment/201009/8/0_1283908901FAZi.gif)
客户端软件是为了完成更多的管理功能而开发的,通过它将与数据库系统进行数据交换,达到管理数据的目的。将各种计算与数据逻辑加入到客户端软件中,服务器端只负责存取数据,因此,客户端与服务器端交互的数据完全是纯数据流。
然后我们再看一下B/S的架构,
B/S结构的客户端是浏览器,数据逻辑与计算基本上都是在服务器端进行,客户端仅仅是将计算与数据取得的结果予以呈现,而这时候所呈现的内容也依赖服务器端所返回的Http数据流中包含的标记。
大家看看这两个结构图的差异,不难发现他们的基本结构极其相似,都是有“客户端”的,只不过B/S的客户端是浏览器而已。这说明,从本质上来说,B/S结构的系统也是一种C/S的软件。
然后我们再看一下B/S的架构,
![](http://hi.csdn.net/attachment/201009/8/0_12839089113pnA.gif)
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、学会经营自己的优势:是金子就会发光,利用自己的优势,努力营造自己的优势!
《Java程序员,上班那点事儿》:
前言,目录
卓越网销售链接
China-pub销售链接
当当网销售链接