`
bulote
  • 浏览: 1307858 次
文章分类
社区版块
存档分类
最新评论

你不是菜鸟(9):一个B/S老鸟的困惑

 
阅读更多
你不是菜鸟(9):一个B/S老鸟的困惑

前几天,收到一封来自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、学会经营自己的优势:是金子就会发光,利用自己的优势,努力营造自己的优势!
分享到:
评论

相关推荐

    实现坐标转换程序(C#桌面窗体)

    需手动输入坐标,实现ECEF空间直角坐标系等四种坐标之间相互转换。 具体代码流程可见主页文章。 通过下拉框,自由选择输入输出坐标系后,在左侧文本框手动输入一组或多组坐标,可以实现ECEF空间直角坐标系,ECEF球面坐标系,ECEF椭球坐标系(大地坐标系),站心坐标系四个坐标系统之间的自由转换,共12种转换方式。然后将转换后的坐标结果输入到右边文本框。 适用于GNSS相关课程的编程作业,测绘、地信等专业实践。 ------------------------------------------------------------------------------------------------------------------------- 该代码可能存在部分不足与漏洞。实际运行时没有发生过错误。

    基于matlab实现直角坐标系下的牛顿拉夫逊潮流计算MATLAB程序.rar

    基于matlab实现直角坐标系下的牛顿拉夫逊潮流计算MATLAB程序.rar

    基于matlab实现麦克风阵列SRP-PHAT算法的二级空间快速声源定位,含模拟环境 .rar

    基于matlab实现麦克风阵列SRP-PHAT算法的二级空间快速声源定位,含模拟环境。.rar

    node-v10.16.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    dephi+sqlserver2000题库与试卷生成系统.zip

    dephi+sqlserver2000题库与试卷生成系统.zip

    node-v10.24.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+ACCESS网页设计辅导系统(源代码+设计说明书).zip

    ASP+ACCESS网页设计辅导系统(源代码+设计说明书).zip

    中考实验视频.zip

    中考实验视频.zip

    基于VB+access实现的学生成绩管理系统(开题报告+答辩PPT+论文+系统).zip

    基于VB+access实现的学生成绩管理系统(开题报告+答辩PPT+论文+系统) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    基于matlab实现模拟退火程序 f(x,y) = 5sin(xy) + x^2 + y^2的最小值

    基于matlab实现模拟退火程序。f(x,y) = 5sin(xy) + x^2 + y^2的最小值,对理解模拟退火算法是一个很好的程序示例.rar

    node-v5.4.1.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+access网上人才信息管理系统毕业设计(源代码+设计说明书).zip

    ASP+access网上人才信息管理系统毕业设计(源代码+设计说明书).zip

    node-v10.22.1-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.16.3-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    CASS工艺参数设计计算表.xls

    污水处理计算书

    ASP+ACCESS文学网站建设设计(源代码+设计说明书+系统).zip

    ASP+ACCESS文学网站建设设计(源代码+设计说明书+系统).zip

    http代理服务器的实现(程序).zip

    http代理服务器的实现(程序).zip

    node-v6.14.4-x64.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    JSP教学管理系统设计(源代码+设计说明书).zip

    JSP教学管理系统设计(源代码+设计说明书).zip

    2024年木纹砖行业分析报告.pptx

    行业报告

Global site tag (gtag.js) - Google Analytics