客户机-服务器系统,什么是客户机/服务器计算

什么是客户机/服务器计算

客户机/服务器计算定义一种体系结构,在该结构中,程序逻辑分布在客户机系统和服务器系统之间。客户机/服务器计算是20世纪80年代的各种趋势形成的结果,它使用通过LAN连接到后端数据库服务器或应用程序服务器的功能强大的计算机来装备台式计算机。设计这种模型是为了替换主机计算模型,在主机计算模型中所有的处理都是由一个集中式系统完成的。

客户机/服务器计算结构是一种基于信息的组合式结构,意在提高集中化的时间共享大型机计算。客户机被定义为一种服务请求器,服务器被定义为一种服务供应商。单个机器既可以作为客户机也可以作为服务器,这主要取决于软件配置及执行功能类型。

客户机/服务器计算依赖于分布应用程序,其前站(用户见到的部分)在工作站上运行,后端(完成大部分工作)在服务器上运行。例如,前端PC机请求后端服务器进行数据库搜索,服务器仅将搜索结果(而不是整个应用程序和数据集)送回给请求的PC机。与传统的文件服务器不同,客户机/服务器计算实际上是在服务器上运行应用程序,只把结果(不是原始数据)返给提出请求的PC机。

随着因特网的发展,客户机/服务器计算模型已经从一个双向关系(通常被称为两层模型)演变为三层或多层模型。在这些模型中,客户机与中间应用程序服务器或Web服务器进行通信,而应用程序服务器或Web服务器则与后端数据服务器和/或遗留系统进行通信。然后中间服务器将数据库查询结果返回到客户机。

目前,共有几种可能的客户机/服务器配置。在最基本的模型中,几个客户机访问单个服务器;不过,图C-l7中所示的分布式方法则更常用。分布式配置中的服务器可以互相通信以向客户机提供协调的服务。

d46113300af902022f7086d88d144a37.png

在图C-18中,数据库被复制到一个远程系统以便远程站点的用户能够在本地站点而不是通过WAN(广域网)链路访问数据。两台服务器周期性地相互同步以确保用户使用的是最新信息。在图C-18的右边,企业的大量数据存储在“数据存储仓库”中。工作组访问中间层“升级系统”,而该中间层“升级系统”对常被访问的数据进行高速缓存或替客户机对后端系统进行查询。

9462c0fe6afd7a20539b400f2d8b00ba.png

这些讨论都假定客户机与服务器是软件兼容的,但事实并不总是这样。一个企业网络可能是部门LAN和应用程序及各个客户机的结合。如图C-19所示,中间设备帮助将这些不同类组件结合在一起,以便开发人员能够隐藏应用程序之间的差异并为各个客户机提供连接。中间设备还提供消息系统形式的通信系统或客户机与服务器之间的直接链接。

94a2f1033b7ec2b7a567b48dc0e944d6.png

文件服务器、应用程序服务器、打印服务器、传真服务器、通信服务器等等都利用了客户机/服务器模型。这里“服务器”一词既指系统也指系统软件。系统中运行的服务器进程等待客户机的请求,可能是对文件的请求也可能是对开始一项复杂事务的请求。

在一个客户机/服务器应用中,客户端应用程序是针对一个小的、特定的数据集,如一个表的行来进行操作的,而不是像文件服务器那样针对整个文件进行,对某一条记录进行封锁,而不是对整个文件进行封锁,因此保证了系统的并发性,并使网络上传输的数据量减到最少,从而改善了系统的性能。客户机/服务器模型的优点主要在于系统的客户端应用程序和服务器部件分别运行在不同的计算机上,系统中每台服务器都可以适合各部件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。在客户机/服务器模型中,系统中的功能部件充分隔离,客户端用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用开发中都要对一个数据库进行编码。将大的应用处理任务分布到许多通用网络连接的低成本计算机上导致了费用的极大节约。

后端数据服务器运行DBMS(数据库管理系统)软件,客户机则通过SQL(结构化查询语言)语句查询这些系统。SQL作为LAN中客户机/服务器中间设备的一种形式,因为它在只选择和移动那些需要的记录方面效率很高,所以很受欢迎。而且它还可以直接在数据库服务器上运行存储的程序而不用先将数据移动到客户机然后在客户机运行程序。

