c/s和b/s是对软件结构的分类,或者说软件架构。
其中,c是client的缩写,s是server的缩写,b是browser的缩写。
Client指的是客户端
Server指的是服务器
Browser指的是浏览器
c/s就是客户端与服务器、b/s就是浏览器与服务器。
软件架构
简单来说,软件架构大致指的是:一个软件的组成部分,以及各个组成部分之间的关系、职责。
拿c/s来举例:
一个c/s架构的软件,它的组成部分主要是client和server,它们各自负责着一些工作,组合在一起,共同实现这个软件的功能。
server
server在c/s和b/s中都充当着重要一环,职责也大致相同。
server负责存储数据、安全系数比较高的计算、以及负责各client之间的同步和协调等工作。
比如,你微信钱包里还有100元,这个100元的数字一定是存储在server的,而不是存在你手机里,否则,你一旦换手机登录微信,100元就没了。
另外,server安全系数较高,用户没有操作的权限,仍然是那100元,如果存在client,也就是你的手机里,你是不是有可能将他改成10000?但在server上,你没有操作的权限。
当然,上面只是一个例子。
c/s
c/s架构前面有说过,组成部分是client和server
client负责给用户:
- 显示界面
- 响应交互
- 与server通讯
- …
client由开发者针对系统特性开发。
由于client本身就负责与server进行通讯,那么,通讯方式也是能够定制和扩展的。
b/s
b/s架构的组成成员是browser和server。
browser不像client一样那么全职,browser主要只负责充当一个可以和server通讯的容器。
那么容器里放什么东西呢?html、css、javascript,也就是网页。
用户界面和响应交互,是由网页来负责的,网页需要开发者开发。
所以,b/s模式的软件开发通常会被称作web开发。
和c/s比起来,browser已经为web开发者提供了封装好的通讯功能,不需要像client一样自己去实现。
选择
又回到这个问题。
了解软件架构的特性,对于选型而言很重要,你需要根据项目背景等因素,去考虑如何选择软件架构。
不同的软件架构,所需要的技术栈、技术人才、技术成本都不一样。
说说优缺点吧。
c/s:
成本相对高、跨平台相对难、通常需要安装
但体验相对好、性能相对高、定制性相对高
很关键的一点,client在没有其他抽象层的情况下,直接依赖操作系统,它的功能显然也更多,它能调用系统级的api。
b/s:
成本相对低、跨平台性相对好、且不用安装
但体验相对弱、性能相对弱、定制性相对弱,功能当然也相对弱,它只能调用browser所开放的接口,不是系统级的。
毕竟web网页依附于browser才能运行。
另外,还要考虑到浏览器种类繁多带来的兼容问题。当然,现在这一现象越来越改善了
思考
其实这个我们可以想象联想一下jvm
Jvm作为一个中间的抽象层,让java中间码只依赖于它,而不是直接依赖于操作系统,这赋予了java跨平台性
Browser正是中间那个抽象层,让用户界面直接依赖于browser,而不是操作系统,这赋予了b/s架构的软件跨平台性
这里又延伸到抽象层的思考,我们会发现,一个项目变得复杂了之后,维护会成为一个比较头痛的问题。为了让项目变得可维护,我们会通过各种手段,各种思想,将他解耦,到最后,我们会发现,这个项目的架构变得比刚开始的架构复杂很多,你再仔细观察一下,中间增加了许多层。这些层负责的职责,越来越单一,越来越清晰。
网友评论