剑指JavaWeb:技术详解与应用实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.2 服务器端与客户端

Web开发主要包括两部分,即服务器端与客户端,如图1-3所示。

图1-3 服务器端与客户端

“服务器”是一个非常宽泛的概念。从硬件的角度来讲,服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其他客户机(如PC机、智能手机、ATM等终端,甚至是火车系统等大型设备)提供计算或者应用服务。从软件的角度来讲,服务器其实就是安装在计算机上的一个软件。根据其作用的不同,服务器又可以分为各种不同的类型,如应用服务器、数据库服务器、Redis服务器、DNS服务器、ftp服务器等。

综上所述,服务器其实就是一台安装了服务器软件的高性能计算机。常见的服务器硬件设备,包括刀片服务器、塔式服务器、机房等。由于服务器是一台计算机,所以它必须在安装操作系统后,才能够安装使用其他服务器软件。常见的服务器操作系统包括Linux系统、UNIX系统,以及Windows Server系统等。

● Linux系统:使用得最多的服务器操作系统,安全稳定、性能强劲、开源免费(或需要少许费用)。

● UNIX系统:和硬件服务器捆绑销售,版权不公开。

● Windows Server系统:源代码不开放,费用高昂,运维成本较高。

硬件服务器在安装好系统后,就可以安装应用软件了,像我们熟知的Tomcat、MySQL、Redis、FastDFS、ElasticSearch 等都属于服务器应用软件,它们分别提供自己特定的服务器功能。如果一台服务器上安装了Tomcat,我们就把这台服务器叫作Tomcat服务器。

Web服务器是一个容器,也是一个连接用户与程序之间的中间件。Web服务器由硬件和软件共同构成。服务器硬件,指能够提供服务让其他客户端访问的设备。服务器软件,本质上是一个应用程序,由代码编写而成,运行在服务器设备上,能够接收请求并根据请求给客户端响应数据、发布静态或动态资源。

Web服务器主要用来接收客户端发送的请求和响应客户端请求。Web服务器可以向浏览器等客户端提供文档、放置网站文件供全世界浏览,还可以放置数据文件供其下载。Web 服务器有很多,流行的 Web服务器有Tomcat、Apache、JBoss(Redhat)、GlassFish(Oracle)、Resin(Caucho)、Weblogic(Oracle)、WebSphere(IBM)等。

● Tomcat:是一个免费且开放源代码、运行Servlet和JSP Web应用软件的基于Java的Web应用软件容器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,且比绝大多数商用应用软件服务器要好,也是本章重点介绍的Web服务器。

● Apache:是世界上应用最多的 Web 服务器,优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台应用,以及可移植等。Apache的模块支持非常丰富,虽在速度和性能上不及其他轻量级Web服务器,属于重量级产品,所消耗的内存也比其他Web服务器要高。

● JBoss(Redhat):是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB 3.0的规范。但JBoss核心服务不包括支持Servlet/JSP的Web容器,一般与Tomcat或Jetty绑定使用。

● GlassFish(Oracle):是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。开发者可以免费获得源代码,还可以对代码进行更改,目前市场应用不是很广。

● Resin(Caucho):是CAUCHO公司的产品,是一个Application Server,对Servlet和JSP提供了良好的支持,性能也比较优良,Resin自身采用Java语言开发,目前市场上的应用属于上升趋势。

● Weblogic(Oracle):是美国Oracle公司出品的一个Application Server,确切来说是一个基于JavaEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,需要付费使用。

● WebSphere(IBM):是IBM的软件平台。它包含了编写、运行和全天候监视随需应变Web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere提供了可靠、灵活和健壮的软件,需要付费使用。

客户端与服务器端相对应,是为客户提供本地服务的程序,用于接收用户的输入(操作)、展示服务器端的数据,以及向服务器端传递数据等。常见的客户端包括PC端网页、移动端网页、移动端App、lot设备等。