通俗讲Web服务器传送(serves)页面使浏览器浏览而应用程序服务器提供客户端应用程序调用(call)方法(methods)确切点说:Web服务器专门处理HTTP请求(request)应用程序服务器通过多协议来应用程序提供(serves)商业逻辑(business logic)
下面让我们来细细道来:
Web服务器(Web Server)
Web服务器解析(handles)HTTP协议当Web服务器接收HTTP请求(request)会返回HTTP响应(response)例送回HTML页面了处理请求(request)Web服务器响应(response)静态页面或图片进行页面跳转(redirect)或者把动态响应(dynamic response)产生委托(delegate)给些其程序例CGI脚本JSP(JavaServer Pages)脚本servletsASP(Active Server Pages)脚本服务器端(server-side)JavaScript或者些其服务器端(server-side)技术无论们(译者注:脚本)目何些服务器端(server-side)程序通常产生HTML响应(response)来让浏览器浏览
要知道Web服务器代理模型(delegation model)非常简单当请求(request)被送Web服务器里来时只单纯把请求(request)传递给好处理请求(request)程序(译者注:服务器端脚本)Web服务器仅仅提供执行服务器端(server-side)程序和返回(程序所产生)响应(response)环境而会超出职能范围服务器端(server-side)程序通常具有事务处理(transaction processing)数据库连接(database connectivity)和消息(messaging)等功能
虽Web服务器支持事务处理或数据库连接池配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和扩展性(scalability)例负载平衡(load balancing)缓冲(caching)集群特征(clustering—features)经常被误认仅仅应用程序服务器专有特征
应用程序服务器(The Application Server)
根据我们定义作应用程序服务器通过各种协议包括HTTP把商业逻辑暴露给(expose)客户端应用程序Web服务器主要处理向浏览器发送HTML供浏览而应用程序服务器提供访问商业逻辑途径供客户端应用程序使用应用程序使用此商业逻辑象调用对象方法(或过程语言函数)样
应用程序服务器客户端(包含有图形用户界面(GUI))能会运行台PC、Web服务器或者甚至其应用程序服务器上应用程序服务器与其客户端之间来回穿梭(traveling)信息仅仅局限于简单显示标记相反种信息程序逻辑(program logic) 正由于种逻辑取得了(takes)数据和方法调用(calls)形式而静态HTML所客户端才随心所欲使用种被暴露商业逻辑
大多数情形下应用程序服务器通过组件(component)应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)例基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器EJB(Enterprise JavaBean)组件模型此外应用程序服务器管理自己资源例看大门工作(gate-keeping duties)包括安全(security)事务处理(transaction processing)资源池(resource pooling) 和消息(messaging)象Web服务器样应用程序服务器配置了多种扩展(scalability)和容错(fault tolerance)技术
例子
例设想线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息站点(site)能会提供表单(form)让来选择产品当提交查询(query)网站会进行查找(lookup)并把结内嵌HTML页面返回网站有多种方式来实现种功能我要介绍使用应用程序服务器情景和使用应用程序服务器情景观察下两情景同会有助于了解应用程序服务器功能
情景1:带应用程序服务器Web服务器
此种情景下Web服务器独立提供线商店功能Web服务器获得请求(request)发送给服务器端(server-side)处理请求(request)程序此程序从数据库或文本文件(flat file译者注:flat file指没有特殊格式非二进制文件properties和XML文件等)查找定价信息旦找服务器端(server-side)程序把结信息表示成(formulate)HTML形式Web服务器把会发送Web浏览器
简而言之Web服务器只简单通过响应(response)HTML页面来处理HTTP请求(request)
情景2:带应用程序服务器Web服务器
情景2和情景1相同Web服务器还把响应(response)产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)而把查找定价商业逻辑(business logic)放应用程序服务器上由于种变化此脚本只简单调用应用程序服务器查找服务(lookup service)而已经知道何查找数据表示(formulate)响应(response) 时当该脚本程序产生HTML响应(response)时使用该服务返回结了
此情景应用程序服务器提供(serves)了用于查询产品定价信息商业逻辑(服务器)种功能(functionality)没有指出有关显示和客户端何使用此信息细节相反客户端和应用程序服务器只来回传送数据当有客户端调用应用程序服务器查找服务(lookup service)时此服务只简单查找并返回结给客户端
通过从响应产生(response-generating)HTML代码分离出来应用程序之该定价(查找)逻辑重用性更强了其客户端例收款机也调用同样服务(service)来作店员给客户结帐相反情景1定价查找服务重用因信息内嵌HTML页了
总而言之情景2模型Web服务器通过回应HTML页面来处理HTTP请求(request)而应用程序服务器则通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑
警告(Caveats)
现XML Web Services已经使应用程序服务器和Web服务器界线混淆了通过传送XML有效载荷(payload)给服务器Web服务器现处理数据和响应(response)能力与前应用程序服务器同样多了
另外现大多数应用程序服务器也包含了Web服务器意味着把Web服务器当作应用程序服务器子集(subset)虽应用程序服务器包含了Web服务器功能开发者少把应用程序服务器部署(deploy)成种功能(capacity)(译者注:种功能指既有应用程序服务器功能又有Web服务器功能)相反需要们通常会把Web服务器独立配置和应用程序服务器前种功能分离有助于提高性能(简单Web请求(request)会影响应用程序服务器了)分开配置(专门Web服务器集群(clustering)等等)而且给佳产品选取留有余地