• 网路编程和并发:2.什么是C/S和B/S架构?


    1.C/S 架构

    客户端和服务器之间的架构。Client-Server也称客户机服务器模型。

    在Client/Server结构的系统中,应用程序分为客户端和服务器两点部分,客户端为每个用户所有,服务器由多个用户共有。客户端部分通常负责执行前台功能,如管理用户接口,数据处理和报告请求等。服务器执行后台服务,如管理共享外设,控制对共享数据库的操作。这种体系结构由多台计算机构成,它们有机的结合在一起,协同完成整个系统的应用,从而达到系统中软、硬资源最大限度的利用。

    但是,任何一个网路系统都是由3个部分组成,显示逻辑部分(表示层),事务处理逻辑部分(功能层),数据处理逻辑部分(数据层),显示逻辑部分的功能是与用户进行交互,事务处理逻辑部分的功能是进行具体的运算和数据处理,数据处理逻辑部分的功能是对数据库的额数据进行增删改查。在两层模式的Client/Server系统中,显示逻辑部分和事务处理逻辑部分均被放在了客户端,数据处理逻辑部分和数据库均被放在服务端,这样就使得客户端很胖,成为胖客户机,而服务端的任务很轻,成为瘦服务器。

    C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端,安装后就可以使用。比如QQ,OFFICE软件等。

    C/S架构的优点:

      1.客户端界面和操作可以很丰富。

      2.安全性高,因为只有两层传输。

      3.由于只有一层交互,因此响应速度特别快(例如QQ,每天很多人在线,也不觉得慢)

    C/S架构的缺点:

      1.适用面窄,通常用于局域网中。

      2.用户群固定,由于程序需要安装才可以使用,因此不适合面向一些不可知的用户。

      3.维护成本高,发生一次升级,则所有客户端的程序都需要进行改变。

    2.B/S架构

    浏览器和服务器之间的架构,Brower/Server。

    B/S架构的系统无须特别安装,只有Web浏览器即可。其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。

    B/S架构的分层:

    与C/S架构只有两层不同的是,B/S架构有三层,分别为:

    第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。

    第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。

    第三层数据层:主要是接受客户端请求后独立进行各种运算

    B/S架构的优点:

      1、客户端无需安装,有Web浏览器即可。 
      2、BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。 
      3、BS架构无需升级多个客户端升级服务器即可。可以随时更新版本,而无需用户重新下载啊什么的。

    B/S架构的缺点:

      1、在跨浏览器上,BS架构不尽如人意。 
      2、表现要达到CS程序的程度需要花费不少精力。 
      3、在速度安全性上需要花费巨大的设计成本,这是BS架构的最大问题。 
      4、客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

    常见的几种B/S架构形式

    第一种:客户端-服务器-数据库

    这个应该是我们平时比较常用的一种模式:

    1、客户端向服务器发起Http请求

    2、服务器中的web服务层能够处理Http请求

    3、服务器中的应用层部分调用业务逻辑,调用业务逻辑上的方法

    4、如果有必要,服务器会和数据库进行数据交换. 然后将模版+数据渲染成最终的Html, 返送给客户端

    第二种:客户端-web服务器-应用服务器-数据库

    类似于第一种方法,只是将web服务和应用服务解耦

    1 客户端向web服务器发起Http请求

    2 web服务能够处理Http请求,并且调用应用服务器暴露在外的RESTFUL接口

    3 应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器

    4 web服务器将模版+数据组合渲染成html返回给客户端

    第三种方法:客户端-负载均衡器(Nginx)-中间服务器(Node)-应用服务器-数据库

    这种模式一般用在有大量的用户,高并发的应用中。

    1、真正暴露在外的不是真正web服务器的地址,而是负载均衡器器的地址

    2、客户向负载均衡器发起Http请求

    3、负载均衡器能够将客户端的Http请求均匀的转发给Node服务器集群

    4、Node服务器接收到Http请求之后,能够对其进行解析,并且能够调用应用服务器暴露在外的RESTFUL接口

    5、应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给Node

    6、Node层将模版+数据组合渲染成html返回反向代理服务器

    7、反向代理服务器将对应html返回给客户端

    Nginx的优点有:

    1、它能够承受、高并发的大量的请求,然后将这些请求均匀的转发给内部的服务器,分摊压力.

    2、反向代理能够解决跨域引起的问题,因为Nginx,Node,应用服务器,数据库都处于内网段中。

    3、Nginx非常擅长处理静态资源(img,css,js,video),所以也经常作为静态资源服务器,也就是我们平时所说的CDN

      比如:前一个用户访问index.html, 经过Nginx-Node-应用服务器-数据库链路之后,Nginx会把index.html返回给用户,并且会把index.html缓存在Nginx上,

      下一个用户再想请求index.html的时候,请求Nginx服务器,Nginx发现有index.html的缓存,于是就不用去请求Node层了,会直接将缓存的页面(如果没过期的话)返回给用户。

    四、发展前景

    1、 C/S和B/S各有优势,C/S在图形的表现能力上以及运行的速度上肯定是强于B/S模式的,不过缺点就是他需要运行专门的客户端,而且更重要的是它不能跨平台,用c++在windows下写的程序肯定是不能在linux下跑的。

    2、B/S模式就,它不需要专门的客户端,只要浏览器,而浏览器是随操作系统就有的,方便就是他的优势了。 
    而且,B/S是基于网页语言的、与操作系统无关,所以跨平台也是它的优势,而且以后随着网页语言以及浏览器的进步, 
    B/S在表现能力上的处理以及运行的速度上会越来越快,它的缺点将会越来越少。尤其是HTML5的普及,在图形的渲染方面以及音频、文件的处理上已经非常强大了。 
    不过,C/S架构也有着不可替代的作用。

    内容出处https://blog.csdn.net/sea_snow/article/details/81187804

  • 相关阅读:
    poj 1236 Network of Schools 强连通分量 (添加几条边可以使整个图变成强连通图)
    poj 2363 Sightseeing ( 找次短路和最短路的条数 )
    poj 3013
    poj 1679 The Unique MST 最小生成树
    poj 1797 Heavy Transportation (spfa 最短路 )
    hdu 2680 Choose the best route (spfa)
    畅通工程续
    find the longest of the shortest
    SimpleDateFormate的使用
    SimpleDateFormate的使用
  • 原文地址:https://www.cnblogs.com/meloncodezhang/p/11280902.html
Copyright © 2020-2023  润新知