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