(1)Web服务器(Web Server)
1.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)来让浏览器可以浏览。
2.Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
3.Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。
(2)应用程序服务器(The Application Server)
1.根据定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象调用对象的一个方法(或过程语言中的一个函数)一样。
2.应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。 正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。
3.在大多数情形下,应用程序服务器是通过组件ponent)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java
2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling), 和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。
4.通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,也可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。
app server的前身是middleware(中间件),历史要长的多。早在上世纪六七十年代就已经开始在IBM大型机系统上广泛应用了,叫做TP Monitor,比较著名的是BEA的Tuxedo和IBM的CICS,运行在Terminal/Server模式的Server端,其功能主要是分离商业逻辑,进行分布式计算的,可以自动管理事务、资源和容错等等。因为发展的时间很长,所以技术非常成熟。middleware最早是用cobol编写的,现在还可以偶尔看到cobol的中间件的旧系统,再后来middleware改用C++来实现,著名中间件的有IBM的CICS,BEA的Tuexdo,仍然广泛的应用在高端系统中,特别是银行系统。
然而在面向对象的技术出现和广泛的应用之后,TP Monitor由于不是面向对象的,而是面向过程的调用,因此TP Monitor管理的商业逻辑并没有分布式对象系统中的商业组件那样的可扩展性、可重用性,表现出来很大的局限。
不过像PHP这样主要还是面向过程调用的函数式的语言来说,TP Monitor仍然可以支持的非常完美,由于有了TP Monitor的支持,PHP也可以应用在企业的环境中了。
我所知道的用的是:
1
Linux+Apache+PHP+Tuxedo+Oracle
在上海好几个ISP那里放了服务器,以保证服务不因某个ISP的问题而无法访问。我曾经见过在上海热线机房的服务器,说出来,大家可能不信,竟然用的是自己攒的兼容机,世纪之星的机箱,估计不比我们大家自己买的兼容机强到哪里去。大概有六七台机器的样子,来负载均衡。
对象请求代理(Object Request Brokers)是另一种用的很多的中间件,支持分布式对象的调用。然而它的问题是仅仅是一个代理(Broker),系统级的功能需要自己来实现,这包括管理并发性、事务、资源管理和容错机制等等,而且不同的厂商提供的ORB之间也存在互操作的兼容性问题。
于是一种综合了TP Monitor和ORB功能的新的服务器出现了,叫做CTM(Component Transaction Monitor)组件事务监控器。用在我们特定的管理应用程序的环境中就是App Server。
在1997年开始,CTM市场发生了巨大的变化,因为这一年Sun的J2EE标准正式发布,从此除了微软之外,所有的CTM厂商都用Java来改写自己的产品,例如Sybase原来有一个叫做Jagus CTS的东西,现在已经变成了纯Java实现的EAServer,Borland的公司app server也是这样来的。这样一来,除了微软之外,就剩下基于Java的app server了。
App Server可以自动管理并发性、事务、对象分布、负载均衡、安全性和资源管理等等系统级功能。简单的来说就是App Server是管理服务端组件的,它给服务端组件提供了一个全功能可靠的运行环境。
打个比方来说,数据库系统是管理数据的,它也给数据提供了一个受监控和管理的运行环境,提供了事务、安全性、负载均衡,并发性等等系统级功能,对于使用者来说,你不需要自己处理数据库表的并发锁定问题,自己处理SQL语句的解析、自己处理索引的优化等等系统级功能,同样对于服务端组件的调用者来说也不需要自己处理并发请求、对象创建、销毁、缓存,控制组件事务等等系统级功能。
App Server对服务端组件的的关系就是数据库系统对数据的关系。App Server完全是一个类似数据库系统这样一个非常复杂的服务端软件,所不同之处就是数据库系统(RDBMS)是管理数据的,而App Server是管理对象的。这也是我研究Weblogic Server之后的切身感受。
Microsoft是最早发布App Server的厂商,叫做Microsoft Transaction Server(MTS)。其他还有很多基于不同技术的App Server,不过随着EJB规范的发布,主流的App Server基本上都是基于J2EE的了。目前看来,App Server市场主要就是实现J2EE规范的Java应用服务器和Microsoft的.Net应用服务器这两大主流。
Tuxedo等基于过程传统的中间件会继续在特定的场合发挥巨大的作用,像那些需要极高的响应性能和基于特定平台C/C++的场合,还是具有不可替代的作用。
App Server提供的服务端组件模型并没有解决所有的问题,基于不同技术实现的服务端组件之间不能互相调用和数据共享,比如EJB组件和COM组件之间不能之间交换数据,所以基于SOAP协议的Web Services试图解决这个问题,想把互联网上所有的不同技术实现的组件服务都统一成单一的Web Services。这也是Web Services热门的原因之
一,标准的统一对大家都有好处。
分别说明一下web服务器和数据库服务器,以下就是两者的区别:
1、web服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档。
web服务器可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
目前最主流的三个Web服务器是:Apache、Nginx、IIS。
2、数据库服务器
运行在局域网中的一台或多台计算机和数据库管理系统软件共同构成了数据库服务器,数据库服务器为客户应用提供服务,这些服务是查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。
应用服务器处理业务逻辑,web服务器是用于处理HTML文件的。
web服务器通常比应用服务器简单,如apache就是web服务器,
Jboss就是EJB应用服务器。
应用服务器:Weblogic、Tomcat、Jboss
WEB SERVER:IIS、 Apache
1.(客户端--应用服务器--数据服务器 桥节作用,好处是客户端体积小,改动少,比如我们天天上的网,那个网站里的IIS服务就是类似一种应用服务器) 应用服务器(无论是什么功能的应用服务器)在数据库服务器和终端用户之间占有很大一部分计算领地。这个领域有一个广为人知名字,这个名字就是中间件,这个名字也告诉了你应用服务器都做什么事情。 首先也是最重要,应用服务器把数据库信息(通常来源于一个数据库服务器)与终端用户或者客户端程序(常常在Web浏览器里运行)连接在一起。在这个连接中存在一个中间层很多理由。这些理由包括减少客户端程序的大小和复杂性、缓存和更好的控制数据流以提供更好的性能以及为数据通信和用户通信提供安全保障。 然而,这并不是应用服务器功能的全部。在应用服务器早期应用的时候,人们就发现应用软件本身(人们用来完成工作的程序)正变得越来越大并且越来越复杂。无论应用程序的编写和维护都是如此。 与此同时,应用程序共享数据和有时候共享功能的压力也越来越大。更多的应用程序被放在网络上或使用报网络扩展功能。让某些类型的应用程序在网络上运行似乎是合乎逻辑的:这有助于以有组织和有效率地方式共享应用程序的功能,使应用程序更容易编写、管理和维护 上的服务器也称为Web服务器,是一台在上具有独立IP地址的计算机,可以向上的客户机提供WWW、Email和FTP等各种服务。 Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP(超文本传输协议)进行信息交流,这就是人们常把它们称为HTTPD服务器的原因。 Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。例如,假设你要提供免费公司资讯,只要建立一张免费请求表单,它就会要求你的读者输入邮寄及公司信息;读者填完表后,点击提交按钮,该表单将送至服务器计算机上的某一程序,它负责处理该请求,并用E-mail给读者发一份免费资讯。你还可以让该程序把客户提供的信息发给你,以便用于某数据库上。用于执行这些功能的程序或脚本称为网关脚本/程序,或称为CGI(通用网关界面)脚本。在Web上,你所见到的大多数表单和搜索引擎上都使用了该技术。
3. Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.0.16。 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat
5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。 Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。 Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
4.IIS( Information Server)是一组服务器加上一些可以在NT操作系统下运行的服务组成,microsoft就包括了一系列用于建立管理网站、搜索引擎的程序集,Microsoft指出,由于IIS和NT服务器在许多方面是一体化的,因此可以提供更快的网页服务。
5.WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应 用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的 开发、集成、部署和管理之中。 BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。 与BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可为部署适应性个性化 电子商务应用系统提供完善的解决方案。