WEBserver、应用程序server、HTTPserver差别
WEBserver、应用程序server、HTTPserver差别
WEBserver、应用程序server、HTTPserver有何差别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种server,这些问题困惑了非常久,今天最终梳理清楚了:
-Webserver的基本功能就是提供Web信息浏览服务。它仅仅需支持HTTP协议、HTML文档格式及URL。
与client的网络浏览器配合。由于Webserver主要支持的协议就是HTTP,所以通常情况下HTTPserver和WEBserver是相等的(有没有支持除HTTP之外的协议的webserver,作者没有考证过),说的是一回事。
应用程序server(简称应用server),我们先看一下微软对它的定义:”我们把应用程序server定义为“作为server运行共享业务应用程序的底层的系统软件”。 就像文件server为非常多用户提供文件一样,应用程序server让多个用户能够同一时候使用应用程序(一般是客户创建的应用程序)”
通俗的讲,Webserver传送(serves)页面使浏览器能够浏览。然而应用程序server提供的是client应用程序能够调用(call)的方法(methods)。确切一点。你能够说:Webserver专门处理HTTP请求(request),可是应用程序server是通过非常多协议来为应用程序提供(serves)商业逻辑 (business logic)。
以Java EE为例,Webserver主要是处理静态页面处理和作为 Servlet容器,解释和运行servlet/JSP,而应用server是运行业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API方面的,还包括事务处理、数据库连接等功能,所以在企业级应用中。应用server提供的功能比WEBserver强大的多。
以这样的定义,IIS、Apache、Tomcat都能够属于Webserver,Weblogic、WebSphere都属于应用server。
Apache:在Webserver中,Apache是纯粹的Webserver,常常与Tomcat配对使用。它对HTML页面具有强大的解释能力。可是不能解释嵌入页面内的server端脚本代码(JSP/Servlet)。
Tomcat:早期的Tomcat是一个嵌入Apache内的JSP/Servlet解释引擎Apache+Tomcat就相当于IIS+ASP。后来的Tomcat已不再嵌入Apache内。Tomcat进程独立于Apache进程运行。 并且,Tomcat已经是一个独立的Servlet和JSP容器,业务逻辑层代码和界面交互层代码能够分离了。
因此,有人把Tomcat叫做轻量级应用server。
IIS:微软早期的IIS。就是一个纯粹的Webserver。
后来,它嵌入了ASP引擎。能够解释VBScript和JScriptserver端代码了。这时,它就能够兼作应用server。
当然。它与J2EE应用server根本无法相比,可是,从功能上说,从原理上说,它勉强能够称之为应用server。确切地说,它是兼有一点应用server功能的Webserver。
综上:Apache是纯粹的webserver。而Tomcat和IIS由于具有了解释运行server端代码的能力,能够称作为轻量级应用server或带有server功能的Webserver。Weblogic、WebSphere由于能提供强大的J2EE功能。毫无疑问是绝对的应用server。对于处于中间位置的Tomcat,它能够配合纯WebserverApache一起使用,也能够作为应用server的辅助与应用server一起部署:
一、Tomcat与应用server
到眼下为止,Tomcat一直被觉得是Servlet/JSP API的运行器,也就所谓的Servlet容器。然而,Tomcat并不仅仅如此,它还提供了JNDI和JMX API的实现机制。尽管如此,Tomcat仍然还不能算是应用server,由于它不提供大多数J2EE API的支持。
非常有意思的是,眼下很多的应用server通常把Tomcat作为它们Servlet和JSP API的容器。由于Tomcat同意开发人员仅仅需通过增加一行致谢,就能够把Tomcat嵌入到它们的应用中。遗憾的是。很多商业应用server并没有遵守此规则。
对于开发人员来说,假设是为了寻找利用Servlet、JSP、JNDI和JMX技术来生成Java Web应用的话。选择Tomcat是一个优秀的解决方式;可是为了寻找支持其他的J2EE API,那么寻找一个应用server或者把Tomcat作为应用server的辅助。将是一个不错的解决方式;第三种方式是找到独立的J2EE API实现,然后把它们跟Tomcat结合起来使用。尽管整合会带来相关的问题,可是这样的方式是最为有效的。
。
二、Tomcat与Webserver
Tomcat是提供一个支持Servlet和JSP运行的容器。Servlet和JSP能依据实时须要。产生动态网页内容。而对于Webserver来说。 Apache仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat则既能为动态网页服务。同一时候也能为静态网页提供支持。尽管它没有通常的Webserver快、功能也不如Webserver丰富,可是Tomcat逐渐为支持静态内容不断扩充。大多数的Webserver都是用底层语言编写如C。利用了对应平台的特征,因此用纯Java编写的Tomcat运行速度不可能与它们相提并论。
一般来说,大的站点都是将Tomcat与Apache的结合,Apache负责接受全部来自client的HTTP请求,然后将Servlets和JSP的请求转发给Tomcat来处理。Tomcat完毕处理后,将响应传回给Apache。最后Apache将响应返回给client。
并且为了提高性能。能够一台apache连接多台tomcat实现负载平衡。
关于WEBserver、应用程序server的更具体差别能够參考以下这篇文章:
通俗的讲,Webserver传送(serves)页面使浏览器能够浏览,然而应用程序server提供的是client应用程序能够调用(call)的方法(methods)。
确切一点,你能够说:Webserver专门处理HTTP请求(request),可是应用程序server是通过非常多协议来为应用程序提供(serves)商业逻辑 (business logic)。
以下让我们来细细道来:
Webserver(Web Server)
Webserver能够解析(handles)HTTP协议。当Webserver接收到一个HTTP请求(request),会返回一个HTTP响应 (response),比如送回一个HTML页面。为了处理一个请求(request),Webserver能够响应(response)一个静态页面或图片,进行页面跳转(redirect)。或者把动态响应(dynamic response)的产生托付(delegate)给一些其他的程序比如CGI脚本。JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,server端(server-side)JavaScript。或者一些其他的server端(server-side)技术。
不管它们(译者注:脚本)的目的怎样,这些server端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器能够浏览。
要知道。Webserver的代理模型(delegation model)非常easy。当一个请求(request)被送到Webserver里来时,它仅仅单纯的把请求(request)传递给能够非常好的处理请求 (request)的程序(译者注:server端脚本)。Webserver仅仅提供一个能够运行server端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。server端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
尽管Webserver不支持事务处理或数据库连接池。但它能够配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability)。比如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)常常被误觉得仅仅是应用程序server专有的特征。
应用程序server(The Application Server)
依据我们的定义。作为应用程序server。它通过各种协议。能够包括HTTP。把商业逻辑暴露给(expose)client应用程序。
Webserver主要是处理向浏览器发送HTML以供浏览,而应用程序server提供訪问商业逻辑的途径以供client应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法 (或过程语言中的一个函数)一样。
应用程序server的client(包括有图形用户界面(GUI)的)可能会运行在一台PC、一个Webserver或者甚至是其他的应用程序server上。在应用程序server与其client之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。
相反,这样的信息就是程序逻辑(program logic)。正是由于这样的逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以client才干够随心所欲的使用这样的被暴露的商业逻辑。
在大多数情形下,应用程序server是通过组件 (component) 的应用程序接口(API)把商业逻辑暴露(expose)(给client应用程序)的,比如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序server的EJB(Enterprise JavaBean)组件模型。此外,应用程序server能够管理自己的资源。比如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing)。资源池(resource pooling),和消息(messaging)。就象Webserver一样,应用程序server配置了多种可扩展(scalability)和容错(fault tolerance)技术。
一个样例
比如。设想一个在线商店(站点)提供实时定价(real-time pricing)和有效性(availability)信息。
这个站点(site)非常可能会提供一个表单(form)让你来选择产品。当你提交查询 (query)后,站点会进行查找(lookup)并把结果内嵌在HTML页面中返回。站点能够有非常多种方式来实现这样的功能。我要介绍一个不使用应用程序server 的情景和一个使用应用程序server的情景。观察一下这两中情景的不同会有助于你了解应用程序server的功能。
情景1:不带应用程序server的Webserver
在此种情景下,一个Webserver独立提供在线商店的功能。
Webserver获得你的请求(request),然后发送给server端(server- side)能够处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件。如properties和XML文件等)中查找定价信息。一旦找到,server端(server-side)程序把结果信息表示成(formulate)HTML形式。最后Webserver把会它发送到你的Web浏览器。
简而言之,Webserver仅仅是简单的通过响应(response)HTML页面来处理HTTP请求(request)。
情景2:带应用程序server的Webserver
情景2和情景1相同的是Webserver还是把响应(response)的产生托付(delegates)给脚本(译者注:server端 (server-side)程序)。然而,你能够把查找定价的商业逻辑(business logic)放到应用程序server上。
由于这样的变化,此脚本仅仅是简单的调用应用程序server的查找服务(lookup service),而不是已经知道怎样查找数据然后表示为(formulate)一个响应(response)。这时当该脚本程序产生HTML响应(response)时就能够使用该服务的返回结果了。
在此情景中。应用程序server提供(serves)了用于查询产品的定价信息的商业逻辑。(server的)这样的功能(functionality)没有指出有关显示和client怎样使用此信息的细节。相反client和应用程序server仅仅是来回传送数据。当有client调用应用程序server的查找服务(lookup service)时,此服务仅仅是简单的查找并返回结果给client。
通过从响应产生(response-generating)HTML的代码中分离出来。在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的client。比如收款机。也能够调用相同的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的由于信息内嵌在 HTML页中了。
总而言之,在情景2的模型中,在Webserver通过回应HTML页面来处理HTTP请求(request),而应用程序server则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。
警告(Caveats)
如今,XML Web Services已经使应用程序server和Webserver的界线混淆了。
通过传送一个XML有效载荷(payload)给server,Webserver如今能够处理数据和响应(response)的能力与曾经的应用程序server相同多了。
另外。如今大多数应用程序server也包括了Webserver。这就意味着能够把Webserver当作是应用程序server的一个子集(subset)。
尽管应用程序server包括了Webserver的功能,可是开发人员非常少把应用程序server部署(deploy)成这样的功能(capacity)(译者注:这样的功能是指既有应用程序server的功能又有Webserver的功能)。
相反,假设须要,他们一般会把Webserver独立配置,和应用程序server一前一后。这样的功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序server了),分开配置(专门的Webserver。集群(clustering)等等),并且给最佳产品的选取留有余地。
WEBserver、应用程序server、HTTPserver差别的更多相关文章
- 控制面板里找不到“应用程序server”这个项目,Windows XP中金蝶安装时无“应用程序server”的解决的方法
要注意先安装IIS,再安装VS2008. 我们会常常在控制面板里找不到"应用程序server"这个项目.我们须要依照以下的步骤来操作就会Ok. 1.下载IIS6,放置到D盘根文件夹 ...
- UNIX网络编程卷1 时间获取程序server TCP 协议相关性
本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 最初代码: 这是一个简单的时间获取server程序.它和时间获取程序client一道工作. ...
- 微信小程序Server端环境配置
主要内容:1. SSL免费证书申请步骤2. Nginx HTTPS 配置3. TLS 1.2 升级过程 微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请 ...
- vue制作小程序--server
服务端代码,开发者工具有提供 指南 https//cloud.tencent.com/document/product/619/11442 参考文档API https://developers.wei ...
- webserver and application server
http://www.diffen.com/difference/Application_Server_vs_Web_Server http://www.differencebetween.com/d ...
- UNIX网络编程卷1 时间获取程序server UDP 协议无关
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie /** * UDP 协议无关 调用 getaddrinfo 和 udp_server **/ ...
- python_tornado
1.创建Tornado服务器 1.创建Application对象 Application是Torando最核心的类 所有关于服务器的配置信息都写在Applicatio ...
- [500lines]500行代码写web server
项目地址:https://github.com/aosabook/500lines/tree/master/web-server.作者是来自Mozilla的Greg Wilson.项目是用py2写成. ...
- 【收藏】十大Webserver漏洞扫描工具
如今有很多消息令我们感到Web的危急性,因此,当前怎样构建一个安全的Web环境成为网管员和安全管理员们义不容辞的责任.可是巧妇难为无米之炊,该选择哪些安全工具呢? 扫描程序能够在帮助造我们造就安全的W ...
随机推荐
- 在Apache中整合JSP和PHP
在Apache中整合JSP和PHP 我们最希望任何事都是完美的,如在企业应用中,我们只需要选择一个Web平台就可以部署所有的企业应用.但往往理想与现实相去甚远.在现实世界中,信息系统往往是由很多不 ...
- DotNetBrowser入门教程(更新完善中)
DotNetBrowser 希望实现的目标:桌面软件可以完美运行Html5,内置支持MVC与WebSocket的微型服务器. 基于.Net 4.0开发.开发环境:VS2017,运行环境支持Window ...
- 使用nvDXT.exe把图片转换成dds图片【转】
从nvidia官网下载工具包DDS Utilities [https://developer.nvidia.com/legacy-texture-tools] 转换图片格式需要的工具是 nvdxt.e ...
- java.lang.NoSuchFieldError:INSTANCE
Java.lang.NoSuchFieldError: INSTANCE异常,可能是包重复了. 我遇到的情况是maven里引入了一个JAR,而我又在lib里面引入了这个jar,并且版本还不相同,就出了 ...
- 转: android 实现效果特效
一. 各种控件效果 http://www.jcodecraeer.com/plus/list.php?tid=31&TotalResult=990&PageNo=7
- Java 实例
Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用. Java 环境设置实例 Java 实例 – 如何编译一个Java 文件? Java 实 ...
- PHP SPL库
SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟.SPL 其实在所有的 PHP5 开发环境中被内置,同 ...
- shell2
例一:数组选择 #!/bin/sh menu=("Apple" "Grape" "Orange") PS3="喜欢哪个" ...
- 关于解决 http 状态码200,php 文件有输出,但是不显示模板文件的问题
一 问题 给公司搭建一个在线测试站点之后,在浏览器地址栏输入 "http://xxx.xxx.xxx/index.php",页面什么都没显示.调出浏览器的开发者工具查看,http ...
- 程序员必备SQL语句优化技巧
1.任何地方都不要使用 select * from t ,用具体的字段列表代替"*",不要返回用不到的任何字段. 2.尽量使用数字型字段,字符型会降低查询和连接的性能,并会增加存储 ...