[架构设计]由面试引发的思考:B/S与C/S究竟是何物
由面试引发的思考:B/S与C/S究竟是何物 一、现状说明:
就在这金三银四的求职黄金时期,我有幸作为公司的独立技术面试官,拥有最终决定录用权,在倍受上级领导的充分信任下,我也向上级保证,一定要为公司找到合适的人才,就在我满怀信心的情况下面试了一个又一个的求职者,发现了大多数求职者共同的问题,一是:眼高手低,即工作年限虽长,但受工作内容及个人原因,基础知识薄弱,很多技术使用了N年,却不明白其原理,可以说是:只知道这样用,但为什么要这样用,能否有别的解决方案从来都没有去考虑过或总结过,知识的广度就更不用说了,薪资期望却都很高 。二是:B/S与C/S分不清,认为B/S就是做与网页有关的东西,可以涉及到的技术点多,如:JS\CSS\HTML\C#\MVC,只想从事B/S方向的工作内容,觉得其热门与流行,而认为C/S就是做客户端桌面程序,如:,WPF;觉得其太简单了或没有发展前景,那么实事是这样吗?本文主要就是来谈谈B/S与C/S究竟为何物,它们之间到底有什么异同点 。
二、B/S
B/S即:与,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的,浏览器,其实也是一种客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端浏览器就能进行增删改查 。不依赖用户的电脑操作系统环境,只与浏览器环境有关,当然由于网页复杂性,又延伸出网页前端技术与后端技术,前端技术指的是在浏览器上编程的技术,比如:JS,HTML,CSS,这些前端技术是运行在客户端浏览器上的,而并非在服务器端,如果不信,可以测试一下,当你的页面中包含JS脚本时,若将浏览器属性中的禁用JS启用,你会发现页面中那些依赖JS的技术都没办法使用 。后端技术指的是运行在服务器上编程的技术(也就是端),比如:C#,JAVA,这些编程技术与我们通常所理解的C#编程,JAVA编程是一样的,只是这里需要考虑到基于HTTP协议的编程 。架构图如下所示:
文章插图
三、C/S
C/S即:与 ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的,这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大,比如:若想运行基于开发的EXE程序,必需要先在电脑上安装.NET 组件,否则无法正常运行 。端这里是一个非必要的部份,若客户端是一个单机应用程序,无需数据库或其它分布式技术,那么端是可以省略的,若客户端需要数据库或其它分布式技术,那么这里的端指的是数据库服务器端或其它分布式技术(WEB API,WEB 等)所在的服务器端 。架构图如下所示:
文章插图
四、B/S与C/S异同点
文章插图
B/S与C/S的共同点从英文缩写都能看得出来,都有S,这个S指的是服务器端(应用程序后端),服务器端只是一个统称,具体细分的话,有:应用程序服务器端、数据库服务器端、缓存服务器端、文件服务器端等,不同点同样也可从英文缩写中看得出,那就是B与C的区别,从前面分别介绍与B/S与C/S得知,B指的是浏览器端,C指的是客户端,但是如果从广义的角度来说,B同样也是一种客户端,浏览器同样需要安装,不安装同样B/S结构也一样不能工作,只是一般浏览器都默认安装罢了,从架构的层面来讲,B/S与C/S的唯一区别就是展现层不同,B/S可能需要懂网页前端技术,C/S可能需要懂,WPF等应用前端技术,其余全部都相同,如果单纯讲从事C#或JAVA后端开发,那么B/S与C/S就是一样的,都是利用C#或JAVA之类的动态语言为展现层提供资源或对资源进行相关的处理 。如果一个公司分工明确的话,那么C#或JAVA工程师所应该做的事情就是后端开发,与前端无关,也就没有必要强调B/S与C/S了,当然懂点前端技术更好,可以为自己的技术锦上添花,但如果要让公司为你懂得前端技术而买单(提高工资待遇)【全栈工程师除外】那多半有点一厢情愿了,换作我是老板,我肯定更愿意找专业的前端与专业的后端,这种前后端都略懂,但都不够专业的,还不如不要 。B/S与C/S的统一架构如下图示:
- OpenWrt路由器设置IPv6域名动态解析
- 中秋吃月饼的由来竟然和杨贵妃有关?
- 天线设计中的磁介质材料 探索可重构潜力
- 利玛窦曾盛赞科举制:国家均由知识阶层治理
- 谷粒商城一介绍及基本架构todo
- 令我欣慰的读者反馈《大话Java程序设计从入门到精通》
- 八十万禁军教头林冲被谁设计逼上梁山落草
- 互联网的双中台架构实战
- stm32毕业设计 电子时钟设计与实现
- 揭秘古代四大凶兽由来为什么说和舜帝有关