因为服务器向许多客户机提供服务,所以为了性能的缘故,它们必须是功能强大的系统。在所谓的瘦客户机环境中,服务器完成大部分工作而客户机基本上只显示信息和接收用户的输入。许多瘦客户机甚至没有硬盘驱动器。在一个更加平衡的模型中,客户机和服务器(或多个服务器)共同工作。大多数瘦客户机模型都是基于Java小程序和应用程序的。

下面是客户机/服务器模型的一些优点:

• 客户机/服务器计算帮助单位将大型主机和小型计算机“缩小”成能够为整个企业提供数据通信平台的网络。

• 客户机和服务器的分离使程序员们得以利用运行GUI(如Windows和Web浏览器)的功能强大的客户机系统。

• 数据存储在对数据进行操作的最近的服务器中,从而将在网络中传送的信息量减到最小,也更容易备份。

• 很大一部分信息是一次性高速缓存在服务器的内存中而不是每个需要它的工作站的内存中。

• 因为服务器只为客户提供所请求的信息,而不是工作站必须处理的大块信息,从而减少了网络流量。

• 大型服务器系统可以卸载由个人工作站处理会更好的应用程序。

• 数据位于一个位置是安全有保障的。数据仓库提供一个方法在维护对数据的控制的同时使中间工作组服务器中特定的数据可用。

• 使用集中化数据,系统管理员可应用安全控制以限制数据访问并使用跟踪机制来监控数据访问。

• 在并行处理中可以有多个系统参与,它们合作完成处理任务。

• 在客户机/服务器关系之中每个处理器是可以选择的,按其特定作用实现优化。服务器通常是在速度快、配有大量磁盘存储装置的PC机上运行,而客户机可能一台磁盘存储装置都没有,但可以有高分辨率显示适配卡,而这种适配卡装到服务器上是没有任何意义的。

增强型客户机/服务器模型

随着C/S结构应用范围的不断扩大和计算机网络技术的发展,两层C/S结构带来的问题日益明显,主要表现在以下几方面:

(1) 系统的可靠性有所降低。一个客户机/服务器系统是由各自独立开发、制造和管理的各种硬件和软件的混合体,其内在的可靠性不如单一的、中央管理的大型机或小型机,出现问题时,很难立即获得技术支持和帮助。

(2)维护费用较高。尽管这种应用模式在某种程度上提高了生产效率,由于客户端需要安装庞大而复杂的应用程序,当网络用户的规模达到一定的数量之后,系统的维护量急剧增加,因而维护应用系统变得十分困难。

(3)系统资源的浪费。随着客户端的规模越来越大,对客户机资源的要求也越来越高。尽管硬件不断更新,但新的操作系统和新的应用软件的不断出现,使得用户对硬件的更新仍然跟不上软件更新的速度。客户不得不在本地硬盘上装入大量的软件,但是使用的大都只是其中很少一部分(一般低于10%)。在一个拥有众多的“胖客户机”的环境中,这无疑是一种巨大的浪费。

(4)系统缺乏灵活性。客户机/服务器需要对每一应用独立地开发应用程序,消耗了大量的资源,但胖客户机的计算模式却仍然满足不了日益增长的应用的需要。在向广域网扩充(如Internet)的过程中,由于信息量的迅速增大,专用的客户端已经无法满足多功能的需求。网络计算模式从两层模式扩展到N层模式,并且结合动态计算,解决了这一问题。

在三层模型中,数据访问和数据操作的大部分从客户机移走而被放置到一个中间层系统(数据驻留在后端层)。在商业环境中,中间层系统可能拥有单位的所有“商业逻辑”。商业逻辑包括规则、程序和操作顺序,它们为数据处理系统提供服务。通过在一个共享系统中统一商业逻辑,所有的规则都被集合到单个服务器中,从而可以更容易地被管理而且应用程序也可以更容易地访问它们。

