B/S和C/S【转载Jane的博客 http://blog.sina.com.cn/liaojane】

什么是C/S和B/S结构?

        C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。

C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:

只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。

客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。

对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于Win2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。

B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。

C/S 与 B/S 区别:
Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.

 
C/S结构


B/S结构


硬件环境不同:


一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.


建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行


对安全要求不同


一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.


建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.


对程序架构不同


程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.


对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.


软件重用不同


程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.


对的多重结构,要求构件相对独立的功能. 能够相对较好的重用。


系统维护不同


程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统, 系统维护开销大


构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.


处理问题不同


程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统


建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.


用户接口不同


多是建立的Window平台上,表现方法有限,对程序员普遍要求较高


建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.


信息流不同


程序一般是典型的中央集权的机械式处理, 交互性相对低


信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心

时间: 2024-12-11 01:56:12

B/S和C/S【转载Jane的博客 http://blog.sina.com.cn/liaojane】的相关文章

c++中的srand()和rand() 转载 自:http://blog.sina.com.cn/s/blog_624c2c4001012f67.html

今天看了同事写的小程序,发现了其中出现了srand()和rand()这两个我以前没有用过的函数,当然从名字可以看出肯定能随机数有关,于是网查资料知这两个函数配合一起使用来产生随机数的,哈哈,又长知识了,现将这两个函数的使用贴过来,以备以后查看使用. 这两个帮助生成伪随机数的函数包含在标准库 中,所以首先需在头文件中包含进来. 注意:在C语言中包含在标准库中.    函数一:int   rand(void):     从srand   (seed)中指定的seed开始,返回一个[seed,   R

C# 最简单的三层架构实例 ——转载自网易博客

代码        /// <summary>        /// 初始化登录名称.登录密码(Model类)        /// </summary>        private string adminUser = string.Empty; //设置用户名称为空值        private string adminPwd = string.Empty; //设置用户密码为空值        public string AdminUser        {       

HACMP 学习笔记--转载自wangjialiang-csdn博客

An41 教程: Ha: 初始阶段的规划最重要 第一部分:概念和模型 Ha 目标:掩盖和消除计划和非计划的宕机 Eliminate SPOF :消除单节点故障, single point of failuare(SPOF) Cluster:   node 可要是设备可是分区 Node 尽量不要在一个机柜 Node 之间一定要有非 ip 网络,串口,磁盘 RSCT :负责 node 之间的通讯和协调,发送心跳,监控 cluster clstrmgrES :该工具用来实现 HA 管理 clcomd 

转载wz&amp;蚊子博客 PHP购物车原理

我用的方法本质是:把cookie存入array,对array进行增加.删除.修改操作,array中的每一组记录都是一个商品的信息(个数,价格等) 解决购物车的思路是用cookie记录一个二维数组.一维代表每一个商品,二维包含了商品的id,商品的数量...等可以自行增加,反正都是二维了,自己愿意带多少个商品属性就加上去. 对购物车里商品的操作一般有以下几个:添加商品,修改商品数量,删除商品,清空购物车. 这几个操作都是针对cookie的.每次把cookie中的数组取出来,增加.修改.删除一番,再记

sed和awk的一些使用【转载自http://blog.sina.com.cn/s/blog_6561ca8c0102we0o.html】

在linux中,awk和sed命令对于快速的文本编排非常灵活有用.对文本插入列的操作也可以使用sed或者awk命令来处理,下面简单介绍: 如果想要在指定列前插入字符串RR,可以使用以下命令: awk '{$NF="RR"$NF; print}'  filename 这里的$NF可以替换成任意的列数,RR字符串可以替换成任意多列字符串 如果想要在指定行的某一列前插入字符串RR,可以使用以下命令:awk 'NR==row{$NF="RR"$NF; print}'  fi

MySQL 中NULL和空值的区别 (转载 http://blog.sina.com.cn/s/blog_3f2a82610102v4dn.html)

平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效率的事情的发生. 问题 1: 首先,我们需要搞清楚 "空值" 和"NULL"的概念: 1:空值('')是不占用空间的 2: MySQL中的NULL其实是占用空间的.官方文档说明: “NULL columns require additional space in the

(十七)Android获取其他包的Context和在任意位置获取应用程序Context(转载http://blog.sina.com.cn/s/blog_46726d240100usn9.html)

1.在任意位置获取应用程序Context Android程序中访问资源时需要提供Context,一般来说只有在各种component中(Activity, Provider等等)才能方便的使用api来获取Context;喜欢编程的人都知道,编写工具类可以有效的实现代码复用,而在Android下某些工具类的编写很让人困惑,例如:我们要在工具类中获取SharedPreferences,那就需要Context的支持. 为了解决这写由Context带来的麻烦,我们可以自定义一个Application类来

Android x86模拟器Intel Atom x86 System Image配置与使用方法[转载:http://blog.sina.com.cn/s/blog_8669d5ab0101d3s9.html]

前言:大家现在开发使用的Android 模拟器模拟的是 ARM 的体系结构(arm-eabi),因此模拟器并不是运行在x86上而是模拟的ARM,所以我们调试程序的时候经常感觉到非常慢,大部分开发者应该都深有体会.针对这种情况,前段时间Intel推出了支持x86的Android模拟器,这将大大提高启动速度和程序的运行速度,这将允许Android模拟器能够以原始速度(真机运行速度)运行在使用Intel x86处理器的电脑中,各位开发者有福了,下面将为大家展示使用方法.一.首先下载intel提供的 

nginx、fastCGI、php-fpm关系梳理(转载 http://blog.sina.com.cn/s/blog_6df9fbe30102v57y.html)

    前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装 php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本.那么,这样配置的背后原理是什么?nginx.fastCGI. php-fpm之间又有什么关系呢?博主一直有这样的疑惑,由于无法理清nginx.php-fpm之间的关系,遇到nginx解析不了php脚本的时 候,往往不知所措,花费的问题排查时间也非常长.因此,特地抽时间