Java Web应用开发项目教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 C/S结构与B/S结构

1.1.1 C/S结构

C/S结构,即Client/Server(客户机/服务器)结构,是一种软件系统体系结构。它把整个软件系统分成Client和Server两个部分,Client和Server通常处在不同的计算机上。此结构充分利用两端硬件环境的优势,把数据库内容放在远程的服务器上,而在客户机上安装相应软件。C/S软件一般采用两层结构,其分布结构如图1.1所示。Client端程序的任务是将用户的请求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server端程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。

图1.1 客户机/服务器结构

C/S结构中,常见的软件功能的划分如下:首先,数据库的管理由数据库服务器完成。其次,应用程序的功能实现和数据处理,如数据访问规则、业务规则、数据合法性校验等则可能有两种情况:一是全部由客户机来完成,客户机向服务器传送的只是数据查询请求,服务器只负责响应请求、返回查询结果,数据的处理和用户的交互都放在客户端进行,这种结构也称为胖客户机/瘦服务器;二是由客户机和服务器共同来承担,程序处理一部分在客户端以程序代码来实现,一部分在服务器端以数据库中的触发器或存储过程实现,如果运算和商业逻辑都在服务器端运行,而客户端只负责一些简单的用户交互的结构也称为瘦客户机/胖服务器。

C/S结构在技术上很成熟,它的主要优点是人-机交互性强、具有安全的存取模式、网络响应速度快、利于处理大量数据。但是该结构的程序一般是针对性开发,程序变更不够灵活,维护和管理的难度较大。C/S结构的系统每台客户机都需要安装相应的客户端程序,分布功能弱且兼容性差,不能实现快速部署安装和配置,因此缺少通用性,不利于扩展,通常只局限于小型局域网。C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,较高的维护代价已不能很好地适应工作的需要。随着计算机网络技术的发展,尤其在Java跨平台语言出现之后,B/S结构的软件克服了C/S结构的不足,对其形成挑战和威胁。

1.1.2 B/S结构

B/S软件体系结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S体系结构的一种变化或者改进的结构。B/S结构的核心概念是将整个应用的主要业务逻辑集中在服务器端执行,而客户端只负责简单的数据表示和交互,一般在总体上分为表示层、业务逻辑层和数据存储层三个不同的处理层次,如图1.2所示。三个层次是从逻辑上划分的,具体可以有多种组合。业务逻辑层作为构造B/S结构应用系统的核心部分,提供了以下主要功能:负责客户机与服务器、服务器与服务器间的连接和通信;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台。这种三层结构在层与层之间相互独立,每一层的改变都不会影响其他层的功能。

在B/S体系结构下,客户端软件被统一,Web浏览器(Browser)是客户端最主要的应用软件,客户机上只要安装一个浏览器,如Internet Explorer、Netscape Navigator或Mozilla Firefox等。数据库服务器端安装Oracle、Sybase、Informix或SQLServer等数据库。浏览器通过Web服务器同数据库进行数据交互,系统功能实现的核心部分集中到应用服务器上,简化了系统的开发、维护和使用。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术,系统安装、修改和维护都在服务器端解决。

在B/S体系结构系统中,用户通过浏览器向分布在网络上的服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回。以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由服务器完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。B/S结构应用程序相对于传统的C/S结构应用程序是一个非常大的进步。

图1.2 浏览器/服务器结构

B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,这些缺点使B/S结构软件难以实现传统模式下的特殊功能要求。例如,通过浏览器进行大量的数据输入或进行报表的应答、专用性打印输出都比较困难和不便。此外,实现复杂的应用构造有较大的困难。虽然可以用ActiveX、Java等技术开发较为复杂的应用,但是相对于发展已非常成熟的C/S系列应用工具来说,这些技术的应用比较复杂,并没有完全成熟的技术工具供使用。

1.1.3 C/S和B/S的比较

1.软/硬件环境支撑环境

C/S是建立在局域网的基础上的,而B/S是建立在广域网的基础上的。C/S通过专门服务器提供连接和数据交换服务。所处理的用户不仅固定,并且处于相同区域,要求拥有相同的操作系统。B/S中的信息自己管理,具有比C/S更广的适应范围,一般只要有操作系统和浏览器即可。

2.安全控制

由于C/S采用配对的点对点的结构模式,并采用适用于局域网、安全性比较好的网络协议(如Windows NT的NetBEUI协议),安全性可得到较好的保证。C/S一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。而B/S采用浏览器访问的模式,并采用TCP/IP这一类运用于Internet的开放性协议,其安全性通常依靠服务器上管理密码的数据库来保证,安全控制不及C/S结构。

3.程序结构与处理模式

C/S程序一般采用两层结构,而B/S程序采用三层结构。这两种结构的不同点是:两层结构中客户端参与运算,而三层结构中客户端并不参与运算,只是简单地接收用户的请求,显示最后的结果。由于三层结构中的客户端并不需要参与计算,所以对客户端的计算机配置要求较低,只要装上操作系统、网络协议软件以及浏览器即可,这时的客户机称为瘦客户机,而服务器则集中了所有的应用逻辑。虽然B/S采用了逻辑上的三层结构,但在物理上的网络结构仍然是原来的以太网或环形网。这样,第一层与第二层结构之间的通信、第二层与第三层结构之间的通信都需占用网络资源,网络通信量大。而C/S只有两层结构,网络通信量只包括Client与Server之间的通信量,网络通信量低。所以,C/S处理大量信息的能力是B/S无法比拟的。

4.系统开发与维护

C/S程序侧重于整体开发,构件的重用性不是很好;B/S程序一般采用三层或多层结构,要求构件有相对独立的功能,能够相对较好的重用。系统维护是在软件生存周期中开销最大的一部分。C/S程序由于其本身的整体性,必须整体考察并处理出现的问题。而B/S结构中客户端不必安装及维护。B/S结构在构件组成方面只变更个别构件,开发、维护等工作都集中在服务器端。当需要升级时,只需更新服务器端的软件,而不必更换客户端软件,实现系统的无缝升级,减轻了系统维护与升级的成本和工作量。

5.交互性

交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。B/S虽然由JavaScript、VBScript等客户端脚本程序提供了一定的交互能力,但与完整的C/S结构的用户交互设计相比显得逊色了许多。

总的来说,B/S与C/S这两种结构各有利弊。C/S技术是20年前的主流开发技术,它主要局限于内部局域网的需要。因而缺乏作为应用平台的一些特性,难以扩展到互联网这样的环境上去,而且要求开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂,成了C/S的一大缺陷。但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看,C/S技术更成熟、更可靠。在某些情况下,采用100%的B/S方式将造成系统响应速度慢、服务器开销大、通信带宽要求高、安全性差、总投资增加等问题。而且,对于一些复杂的应用,B/S方式目前尚没有合适方式进行开发。因此,在相当长的一段时间内B/S与C/S这两种结构的软件将长期共存。