导读:每天都从应用中心下载很多软件安装尝试,在自己的电脑上也装了很多软件,但是,就出现了一个问题,好比QQ,为什么有了APP,还要有网站应用呢?由此,结合到自己的学习,就衍生出一个问题:C/S 开发就可以做出很好很好的东西,为什么还要有B/S开发呢?它们之间的区别是什么?

一、基本概况

1.1,概念

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

附:C/S结构图

B/S 开发(Browser/Server,浏览器/服务器模式):是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser英 ['braʊzə]美 ['braʊzɚ]),如Netscape Navigator或Internet
Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。

附:B/S结构图

1.2,应用语言

如果说到应用什么语言去开发C/S 或者说是B/S 结构的的程序,那么作为目前的一个现状来说,很可能就认为:C++,C#,VB等更偏向C/S开发,而所用到的像JS,java,JQuery等,则会被认为更偏向于B/S开发。(某一时期,我是这么认为的)但是,这是不准确的!为什么,看后续的C/S和B/S的关系就明白了。

二、C/S 和 B/S 的对比

2.1,优点

2.1.1 C/S

安全性:C/S需要其特定的客户端,所以面向的对象比较确定,由此所进行的信息安全处于一种可控的范围。

效率:客户端和服务端直接相连,省却了中间环节,数据的传输相对较快。

个性化:C/S尤其特定的客户端,因此可以较大程度上满足客户的个性化要求,如界面、操作等。

稳定性:结构较稳定,较强的事务处理能力,可实现比较复杂的的业务逻辑。

2.1.2 B/S

范围:零安装:拥有一个浏览器,即可访问。因此,它所面向的范围更为的广阔。

扩展性:通常来说,通过增添网页即可扩展系统的功用。零维护:更新页面,即可以实现面向所有用户的更新。

共享:B/S 通过浏览器访问,共享性强。

2.2,缺点

2.2.1 C/S

由于需要在PC端安装特定的软件,所以,它对PC机有一定的要求:如,操作系统。而且,安装和部署复杂。

扩展性和维护成本高,当面对第二客户有不同需求时,得修改其界面等设计。当客户端达到一定的量时,同时访问服务器,造成服务端的响应变慢,效率变低。(但在数据量小的时候不存在)

2.2.2 B/S

由于B/S针对的对象范围广,所以,它的设计一般而言是一种公共审美,无法满足个性化的需求。

2.3,C/S和B/S的联系

2.3.1 联系:

1,C/S可以使用任何通信协议,而B/S这个特殊的C/S架构规定必须实现HTTP协议

2,浏览器是一个通用客户端,本质上开发浏览器,还是实现一个C/S系统

C/S开发和B/S开发从本质上来讲,并没有什么区别。所以在其应用语言的选择上,没有太明确太严格的要求,就比如说:VB、VC等即可用于C/S 开发,也可用于B/S开发。如果非要说不同的话,那么作为我个人来说,也许是在一些类库上有区别。由于B/S的范围广,对象多,开发过程中需要应用的东西就多很多,所以可能会需要像是Ajax,JQuery等使用,或者说引用更多的API类库等。

2.3.2 区别:

投入成本:B/S在一般情况下只需求一次投入,即开发时的费用。而C/S随着其使用范围、人数的增多,其维护成本、开发成本相应的增多。

资源利用:当数据量达到一定的程度之后,C/S开发中的服务器无法满足其需求,通常需要更换性能更为优越的服务器,而原有的旧服务器被废弃。而作为B/S开发,在需求量增大时,可以通过增添服务器的数量去圆滑的解决这个问题,其资源的利用程度相对较高。

三、总结

有些资料还是要去查一下的,然后才能明确。很多时候,不是自己不知道,只是不敢确定。但这种不确定性,却会在后续的学习中带来很大的困扰。

从C/S开发到B/S开发,随着受众的增多,或者说是庞大的系统结构,通常一个服务器端根本解决不了问题,那么,服务器端的增加会带来什么影响?当一个系统太过于庞大的时候,如果我们仍然使用一个解决方案,在后续维护的时候,会出现什么问题?