分布式对象计算涉及到使用Java. ActiveX和其他语言建立的面向对象组件的使用。这些组件是在企业网和因特网中创建和分布的,它们在Web浏览器或其他“容器”中运行,或被用于汇编已成熟的应用程序。应用逻辑、信息检索、事务监控、数据显示及管理之类的服务都可单独在网络中不同的计算机上运行。网络提供一个通信基础结构,在该结构中这些组件进行通信从而为终端用户提供一种使用无缝应用程序的经历。

和两层C/S结构相比,三层C/S结构具有更灵活的硬件系统构成,对于各个层可以选择与其处理负荷和处理特性相适应的硬件。合理地分割三层结构并使其独立,可以使系统的结构变得简单清晰,这样就提高了程序的可维护性。三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言,有利于变更和维护应用技术规范。按层分割功能使各个程序的处理逻辑变得十分简单。一般而言,三层C/S结构的优势主要表现在以下几个方面:

• 利用单一的访问点,可以在任何地方访问站点的数据库; • 对于各种信息源,不论是文本还是图形都采用相同的界面; • 所有的信息,不论其基于的平台,都可以用相同的界面访问; • 可跨平台操作; • 减少整个系统的成本; • 维护升级十分方便; • 具有良好的开放性; • 系统的可扩充性良好; • 进行严密的安全管理; • 系统管理简单,可支持异种数据库,有很高的可用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多维数据建模工具

2019独角兽企业重金招聘Python工程师标准>>> 多维数据建模工具 Style Intelligence敏捷商业智能软件不仅可以连接各种OLAP数据库,还提供了多维数据建模工具。使用多维数据建模工具进行多维数据建模不但简单易用而且无需编写任何的代码。用户只需要通过语…

C语言中,scanf与scanf_s的简单区别

C语言中,scanf与scanf_s的简单区别 scanf()不会检查输入边界,可能造成数据溢出,scanf_s()会进行边界检查。 如name[5], scanf("%s",name),如果输入abcdefgh,则会使得fgh溢出进入其他地方,造成程序…

图片添加对话气泡app_刘雨昕、谢可寅、虞书欣代言农夫山泉TOT气泡饮

文 | Rita Zeng近日,TOT气泡饮官方发布微博官宣刘雨昕、谢可寅、虞书欣成为TOT气泡饮代言人。TOT气泡饮是农夫山泉今年推出的新一代碳酸饮料,瞄准年轻消费者,在产品卖点上主打“天然,纯净,无添加”。目前TOT气泡饮一共…

微软更新服务器win7,[技巧]绕过微软限制:让基于新处理器的Win7/8.1系统继续接收更新...

一位名叫 zeffy 的 Github 开发人员发现,还是有办法去突破微软的封锁的。zeffy 先是下载了出现问题的 .msu 安装包(其系统对应的是 windows6.1-kb4012218-x64_590943c04550a47c1ed02d3a040d325456f03663.msu),然后将它解压出来、整理二进制文件、并与系统…

【独家】衣服上的铁锈去除简易方法

1.材料: VC片(维生素C药片),白醋。 2.使用方法: 先用白醋把衣服铁锈处淋湿,把VC片贴在铁锈处(不要捣碎),并全部覆盖铁锈区域(面积大的话用多片)&a…

自定义vue全局组件use使用

自定义一个全局Loading组件,并使用:总结目录:|-components  |-loading    |-index.js 导出组件,并且install    |-loading.vue 定义Loading组件 1.components/loading/index.js import LoadingComponent from "./L…

文件服务器存储,文件服务器存储

文件服务器存储 内容精选换一换当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。HPC是高性能计算(High Performance Computing)的简称。通常指以计算为目的,使用了很多处理器的单个计算机系统或者使用了多台计算机…

仓库无证如何处罚_“非现场执法”查处无证网约车,罚款15万!滴哥:怎们罚的都不知道!...

限时福利:关注微信公众号“网约车情报局”,回复关键词“司机群”,限时加入网约车司机专属的微信交流群,第一时间获取最新的网约车情报。记得文末右下角点|在看|哦!年底了,各地纷纷加强非法营运打击力度&…

脱机文件的应用

老董新买了笔记本回来办公,但问题也来了,笔记本有了,那文件怎么办?,他嫌麻烦,FTP,我还真怀疑他会不会用,还的去培训,有没有更灵活的办法呢: 需求分析&#xf…

