`
fishermen
  • 浏览: 380100 次
社区版块
存档分类
最新评论

小议Web服务器和应用服务器

阅读更多
    总体来说,WEB服务器通过Http只是简单地处理一个请求并返回一个响应供客户端浏览。在这里需要注意的是,WEB服务器处理请求是不可以重用的,即客户端每发送一次请求(相同的请求),WEB服务器就要重新进行一次处理,因为客户端请求的信息时内嵌在HTML里面的,这对于一些重复请求来说效率很低。
    应用服务器是通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。前面说过WEB服务器主要是通过处理请求以返回HTML页面供客户端浏览,而应用服务器是提供访问商业逻辑的途径供客户端使用。大多数情况下,应用服务器是通过提供应用程序接口(API)的形式把商业逻辑暴露给客户端的。因此,当客户端发出一个请求时,它只要通过使用应用服务器暴露给它的商业逻辑对请求进行处理并返回响应。这样大大提高了商业逻辑的可重用性。
    JSP/Servlet中的应用服务器我们把它称作Servlet引擎(Servlet engine)。常见的Servlet引擎有Tomcat, Resin ,Jety等。Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。Tomcat不仅仅是一个Servlet引擎,同时它也是一个WEB服务器,因此它也可以用来处理HTML页面。但是与WEB服务器Apache相比,Tomcat处理页面的效率要低。因此我们可以把Apache和Tomcat集成起来一起使用,用Apache来处理HTML页面,用Tomcat来处理JSP和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。 Jetty 是一个开源的Servlet引擎,它为基于Java的web内容,例如JSP和servlet提供运行环境。
    下面让再详细说明下:

Web服务器(Web Server)

    Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(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)技术。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics