什么是B/S架构和C/S架构?
导读:B S架构和C S架构在软件开发和实际应用中各有优势和局限性,但都在特定的场景下发挥了重要的作用。希望通过本文,我们能一起探索这两种架构的魅力,并了解它们在实际项目中的应用。
摘要
在现今的软件行业当中,如何优化技术方案以提供更好的用户体验和更高的服务质量,是每一个开发商所关注的核心问题。其中,网络系统架构模式的选择是决定软件性能、可用性以及后续升级维护难易程度的关键因素。但是,对于很多非技术背景的客户来说,网络系统架构似乎是一个神秘而复杂的概念。
为了帮助大家更好地理解这个问题,在本次宙思科普小课堂当中,我们将以通俗易懂的语言、生动有趣的QA互动模式(“Question and Answering”,Q是客户提问,A是科普解答),为大家介绍两种最常见的网络系统架构模式:B/S架构和C/S架构。这两种架构在软件开发和实际应用中各有优势和局限性,但都在特定的场景下发挥了重要的作用。希望通过本文,我们能一起探索这两种架构的魅力,并了解它们在实际项目中的应用。
B/S和C/S架构的概念与区分方法
Q:我们单位最近想定制一款软件,来实现某项三维可视化业务的需求。但是对于软件的开发与应用,我们没有很专业和深入的认知。听说在网络架构设计方面,存在着B/S和C/S两种架构模式。这两者的概念分别是什么?
A:B/S架构和C/S架构是目前在软件开发领域,最为常见的两种网络系统架构模式。所谓B/S架构,就是“浏览器和服务器架构模式”。它的基本特征,是以浏览器(Browser)作为获取服务的入口,通过服务器(Server)提供数据存储和计算等服务。
而C/S架构,则是“客户端和服务器架构模式”。它的基本特征,是以客户端(Client)作为获取服务的界面,通过服务器(Server)提供数据处理和业务逻辑等服务。
Q:所以B/S架构和C/S架构的核心区分点,就在于获取服务的途径和入口存在着差异,可以这样理解吗?
A:对。要分辨一个网络系统是B/S架构还是C/S架构,其实并不复杂,只要把握住“获取服务的入口”,就可以进行有效的区分。简而言之,用户打开浏览器来获取软件服务的,就是B/S架构;打开应用程序来获取服务的,则是C/S架构。这里有两个例子,可以帮助您更好地理解这两种架构的表现形式。
Beta是一个计算系统。开发者搭建了一个网站,用户用浏览器打开网站后就会以远程桌面的形式打开Windows自带的计算器,所有的计算操作都是通过计算器完成的。那么这个Beta计算系统是什么架构呢?可以看出,由于用户进入计算机系统的方式是打开浏览器,因此这是一个典型的B/S架构。
Delta是一个收款系统。开发者使用开源的浏览器作为基础打包了一个程序,用户每次打开这个程序就会跳转到支付宝网站的页面,然后支付操作都是通过支付宝网站完成的。那么这个Delta收款系统,使用的又是什么框架呢?根据介绍,用户进行支付操作的首要步骤是打开程序,因此这是一个典型的C/S架构。
B/S和C/S架构的优缺点
Q:这么看来,B/S架构和C/S架构还是挺容易区分的。我还想再深入了解一下,对于我们软件使用方而言,B/S架构和C/S架构分别具有什么样的优势和不足之处呢?哪种网络系统架构比较适合我们的工作开展?
A:选择何种网络系统架构作为软件的设计基底,本质上还是要根据客户单位的需求。针对不同的功能和目标,我们会为其提供一套最为精准的系统解决方案。客观而言,B/S架构和C/S架构都有其独特的优缺点,它们主要表现在以下的方面。
首先来谈谈B/S架构。B/S架构的搭建具有着鲜明的网络技术特征,与人们日常的网络使用需求高度重合。一次开发即能适配多个系统,无须安装客户就能立即使用,是B/S架构最为核心的优点。在这种架构下,用户工作界面是通过WWW浏览器来实现的。当然,也正是因为这个原因,B/S架构不可避免地受浏览器性能限制,导致软件性能优化困难,这是其弊端。
B/S架构示意图
有别于B/S架构的逻辑和原理,C/S架构是一种分布式应用结构。在这种架构中,客户端负责前端的用户交互,而服务器则负责处理请求、数据管理、计算等后端任务。C/S架构的优点是明显的,一方面它能有效分散计算负载,另一方面由于服务器端的改变不会影响到客户端,因此它更便于维护和更新。当然,在这种架构之下,由于客户端和服务器紧密地连结在一起,因此服务器一旦出现故障,会导致客户端无法使用的问题,这是其最为致命的问题。
C/S架构示意图
聚焦三维B/S架构的实现方式
Q:听了你对B/S和C/S架构的介绍以后,我对其中的B/S架构特别感兴趣,因为它看起来能够快速地响应我们本次三维可视化项目的需求,有利于让单位里的员工更加便捷、轻松地使用这款软件,无须大费周章地在每一台电脑上面安装应用程序。那么我想知道,通过B/S架构的软件来实现三维可视化的功能,都有哪几种方式?
A:从软件开发的角度而言,目前三维B/S架构的实现方式,有WebGL和云渲染这两种手段。
WebGL是Web Graphics Library的简写,一般译作“Web图形库”。这种三维B/S架构的实现方式,说白了其实是一种3D绘图协议,它相当于制定了一个标准,让所有的浏览器都提供统一的3D绘图API接口。而云渲染的基本概念,则是在服务器上运行3D程序,通过网络一方面将用户输入传输给服务器,另一方面将服务器渲染好的图像传输给用户。应当说,这两者的技术,存在着本质上的差异。
Q:它们的差异性主要体现在什么地方?
A:WebGL的技术本质,是浏览器通过网络将三维模型和脚本从服务器下载到自身当中,随后在用户设备上将三维模型渲染出来。而云渲染的技术本质,其实是一种远程桌面和云桌面,将服务器渲染好的图像传输给用户。
也正是因为二者的技术本质存在着差异,因此在部署方式上也会有所不同。通常来说,WebGL的部署方式,是在服务器上放置我们的资源包,让用户通过网络访问下载,这种服务形式我们称之为ToB。而云渲染的部署方式相对来说要复杂一点,首先我们要找到一家云渲染服务商,随后将程序上传到服务商的服务器上面并生成一个访问网址,再将服务商给的网址发送给客户进行访问。
云渲染的部署需要找到专业的服务商
Q:那按照这种思路去制作软件的话,是不是云渲染的成本要比WebGL更为高昂?毕竟云渲染的技术需要额外找服务商来实现。
A:就目前市场的价格水平而言,实现云渲染所要花费的成本确实会比较高,这是它最为显著的短板。自己部署单云渲染框架软件要花费10万元左右,硬件设备的价格另算(一般100万元以上)。当然,也可以采取按时按路收费的租赁模式,通俗地理解,相当于服务商为用户提供网吧服务,粗略计算每个用户每小时花费1元左右。
不过,云渲染也有着一些WebGL无可比拟的优势。一方面云渲染的开发难度要比WebGL低,它的开发难度仅等同于开发PC程序;另一方面它真正实现了“一次开发、全平台使用”的目标;最后其渲染效果与用户设备无关,有效地摆脱了用户自身设备所带来的局限性。
Q:这么看来,在项目预算足够充足的情况下,云渲染的技术能够大幅提升软件使用方的用户体验啊,而且也能压缩产品的交付周期,让软件更快地上线。
A:确实如此,因此这种技术也逐渐广泛地被应用起来。
云渲染云架构图
Q:关于云渲染技术,我现在已经有了一个大致的认识了。最后我还想了解一下,作为一种在浏览器端运行的技术,WebGL在实现三维渲染时,相较于云渲染,有哪些优势和可能面临的困境?
A:由于云渲染的成本较高,WebGL目前还是比较主流的三维B/S架构实现方式。它的优点一是运维费用低,用户只需要支出大概10元/年/G的一个费用,就能够享受地网络存储服务;二是运行时基本不受网络影响,这得益于它“下载到本地后再展开运行”的技术逻辑。
当然,WebGL也有着一些不可避免的缺点,例如软件性能会受到浏览器限制(无法渲染大场景,不同浏览器所呈现的效果也不一样)以及用户设备的影响。与此同时,WebGL开发难度过大,也是它无法回避的一个问题,诸如开发调试极为耗时、一旦遇到浏览器相关的问题就缺乏有效的解决办法、可用插件过少等一系列的问题,都使得WebGL在未来的发展面临着诸多挑战。
WebGL技术目前仍是较为主流的B/S架构实现方式
从行业升级和技术应用的整体趋势而言,应当说,云渲染是B/S架构的未来发展方向——当云渲染服务器的数量足够多时,资源调配将变得易于实现(相当于共享电脑),这意味着会有效降低用户的成本,甚至变得比个人购买电脑更加便宜;另一方面,随着国内网速不断提高、上网费用逐步下降的客观状况,云渲染未来的部署成本也将得到有效控制。
我们完全有理由相信,当技术水平和开发成本二者达到一个较好的平衡以后,未来,云渲染的应用将越来越广泛,极有可能会成为三维B/S架构的核心实现方式!这既是技术发展的总体趋势,也是我们为客户提供优质体验的努力方向!