B/S 开发和 C/S开发的区别的更多相关文章

  1. 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序

    直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...

  2. ASP.NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

  3. 突破瓶颈,对比学习:Eclipse开发环境与VS开发环境的调试对比

    曾经看了不少Java和Android的相关知识,不过光看不练易失忆,所以,还是写点文字,除了加强下记忆,也证明我曾经学过~~~ 突破瓶颈,对比学习: 学习一门语言,开发环境很重,对于VS的方形线条开发 ...

  4. RDIFramework.NET -.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(WebForm版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(WebForm版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之 ...

  5. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(MVC版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之产品管理 ...

  6. APP开发:一个APP开发需要哪些技术人员?

          亿合科技小编了解到:国民老公王思聪曾经在一个访谈中谈到过,如果他是一个普通人,他会选择移动互联网去创业,因为做个网站或者App开发门槛较低,做大做强的机会也比较多.小编觉得创业就是投资,重 ...

  7. C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  8. 移动web开发和移动app开发的区分

    1.移动web开发 这部分跟web前端开发差别不大,使用的技术都是html+css+js.区别为手机浏览器是webkit的天下,pc端是IE的天 下.手机网页可以理解成pc网页的缩小版加一些触摸特性. ...

  9. 传统开发模型vs敏捷开发模型——过程模型的变革

    一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...

  10. 敏捷软件开发vs传统软件开发

    摘要 本文介绍了传统软件开发(着重介绍了传统软件开发中常用的瀑布模型)和敏捷软件开发,以及敏捷开发和传统开发的对比. 一.传统软件开发 比较常用的几种传统软件开发方法:瀑布式开发.迭代式开发.螺旋开发 ...

随机推荐

  1. 百度地图API简单初始化

    <script src="http://api.map.baidu.com/api?key=&v=2.0&ak=youkey"></script& ...

  2. 使用json传输数组实例

    client.php <?php //遍历数组元素,并将元素转码 function array_iconv($data, $in_charset='GBK', $out_charset='UTF ...

  3. AJPFX关于抽象类和接口的区别

    一.设计目的不同:接口体现的是一种规范,,类似于系统的总纲,它制定了系统的各模块应遵守的标准抽象类作为多个子类的共同父类,体现的是模式化的设计,抽象类可以认为是系统的中间产品,已经实现了部分功能,部分 ...

  4. AJPFX总结Java 程序初始化过程

    觉得Core Java在Java 初始化过程的总体顺序没有讲,只是说了构造器时的顺序,作者似乎认为路径很多,列出来比较混乱.我觉得还是要搞清楚它的过程比较好.所以现在结合我的学习经验写出具体过程: 过 ...

  5. PetStore项目总结

    数据库(MySQL): account(用户表:没有外键), profile(用户侧面信息表:有两个外键:catid,username), category(宠物总分类表--鱼:没有外键), prod ...

  6. hihocoder1067 最近公共祖先·二

    思路: 使用tarjan算法,这是一种离线算法. 实现: #include <bits/stdc++.h> using namespace std; typedef pair<int ...

  7. PKU_campus_2018_H Safe Upper Bound

    思路: 题目链接http://poj.openjudge.cn/practice/C18H/ 用2147483647除以最大素因子. 这里用了Pollard_rho因子分解算法,模板参考了http:/ ...

  8. ES6学习笔记(10)----Set和Map数据结构

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ Set和Map数据结构 1.Set  基本用法    Set是一种新的数据结构,它的成员都是唯一 ...

  9. Makefile介绍

    make 工具如 GNU make.System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具,但是每个 make 工具之间又有所不同.不同的make工具的mak ...

  10. Redis学习笔记(二)字符串进阶

    1.增减操作 字符串可以储存字节串.整数.浮点数三种类型的值,如果值无法被解释为十进制的整数或浮点数,那么对此值进行增减操作会返回错误,如果对一个不存在的或者保存了空串的键进行增减操作,Redis将当 ...