【liferay】6、关于liferay中使用requestMapping映射地址提交表单

1、接着上一篇博客&#xff0c;从新在定义一下页面 <% page contentType"text/html; charsetutf-8" language"java"pageEncoding"utf-8"%> <% taglib uri"http://java.sun.com/portlet_2_0" prefix"portlet"%> …

dump java崩溃自动 不生成_基于Excel和Java自动化工作流程:发票生成器示例

对于销售人员&#xff0c;使用Excel创建发票是很常见的。但是该过程通常涉及许多容易出错的手动操作&#xff0c;例如输入数据&#xff0c;复制/粘贴等。如何实现一个可以将数据从数据库自动填充到发票Excel模板中&#xff0c;而无需再辛苦手动输入&#xff0c;从繁重的手动录入…

go将服务器图片响应给客户端,Go中来自客户端和服务器的RPC

我目前正在使用thrift(thrift4go)来实现服务器->客户端和客户端->服务器RPC功能。默认情况下&#xff0c;thrift仅像net / rpc一样执行客户端->服务器调用。由于还需要服务器与客户机之间的通信&#xff0c;因此我进行了一些研究&#xff0c;发现bidi-thrift。Bidi-th…

hdu 3887 Counting Offspring

题目连接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid3887 题意&#xff1a;给出一棵树&#xff0c;对于每一个节点&#xff0c;问他的子孙节点中有多少个节点小于该节点。 思路&#xff1a;首先找出这棵树的DFS序列&#xff0c;每一个节点出现在两个位置&#xff…

搭建vue开发环境的步骤

搭建vue开发环境的步骤 相信很多人在刚开始学习vue这个框架的时候&#xff0c;在最开始搭建开发环境的时候&#xff0c;都会遇到一些大大小小的坑&#xff0c;我之前在学习angular的时候搭建过一次&#xff0c;过了一个月后在搭建第二次的时候&#xff0c;竟然有一些混乱&#…

ccxprocess可以禁用么_提效 | 5G时代网站还需要加速么?

看到标题, 你一定会说都已经 5G 时代了, 还要在网络提速上下功夫么? 答案是: 是的. 如果你是做国际或者全球业务的, 会更有体会, 很多国家和地区的网络是非常差的, 说他们停留在 2G 时代也不过分的.即使是国内良好的网络环境下, 做好网络提速, 也是可以提高用户体验以及缓解服…

springboot ---- sts如何启动两个实例

idea 实现启动两个spring boot工程实例的方法 可以参考这篇博客。 因为使用spring tool suite 学习spring cloud 需要实例化两个spring boot 工程来构成一个小小的集群系统&#xff0c; 可以通过sts ,右击选择run as, 使用run configuration..., 配置jvm参数为 -Dserver.portxx…

java trie实现

http://www.riaos.com/ria/5814

如何利用python在一个wen'dang'li_如何利用Python网络爬虫给自己跟朋友来一份穷游攻略!走到哪里穷到哪里的哦!...

【一、项目背景】穷游网提供原创实用的出境游旅行指南、攻略&#xff0c;旅行社区和问答交流平台&#xff0c;以及智能的旅行规划解决方案&#xff0c;同时提供签证、保险、机票、酒店预订、租车等在线增值服务。穷游“鼓励和帮助中国旅行者以自己的视角和方式体验世界”。今天…

ubuntu下命令安装与卸载软件方法

2019独角兽企业重金招聘Python工程师标准>>> 刚 刚接触ubuntu就开始一直在安装语言包、升级、常用软件和其它相关依赖等等东西&#xff0c;总的来说&#xff0c;是一个劲儿的装&#xff0c;缺全然不知怎么卸载&#xff0c;现在把安装和卸载写 在一块&#xff0c;一旦…

为什么用线程池

1、创建/销毁线程伴随着系统开销&#xff0c;过于频繁的创建/销毁线程&#xff0c;会很大程度上影响处理效率 2、线程并发数量过多&#xff0c;抢占系统资源从而导致阻塞 3、对线程进行一些简单的管理 延时执行、定时循环执行的策略等 https://www.cnblogs.com/dongguacai/p/60…