随着网络技术的不断发展,单机的软件程序已难以满足网络计算机的需求。为此,各种各样的网络程序开发体系结构应运而生。其中,运用最多的网络应用程序开发体系结构可以分为两种,一种是基于客户端/服务器的C/S结构,另一种就是基于浏览器/服务器的B/S结构。下面将对这两种结构进行介绍。

C/S体系结构介绍

C/S是Client/Server的缩写,即客户端/服务器结构。在这种结构中,服务器通常采用高性能的PC机或工作站,并采用大型数据库系统(如Oracle或SQL Server),客户端则需要安装专用的客户端软件。这种结构可以充分利用两端硬件的优势,将任务合理地分配到客户端和服务器,从而降低了系统的通信开销。在2000年以前,C/S结构占据网络程序开发领域的主流。C/S结构由美国Borland公司最早研发。

B/S体系结构介绍

随着Web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变为更加方便、快捷的B/S架构,B/S架构大大简化了用户使用网络应用的难度,这种人人都能上网、人人都能使用网络上提供的服务的方法也进一步推动了互联网的繁荣。

B/S架构带来了以下两方面的好处。

●  客户端使用统一的浏览器(Browser)。由于浏览器具有统一性,它不需要特殊的配置和网络连接,有效地屏蔽了不同服务提供商提供给用户使用服务的差异性。另外,最重要的一点是,浏览器的交互特性使得用户使用它非常简便,且用户行为的可继承性非常强,也就是用户只要学会了上网,不管使用的是哪个应用,一旦学会了,在使用其它互联网服务时同样具有了使用经验,因为它们都基于同样的浏览器操作界面。

●  服务端(Server)基于统一的HTTP协议。和传统的C/S架构使用自定义的应用层协议不同,B/S架构使用的都是统一的HTTP协议。使用统一的HTTP也为服务提供商简化了开发模式,使得服务端开发者可以采用相对规范的开发模式,这样可以大大节省开发成本。由于使用统一的HTTP协议,所以基于HTTP协议的服务器就有很多,如Apache、IIS、Nginx、Tomcat、JBoss等,这些服务器可以直接拿来使用,不需要服务开发者单独来开发。不仅如此,连开发服务的通用框架都不需要单独开发,服务开发者只需要关注提供服务的应用逻辑,其它一切平台和框架都可以直接拿来使用,所以B/S架构同样简化了服务器提供者的开发,从而出现了越来越多的互联网服务。

B/S网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统的C/S互联网应用程序采用的长连接的交互模式不同,HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了。采用这种方式是为了能够同时服务更多与用户,因为当前互联网应用每天都会处理上亿次的用户请求,不可能每个用户访问一次后就一直保持这个连接。

基于HTTP协议本身的特点,目前的B/S网络架构大多采用如图1.1所示的架构设计,即要满足海量用户的访问请求,又要保持用户请求的快速响应,所以现在的网络架构也越来越复杂。

图1 CDN架构图

当一个用户在浏览器里输入java.itxdl.cn这个URL时,将会发生很多操作。首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发起一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。在服务器端实际上还有很复杂的业务逻辑:服务器可能有很多台,到底指定那台服务器来处理请求,这需要一个负载均衡设备来平均所有用户的请求;还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如CSS、JS或者图片资源)时又会发起另外的HTTP请求,而这些请求很可能会在CDN上,那么CDN服务器又会处理这个用户的请求,大体上一个用户会涉及这么多的操作。每一个细节都会影响这个请求最终是否会成功。

不管网络架构如何变化,始终有一些固定不变的原则需要遵守。

●  互联网上所有的资源都要用一个URL来表示,URL就是统一资源定位符,如果你要发布一个服务或者一个资源到互联网上,让别人能够访问到,那么你首先必须要有一个世界上独一无二的URL。不要小看这个URL,它几乎包含了整个互联网架构的精髓。

●  必须基于HTTP协议与服务器端交互。不管你要访问的是国内的还是国外的数据,是文本数据还是流媒体,都必须按照套路出牌,也就是都得采用统一打招呼的方式,这样人家才会明白要的是什么。

●  数据展示必须在浏览器中进行。当获取到数据资源后,必须在浏览器上才能恢复它的容貌。

两种体系结构的对比

C/S结构和B/S结构是当今世界网络程序开发体系结构的两大主流。目前,这两种结构都有自己的市场份额和客户群。但是,这两种体系结构又各有各的优点和缺点,下面将从3个方面进行比较说明。

1.开发和维护成本方面

C/S结构的开发和维护成本都比B/S高。采用C/S结构时,对于不同客户端要开发不同的程序,而且软件的安装、调试和升级均需要在所有的客户机上进行。例如,如果一个企业共有10个客户站点使用一套C/S结构的软件,则这10个客户站点都需要安装客户端程序。当这套软件进行了哪怕很微小的改动后,系统维护员都必须将客户端原有的软件卸载,再安装新的版本进行配置,最可怕的是客户更新不及时,导致版本不一致而无法工作。而B/S结构的软件,则不必在客户端进行安装及维护。如果将前面企业C/S结构的软件换成B/S结构,则在软件升级后,系统维护员只需要将服务器的软件升级到最新版本,对于其他客户端,只要重新登录系统,即可使用最新版本的软件。

2.客户端负载

