14.1.1 客户机/服务器模型

14.1.1 客户机/服务器模型

在西餐厅,菜单上各种具有异国情调的食品映入你的眼帘,于是你要了一份pizza。几分钟后,你咀嚼着抹满乳酪和其他你喜欢的配料的热pizza。你不知道也不想知道:侍者从哪儿弄来了pizza、在制作过程中加进了什么以及配料是如何获得的。

上例中包含的实体有——美味的pizza、接受你订餐的侍者、制作pizza的厨房,当然还有你。你是订pizza的顾客或客户。制作pizza的过程对于你而言是被封装的。你的请求在厨房中被处理,pizza制作完成后,由侍者端给你。

你所看到的就是一个客户机/服务器模型。客户机向服务器发送一个请求或命令。服务器处理客户机的请求。客户机和服务器之间的通信是客户机/服务器模型中的一个重要组成部分,通常通过网络进行。

客户机/服务器模型是一个应用程序开发框架,该框架是为了将数据的表示与其内部的处理和存储分离开来而设计的。客户机请求服务,服务器为这些请求服务。请求通过网络从客户机传递到服务器。服务器所进行的处理对客户机而言,是隐藏的。一个服务器可以为多台客户机服务,如图14-1所示。

img609

图14-1 客户机-服务器模型

服务器和客户机不一定是硬件组件。它们可以是工作在同一机器或不同机器上的程序。考虑一个航空订票系统中的数据输入程序。数据——乘客名、航班号、飞行日期、目的地——可以被输入到前端——客户端的应用程序中。一旦数据输入之后,客户机将数据发送到后端——服务器端。服务器处理数据、并在数据库中保存数据。客户机/服务器模型的重要性在于所有的数据都存放在同一地点。客户机从不同的地方访问同一数据源,服务器对所有的输入数据应用同样的检验规则。

“客户机/服务器应用程序的服务器部分”管理通过多个客户机访问服务器的、多个用户共享的资源。表明“客户机/服务器程序的服务器部分”强大功能的最好例子应该是Web服务器,它通过Internet将HTML页传递给不同的Web用户。

Java 编程语言中最基本的特点是在Java中创建的程序代码的可移植性。因为具有其他语言所不具备的代码可移植性,Java允许用户只要编写一次应用程序,就可以在任何客户机系统上发布它,并可以让客户机系统解释该程序。这意味着:只要写一次代码,就能使其在任何平台上运行。