客户端-服务器模式
首先我们得知道,客户端-服务器模式一种常见的软件架构模式。那么什么是架构模式呢?下面给出了定义。
架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。
架构模式与软件设计模式类似,但具有更广泛的范围。(维基百科)
而客户端-服务器模式由两部分组成:一个服务器和多个客户端。服务器组件将为多个客户端组件提供服务。
客户端从服务器请求服务,服务器为这些客户端提供相关服务。此外,服务器持续侦听客户机请求。
使用场景:
- 电子邮件,文件共享和银行等在线应用程序
客户端-服务器模式的优点是:很好地建立一组服务,用户可以请求他们的服务。
缺点是:请求通常在服务器上的单独线程中处理。由于不同的客户端具有不同的表示,进程间通信会导致额外开销。
由于上面的讲述比较笼统,你可能并没有理解什么是客户端-服务器模式,接着我给大家详细的讲解一下究竟什么是客户端-服务器模式。
(以上内容引用自 https://www.cnblogs.com/IcanFixIt/p/7518146.html)
客户服务器模式(Client–server model)简称C/S结构,是一种网络架构,它把客户端 (Client) 与服务器 (Server) 区分开来。
每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。
客户服务器模式通过不同的途径应用于很多不同类型的应用程序,最常见就是目前在因特网上用的网页。
例如,当你在维基百科阅读文章时,你的电脑和网页浏览器就被当做一个客户端,同时,组成维基百科的电脑、数据库和应用程序就被当做服务器。
当你的网页浏览器向维基百科请求一个指定的文章时,维基百科服务器从维基百科的数据库中找出所有该文章需要的信息,结合成一个网页,再发送回你的浏览器。
C/S模式是一个逻辑概念,而不是指计算机设备。
在C/S模式中,请求一方为客户,响应请求一方称为服务器。
如果一个服务器在响应客户请求时不能单独完成任务,还可能向其他服务器发出请求。
这时,发出请求的服务器就成为另一个服务器的客户。
从双方建立联系的方式来看,主动启动通信的应用叫客户,被动等待通信的应用叫服务器。
下面详细说一下这种模式的优劣
优势
●在大多数情况下,客户机服务器体系结构允许的角色和责任的计算系统是其中几个已知只有通过网络互相独立的计算机分发。这将创建一个额外的优势,这种体系结构:提高维护的简便性。例如,它可以更换,维修,升级,甚至迁移服务器,同时它的客户都不知情,并保持该更改的影响。
●所有数据都存储在服务器上,通常比大多数客户更大的安全控制。服务器可以更好地控制访问和资源,以保证只有那些具有适当权限的用户可以访问和更改数据。
●由于数据的集中存储,对数据的更新是更容易管理相比,一个P2P模式。在后者,数据更新可能需要分发和应用到每个网络中的对等,既费时又容易出错,因为可以有成千上万甚至数百万的同龄人。
●许多成熟的客户端服务器技术已经可以方便的目的是确保安全,用户界面友好,易用性。
●具有不同功能的多个不同的客户它的功能。
劣势
●作为客户端同时请求数给定的服务器的增加,服务器可以成为重载。对照到一个P2P网络,在其总带宽实际上增加为节点的添加,由于P2P网络的总带宽可以大致计算作为该网络中每个节点的带宽的总和。
●客户机服务器模式缺乏一个良好的P2P网络的鲁棒性。在客户端服务器,如果一个重要的服务器失败,客户的要求不能得到满足。在P2P网络,资源通常分布在许多节点。即使一个或多个节点出发,放弃一个下载文件,例如,剩下的节点应该还是有必要来完成下载的数据。
最后介绍一下这种模式的特征:
主从式架构意图提供一个可缩放 (scalable)的架构,借此网上的计算机或者处理过程是一个客户端或者服务器。服务器软件一般,但不是总是,运行在强大的专用商业计算机上。另一方面,客户端一般运行在普通个人电脑或者工作站上。
服务端的特征:
-
被动的角色(从)。
-
等待来自用户端的要求。
- 处理要求并传回结果。
客户端特征:
-
主动的角色(主)。
-
发送要求。
-
等待直到收到回应。
服务器可是有状态或者无状态的。无状态的服务器不会保留任何两个请求之间的信息,有状态服务器会记住请求之间的信息。这些信息的作用域可以是全局的或者某个事务 (session)的。静态 HTML 页面服务器是一个无状态服务器的例子,Apache Tomcat 是一个有状态服务器。