C/S结构的客户端不仅负责与用户的交互,收集用户信息,而且还需要完成通过网络向服务器请求对数据库、电子表格或文档等信息的处理。由此可见,应用程序的功能越复杂,客户端程序也就越庞大,这也给软件的维护工作带来了很大的困难。而B/S结构的客户端把事务处理逻辑部分交给了服务器,由服务器进行处理,客户端只需要进行显示,这样将使应用程序服务器的运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果将不堪设想。因此,许多单位都设有数据库存储服务器,以防万一。

3.安全性

C/S结构适用于专人使用的系统,可以通过严格的管理派发软件,达到保证系统安全的目的,这样的软件相对来说安全性比较高。而对于B/S结构的软件,由于使用的人数较多且不固定,相对来说安全性就会低些。

由此可见,B/S相对于C/S来说具有更多的优势,现今大量的应用程序开始应用B/S结构,许多软件公司也争相开发B/S版本软件,也就是Web应用程序。随着Internet的发展,基于HTTP协议和HTML标准的Web应用呈集合数量级的增长,而这些Web应用正是由各种Web技术所开发的。

IT兄弟连 JavaWeb教程 Servlet定义以及环境配置 BS程序和CS程序的更多相关文章

  1. IT兄弟连 JavaWeb教程 Servlet中定义的变量的作用域类型

    在Java语言中,局部变量和实力变量有着不同的作用于,它们的区别如下: 局部变量在一个方法中定义,每当一个线程执行局部变量所在的方法时,在线程的堆栈中就会创建这个局部变量,当线程执行完该方法,局部变量 ...

  2. IT兄弟连 JavaWeb教程 Servlet表单数据

    很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编 ...

  3. IT兄弟连 JavaWeb教程 Servlet API

    Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建 ...

  4. IT兄弟连 JavaWeb教程 Servlet线程安全问题

    在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中的同一个Servlet,Servlet容器为了保证能同时相应多个客户端要求 ...

  5. IT兄弟连 JavaWeb教程 Servlet表单乱码问题

    在使用原生的Servlet进行Web应用开发时经常会遇到一些中文乱码问题,造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一致所导致的. 请求参数乱码问题 服务器端获取客户端传递过来的数据出现 ...

  6. IT兄弟连 JavaWeb教程 Servlet

    Servlet的定义 Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层. 使用Ser ...

  7. IT兄弟连 JavaWeb教程 JSP定义

    JSP页面是指扩展名为.jsp的文件,在一个JSP页面中,可以包括指令标识.HTML代码.JavaScript代码.嵌入的Java代码.注释和JSP动作标识等内容.但这些内容并不是一个JSP页面所必须 ...

  8. IT兄弟连 JavaWeb教程 Servlet会话跟踪 经典案例

    案例需求:编写一个servlet,可以向session中存放一个消息,再编写一个servlet可以从session取得session中存放的这个消息. 案例实现: package com.xdl.se ...

  9. IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session常用方法

    ●  public Object getAttribute(String name) 该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回null. ●  public ...

随机推荐

  1. H3C-交换机密码恢复

    交换机密码恢复: 一. 拔掉电源再插上重新启动交换机,在超级终端中可以看到交换机启动画面,当出现提示按CTRL+B时,此时按住CTRL+B,我们会看到有9个选项: 1. download applic ...

  2. .html 页面修改成 .jsp 后缀后中文乱码解决办法。

    .html 后缀的文件,如果直接将 .html后缀改成 .jsp 后缀,则会乱码. 正确方法如下: 将如图的代码中 html  声明去掉,然后加上这段代码:<%@ page language=& ...

  3. codevs 2102 石子归并2

    传送门 2102 石子归并 2  时间限制: 10 s  空间限制: 256000 KB  题目等级 : 黄金 Gold   题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将 ...

  4. bzoj 4571 [Scoi2016]美味——主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 按位考虑,需要的就是一个区间:比如最高位就是(2^k -x). 对于不是最高位的位置该 ...

  5. hibernate学习三 精解Hibernate之核心文件

    一 hibernate.cfg.xml详解 1 JDBC连接: 2 配置C3P0连接池: 3 配置JNDI数据源: 4 可选的配置属性: 5 hibernate二级缓存属性 6 hibernate事务 ...

  6. 深度学习之Batch归一化

    前言            以下内容是个人学习之后的感悟,转载请注明出处~ Batch归一化 在神经网络中,我们常常会遇到梯度消失的情况,比如下图中的sigmod激活函数,当离零点很远时,梯度基本为0 ...

  7. Identity Server 4 原理和实战(完结)_建立Identity Server 4项目,Client Credentials 授权实例

    创建项目 dotnet new -i IdentityServer4.Templates 多出来的这些模板 adminUI用来测试,想要用再生产环境,需要交钱 结合core的 Identity来使用 ...

  8. UVa 10755 Garbage Heap (暴力+前缀和)

    题意:有个长方体由A*B*C组成,每个废料都有一个价值,要选一个子长方体,使得价值最大. 析:我们暴力枚举上下左右边界,然后用前缀和来快速得到另一个,然后就能得到长方体,每次维护一个最小值,然后差就是 ...

  9. hql实现对表的某几个(部分)字段查询

    如何利用hql实现对表的部分字段查询 假如,我们有一张person表,对应实体类Person,表中有字段name,age,sex,address 哪我们如何来实现全部和部份字段的查询呢? hql的写法 ...

  10. BZOJ3289【莫队算法+树状数组+离散化】

    思路: 区间逆序数即是交换次数. 逆序数,可以用树状数组吧. 怎么处理区间变换的时候求逆序数啊.. 这里分成左边的增/删,右边的增/删 因为是按时序插入, 所以左边增,增一个数,计算:ans+=sun ...