web容器 web服务器 servlet jsp web开发/jsp容器 之间的区别和关系

& &何为容器?
& &容器是一种服务调用规范框架,j2ee大量运用了容器和组件技术来构建分层的企业级应用,在J2EE规范中,相应的有Web Container和EJB Container等。
& web容器给处于其中的应用程序组件(jsp,servlet)提供一个环境,使JSP,Servlet直接跟容器中的环境变量交互,不必关注其他系统问题,(从这个角度来说,web容器应用属于架构上的概念),web容器主要由Web服务器来实现,例如Tomcat,weblogic,websphere等
& 若容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把该容器叫做 J2EE 中的 WEB 容器。WEB 容器更多的是跟基于 HTTP 的请求打交道。而 EJB 容器不是。它是更多的跟数据库、其它服务打交道。
& 容器的行为是将其内部的应用程序组件与外界的通信协议交互进行了隔离,从而减轻了内部应用程序组件的负担,例如:servlet不关心http的细节,而是直接引用环境变量session,request,response就行,EJB不用关心数据库连接速度,各种事务控制,直接由容器来完成。
web服务器可以处理Http协议,当web服务器接受到一个Http请求,会返回一个Http响应,例如送回一个HtMl页面。
web服务器可以响应针对静态页面或者图片的请求,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序,例如 CGI 脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端 JavaScript,或者一些其它的服务器端技术。
web服务器仅仅提供一个可以执行服务器端程序和返回(程序产生)响应的环境,而不会超出职能范围
web服务器主要是处理需要向浏览器发送Html的请求以供浏览
应用程序服务器 The Application Servlet
& &根据定义,作为应用程序服务器,要求可以通过各种协议包括Http协议把商业逻辑暴露给expose客户端应用程序,应用程序使用此商业逻辑就像你调用对象的一个方法或过程一样。
Servlet(Server Applet),全称 Java Servlet,未有中文译文。是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。
& & & Servlet 运行于支持 Java 的应用服务器中。从实现上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。
【Tomcat】
& & Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应对 HTML 页面的访问请求。实际上 Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。
&Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器。因为 Tomcat 技术先进、性能稳定且免费,所以深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。
一、Tomcat 与应用服务器
& & &&到目前为止,Tomcat 一直被认为是 Servlet/JSP API 的执行器,也就所谓的 Servlet 容器。然而,Tomcat并不仅仅如此,它还提供了 JNDI 和 JMX API 的实现机制。尽管如此,Tomcat 仍然还不能算是应用服务器,因为它不提供大多数 J2EE API 的支持。
& & &&很有意思的是,目前许多的应用服务器通常把 Tomcat 作为它们 Servlet 和 JSP API 的容器。由于 Tomcat允许开发者只需通过加入一行致谢,就可以把 Tomcat 嵌入到它们的应用中。遗憾的是,许多商业应用服务器并没有遵守此规则。
& & & 对于开发者来说,如果是为了寻找利用 Servlet、JSP、JNDI 和 JMX 技术来生成 Java Web 应用的话,选择Tomcat 是一个优秀的解决方案;但是为了寻找支持其他的 J2EE API,那么寻找一个应用服务器或者把 Tomcat作为应用服务器的辅助,将是一个不错的解决方案;第三种方式是找到独立的 J2EE API 实现,然后把它们跟Tomcat 结合起来使用。虽然整合会带来相关的问题,但是这种方式是最为有效的。
二、Tomcat 与 Web 服务器
& & & Tomcat 是提供一个支持 Servlet 和 JSP 运行的容器。Servlet 和 JSP 能根据实时需要,产生动态网页内容。而对于 Web 服务器来说, Apache 仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat 则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的 Web 服务器快、功能也不如 Web 服务器丰富,但是 Tomcat 逐渐为支持静态内容不断扩充。大多数的 Web 服务器都是用底层语言编写如 C,利用了相应平台的特征,因此用纯 Java 编写的 Tomcat 执行速度不可能与它们相提并论。
& & &&一般来说,大的站点都是将 Tomcat 与 Apache 的结合,Apache 负责接受所有来自客户端的 HTTP 请求,然后将 Servlets 和 JSP 的请求转发给 Tomcat 来处理。Tomcat 完成处理后,将响应传回给 Apache,最后 Apache 将响应返回给客户端。
阅读(...) 评论()【web服务器】什么是web服务器 WEB网站服务器和应用服务器的区别与联系_知识频道_买购网
按模块条件查看
摘要:Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
【web服务器】什么是web服务器 WEB网站服务器和应用服务器的区别与联系
什么是Web服务器
Web服务器一般指网站,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache Nginx IIS。
【web 容器】
何为容器:
容器是一种服务调用规范框架,J2EE 大量运用了容器和组件技术来构建分层的企业级应用。在 J2EE 规范中,相应的有 WEB Container 和 EJB Container 等。
WEB 容器给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET 直接跟容器中的环境变量交互,不必关注其它系统问题(从这个角度来说,web 容器应该属于架构上的概念)。web 容器
主要由 WEB 服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE 等。
若容器提供的接口严格遵守 J2EE 规范中的 WEB APPLICATION 标准。我们把该容器叫做 J2EE 中的 WEB 容器。
WEB 容器更多的是跟基于 HTTP 的请求打交道。而 EJB 容器不是。它是更多的跟数据库、其它服务打交道。
容器的行为是 将其内部的应用程序组件与外界的通信协议交互进行了隔离,从而减轻内部应用程序组件的负担(实现方面的负担?)。
例如,SERVLET 不用关心 HTTP 的细节,而是直接引用环境变量 session、request、response 就行、EJB 不用关心数据库连接速度、各种事务控制,直接由容器来完成。
【Web服务器】
Web 服务器(Web Server)可以处理 HTTP 协议。当 Web 服务器接收到一个 HTTP 请求,会返回一个 HTTP 响应,例如送回一个 HTML 页面。
Web 服务器可以响应针对静态页面或图片的请求, 进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序,例如 CGI 脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端 JavaScript,或者一些其它的服务器端技术。
Web 服务器仅仅提供一个可以执行服务器端程序和返回(程序所产生的)响应的环境,而不会超出职能范围。
Web 服务器主要是处理需要向浏览器发送 HTML 的请求以供浏览。
【应用程序服务器(The Application Server)】
根据定义,作为应用程序服务器,要求可以通过各种协议(包括 HTTP 协议)把商业逻辑暴露给(expose)客户端应用程序。应用程序使用此商业逻辑就像你调用对象的一个方法或过程(语言中的一个函数)一样。
【serverlet】
Servlet(Server Applet),全称 Java Servlet,未有中文译文。是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。
Servlet 运行于支持 Java 的应用服务器中。从实现上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。
【Tomcat】
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应对 HTML 页面的访问请求。实际上 Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。
Apache Tomcat is an open source software implementation of the java Servlet and JavaServer Pages technologies.
【Tomcat与Web服务器、应用服务器的关系】
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器。因为 Tomcat 技术先进、性能稳定且免费,所以深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。
一、Tomcat 与应用服务器
到目前为止,Tomcat 一直被认为是 Servlet/JSP API 的执行器,也就所谓的 Servlet 容器。然而,Tomcat并不仅仅如此,它还提供了 JNDI 和 JMX API 的实现机制。尽管如此,Tomcat 仍然还不能算是应用服务器,因为它不提供大多数 J2EE API 的支持。
很有意思的是,目前许多的应用服务器通常把 Tomcat 作为它们 Servlet 和 JSP API 的容器。由于 Tomcat允许开发者只需通过加入一行致谢,就可以把 Tomcat 嵌入到它们的应用中。遗憾的是,许多商业应用服务器并没有遵守此规则。
对于开发者来说,如果是为了寻找利用 Servlet、JSP、JNDI 和 JMX 技术来生成 Java Web 应用的话,选择Tomcat 是一个优秀的解决方案;但是为了寻找支持其他的 J2EE API,那么寻找一个应用服务器或者把 Tomcat作为应用服务器的辅助,将是一个不错的解决方案;第三种方式是找到独立的 J2EE API 实现,然后把它们跟Tomcat 结合起来使用。虽然整合会带来相关的问题,但是这种方式是最为有效的。
二、Tomcat 与 Web 服务器
Tomcat 是提供一个支持 Servlet 和 JSP 运行的容器。Servlet 和 JSP 能根据实时需要,产生动态网页内容。而对于 Web 服务器来说, Apache 仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat 则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的 Web 服务器快、功能也不如 Web 服务器丰富,但是 Tomcat 逐渐为支持静态内容不断扩充。大多数的 Web 服务器都是用底层语言编写如 C,利用了相应平台的特征,因此用纯 Java 编写的 Tomcat 执行速度不可能与它们相提并论。
一般来说,大的站点都是将 Tomcat 与 Apache 的结合,Apache 负责接受所有来自客户端的 HTTP 请求,然后将 Servlets 和 JSP 的请求转发给 Tomcat 来处理。Tomcat 完成处理后,将响应传回给 Apache,最后 Apache 将响应返回给客户端。
您可能关心的:
文章来源:
免责声明:
凡注明"来源:XXX"的知识/资讯/名人/访谈等文章,均由企业/经销商/用户自行通过本网站系统平台投稿编辑整理发布或转载自其它媒体,仅供学习与参考等非商业用途性质使用,并不代表本网站赞同其观点和对其真实性负责。
如有侵犯您的版权,请联系我们,我们将及时删除。
提交说明:
注册登录发布:
行业精彩推荐
月关注排行榜
最新加入文章
历史关注排行
1831人关注
1852人关注
1458人关注
1707人关注
1960人关注
1252人关注
1556人关注
1166人关注
按条件查看:
热卖网店:
广东省通信管理局,
收藏
分享您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
常見WEB服务器的区别和理解.docx 16页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
常見WEB服务器的区别和理解
你可能关注的文档:
··········
关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解 /allenlinrui/article/details/6675998分类: 各种容器
17:07 30人阅读 评论(0) 收藏 举报 ?今天是个很丰富的日子,早上一上班,第一个听到的惊爆消息就是楷子得了肠胃炎,一大早去医院挂水了…… 随后风胜和笑虎也没来,后来得知他们俩去去华星现代产业园参加培训,内容是关于Apache与Nginx的。于是乎,我非常感兴趣地查了一下培训用的PPT,并跟旁边的俊牧了解了一下关于服务器的一些东西……?整个交流过程中,我发现好多概念已经被我遗忘了,有的也很模糊,于是乎,我还是决定到网上查一下,并记录下来!? 下面是令人纠结的正文……??先说Apache和Tomcat的区别:?Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。? 在Apache基金会里面ApacheServer永远会被赋予最大的支持,毕竟大儿子最亲嘛,而Apache的开源服务器软件Tomcat同样值得关注,毕竟Tomcat是开源免费的产品,用户会给予最大的支持。但是经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系,在用Tomcat的时候总出现Apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结了一下。? 解析一:? Apache支持静态页,Tomcat支持动态的,比如Servlet等,? 一般使用Apache+Tomcat的话,Apache只是作为一个转发,对JSP的处理是由Tomcat来处理的。? Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。? Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。?  这两个有以下几点可以比较的:? ◆两者都是Apache组织开发的? ◆两者都有HTTP服务的功能? ◆两者都是免费的? 不同点:? Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)? Tomcat是Apache组织在符合Java EE的JSP、Servlet标准下开发的一个JSP服务器.??Runtime r=Runtime.getRuntime();?? Process p=?? try?? {?? p=r.exec(&notepad&);?? }?? catch(Exception ex)?? {?? System.out.println(&fffff&);?? } ?解析二:? Apache是一个Web服务器环境程序,启用他可以作为Web服务器使用,不过只支持静态网页 如(ASP,PHP,CGI,JSP)等动态网页的就不行。? 如果要在Apache环境下运行JSP的话就需要一个解释器来执行JSP网页,而这个JSP解释器就是Tomcat,为什么还要JDK呢?因为JSP需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行JSP的Web服务器平台就需要Apache+Tomcat+JDK。? 整合的好处是:? ◆如果客户端请求的是静态页面,则只需要Apache服务器响应请求。? ◆如果客户端请求动态页面,则是Tomcat服务器响应请求。? ◆因为JSP是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。? C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。? 解析三:? Apache:侧重于HTTP Server? Tomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apache等效 , 支持JSP,但对静态网页不太理想;? Apache是Web服务器,Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。 PS:至于为什么要集成Tomcat和Apache
正在加载中,请稍后...
36页63页17页34页44页52页15页18页32页22页下次自动登录
现在的位置:
& 综合 & 正文
web容器 web服务器 servlet/jsp容器 之间的区别和关系
Web服务器(软件):
Apache http server, 这个它的网址,,实现的是HTTP协议,提供的是静态网页服务。
替代者有Nginx
tomcat, , 实现的是JSP,Servlet,提供了环境让JSP在里面被编译,被执行。
提供了动态网页服务。但同时也能提供静态网页的解析服务,与前者有集成,但功能不及前者。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<span style="color:#. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的Web服务器
(也叫www服务器)上获取网页文档的内容。
<span style="color:#. Web浏览器与Web服务器分别代表着TCP网络程序的客户机和服务器。
<span style="color:#. 无论网站规模的大小,最起码的工作就是要在用做Web服务器的计算机上安装某种Web服务器软件。只
要在一台计算机上安装了Web服务器软件,从功能上讲,这台计算机就可以成为Web服务器。Web服务器
包括硬件即计算机和软件即Web服务器软件两层意思。目前有两种Web服务器软件:IIS和Apache,
但是它们都不直接支持Servlet和Jsp程序。要想在这些Web服务器软件中运行Servlet和Jsp,还必须将它们
与某种Servlet和Jsp容器(引擎)进行集成。
<span style="color:#. Tomcat是Sun公司推荐运行的Servlet和Jsp容器,它可以被集成到IIS和Apache中。Tomcat也具有Web服
务器的一些基本功能,仅基本功能而已。对于一般的Web应用,我们可以直接将Tomcat作为Web服务器软
<span style="color:#. 在J2EE平台中,有Servlet和Jsp容器,EJB容器等容器。
<span style="color:#. Servlet容器的主要任务是管理servlet的生命周期。而Web容器,它是来管理和部署 Web应用的,个人
认为Web容器包括Web服务器和Servelt、Jsp容器两层意思。当然,Tomcat可被认为是Sevlet容器、Web
容器,也具有Web服务器软件一般的功能
服务器:广义上讲有很多的概念,硬件角度上说就是一台高性能的Computer。我们通常指的服务
器其实应该是装有能够处理具体请求事务的服务器软件的Computer。比如最常见的www服务器、mail服务
器、计费服务器、ftp服务器等等。很多时候人们常把诸如Tomcat、IIS、Weblogic 也称之为web服务器,
这对初学者很容易造成混淆,其实这些只是用于开发、集成、部署和管理Web应用、网络应用和数据库应
用的应用服务器软件。web容器:通俗的讲web容器就是能够支持发布web程序的软件。
b/s结构下,以常见的自来水供水系统为例来说,整个web系统好比完整的供水系统,用户只需要有水龙头
(Broswer),水管相当于计算机网络(network),自来水公司的供水系统(即Server),其中的压力水罐
就是容器(Container)了。
servlet容器的主要任务是管理servlet的生命周期。有一种服务器叫做应用服务器,它的功能比web服务器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。
web容器好比 电视机
servlet容器好比 VCD
没有VCD你可以看电视,对吧,但是有了VCD没有电视机,你从哪看起?:)
没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显示jsp/servlet,你就要安装一个servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以你仍需要一个web容器。
但是,注意 我说 但是,
大多数servlet容器同时提供了web容器的功能,也就是说大多servelt可以独立运行你的web应用。
&&&&推荐文章:
【上篇】【下篇】中国领先的IT技术网站
51CTO旗下网站
一文看懂Web服务器、应用服务器、Web容器、反向代理服务器区别与联系
我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难。有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现。本文将带读者对这四个相似概念如何区分。
作者:佚名来源:| 10:22
我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难。有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现。本文将带读者对这四个相似概念如何区分。
1.1. Web服务器概念与基本原理1.1.1. Web服务器的历史
1989年,互联网之父Berners-Lee向其雇主CERN提出了一个新项目,目的是通过使用超文本系统来缓解科学家之间的信息交流。该项目导致Berners-Lee在1990年编写了两个方案:
一个名为WorldWideWeb的浏览器。
世界上第一个网络服务器,后来被称为CERN
httpd,它运行在NeXTSTEP上。在1991年至1994年期间,用于通过万维网冲浪和交换数据的早期技术的简单性和有效性有助于将其移植到许多不同的操作系统,并将其用于科学组织和大学,然后传播到行业。
1994年,Berners-Lee决定组建万维网联盟(W3C),通过标准化过程来管理涉及的许多技术(HTTP,HTML等)的进一步发展。
就是这台服务器:
Web服务器的主要功能是存储,处理和传递网页给客户。客户端和服务器之间的通信使用超文本传输协议(HTTP)进行。交付的页面最常见的是HTML文档,除了文本内容之外,还可能包含图像,样式表和脚本。
一个用户代理,通常是web浏览器或web爬虫,通过发起一个HTTP请求以获取服务器资源,服务器根据请求返回该资源或由于某种原因响应错误消息。该资源通常是服务器辅助存储上的真实文件,但这不一定是这种情况,取决于Web服务器的实现方式。
虽然主要功能是提供内容,但HTTP的完整实现还包括从客户端接收内容的方式。此功能用于提交Web表单,包括上传文件。许多通用Web服务器还支持使用Active
Pages(ASP),PHP或其他脚本语言的服务器端脚本。这意味着Web服务器的行为可以在单独的文件中脚本化,而实际的服务器软件保持不变。通常,此函数用于动态生成HTML文档(&即时&),而不是返回静态文档。前者主要用于从数据库检索或修改信息。后者通常快得多,并且更容易被缓存,但不能提供动态内容。
Web服务器不仅用于为万维网服务。它们也可以被嵌入到诸如打印机,路由器,网络摄像机等设备中,并且仅服务于本地网络。然后,web服务器可以用作用于监视或管理所讨论的设备的系统的一部分。这通常意味着客户端计算机上不需要安装其他软件,因为只需要一个网络浏览器(现在大多数操作系统都包含在内)。
1.1.2. Web服务器工作原理
HTTP协议基于TCP协议上,是一个应用层协议,用于用户代理和Web服务器进行通信。Web服务器通常采用一问一答的方式进行工作:
1、在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识IRI,指明动作类型(GET/POST/DELETE/PUT...)
2、用户代理解析用户输入IRI并从中获取目标域名,交由DNS服务器解析。如果IRI中指定某IP地址,这无需这步。
3、如果与服务器的会话还没建立,此时先建立TCP连接,并完成HTTP协商(确定双方均可接受的处理方式,包括协议版本,是否加密,内容格式等等)。
4、用户代理把请求内容封装成HTTP数据包向服务器发送。
5、服务器接收到资源请求并以之前协商好的方式解包并处理。
6、服务器请求的资源封装成HTTP数据包并返回给用户代理。
接下来重点说说服务器端的工作原理
TCP监听模块
服务器监听某个端口(一般默认是8080端口,用户可以设置其他端口),以建立和用户代理之间的连接。一旦建立连接,用户代理的后续HTTP请求将不用再进入监听模块。
此处主要做三件事:1. 从TCP报文中获取HTTP请求报文。 2. 根据和用户代理的协商进行解密,解压,安全处理等等。3.
根据服务器自身的配置进行安全处理,建立会话状态等等。
解析URL字符串和动作以确定用户代理请求的资源,根据匹配规则(通常根据正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块。
静态资源处理模块
负责找到静态资源,比如HTML/Java/CSS文件/图片/图像,确定内容是字符流或者字节流,并确定对应MIME,比如HTML生成MIME为text/html的字符流,mpeg视频文件生成MIME为video/mpeg的字节流。
动态资源处理模块
运行业务逻辑处理,动态决定返回的资源内容和类型,内容和类型的处理原则同上。
根据和用户协商的协议进行加密,压缩,安全处理等等。
资源输出模块
把处理好的内容和类型封装成HTTP报文,往TCP连接另一头的用户代理发送TCP报文(内容是HTTP报文)。
主流Web服务器
包括Apache、IIS 、Nginx,还有比较多使用Tomcat,Jetty,WebSphere,WebLogic,Kerstrel等等。
1.2. Web应用程序容器概念与基本原理
1.2.1. Web应用程序容器的由来
Web服务器的出现的标志着WWW时代的带来,世界变得更加平面化。当初尝到甜头的开创者们开始不满足与在互联网上获取静态资源,于是出现了CGI脚本来动态获取资源。再后来网络发展方向也是朝着增强Web服务器动态获取资源的能力前进。
以下是代表性的动态技术:技术名词特点 CGI(Common Gateway
Interface,公用网关接口)以独立进程运行,可以用多种语言开发,比如C,C++,VB,Perl,灵活但效率低,维护复杂
PHP服务器端嵌入HTML脚本,开源,功能强大,扩展性较差
JSP服务器端嵌入HTML脚本,跨平台,部署前需编译,主要缺点是编写JSP比较复杂,需熟悉JAVA及相关技术
ASP服务器端嵌入HTML脚本,开发简单,功能强大,只能在windows下运行 。
随后Web服务器朝着企业级应用方向发展,快速的业务变化,迫使Web开发人员面对新的挑战:如何快速写出鲁棒,可靠,符合业务需求的程序并顺利部署?解决这个挑战的一个有效的办法是,创造一个Web程序开发框架(含运行环境,比如解释执行JSP,Web
API),这个框架解决鲁棒性,可靠性问题,提供快速开发接口。换言之,开发人员只需要专注于实现业务本身,如有更高的需求还可以对框架进行定制和扩展。这个框架的另外一个名字是Web应用程序容器。
1.2.2. Web应用程序容器的基本工作原理
一般情况下Web应用程序容器是以下构成体系:
注:浅蓝色的模块是实现业务程序的主要使用模块。
相对于Web服务器,该容器新增或强化了以下模块:
分配线程池资源
容器为每个请求分配一个线程进行处理,通常采取线程池的方式高效理由CPU算资源。
封装Request上下文
一个请求对应一个Request上下文,它主要封装了用户请求的主要构成:URL,HTTP请求头,以及基于请求头构建的Session,Cookie等对象,方便编程使用。
封装Response上下文
一个请求对应一个Response上下文,主要用于向用户代理返回资源。可以在其中写入输出流,或者重定向,或者返回错误码等等。
在容器里,运行开发人员设置不同的路由匹配规则,比如让.HTM返回.HTML,也可以自定义.xyz返回.HTML资源。更加灵活的配置可以参考JAVA
MVC或者ASP.NET MVC的配置方案。
动态资源处理模块
通常在这里具体的容器和开发语言都有自己的高效开发模型,比如JAVA的Servlet,ASP.NET的Web Form,MVC。
这里会回收刚才的线程资源,为了线程复用,除非服务器空闲一般会将线程返回线程池。
可以看出,Web容器本身具备了做为一个Web服务器的功能,事实上通常实现Web容器功能的服务器就是一个Web服务器.比如Tomcat , IIS
主流Web容器
包括Tomcat , IIS ,Jetty 。
还有比较多使用WebSphere,WebLogic等等。
1.3. Web应用程序服务器概念及基本原理
在Web服务器发展的同一个时期,应用服务器已经存在并发展很长一段时间了。一些公司为Unix开发了Tuxedo(面向事务的中间件)、TopEnd、Encina等产品,这些产品都是从类似IMS和CICS的主机应用管理和监控环境衍生而来的。大部分的这些产品都指定了&封闭的&产品专用通信协议来互连胖客户机(&fat&
client)和服务器。在90年代,这些传统的应用服务器产品开始嵌入HTTP通信功能,刚开始要利用网关来实现。不久后它们之间的界线开始变得模糊了。
同时,web服务器越来越成熟,可以处理更高的负载、更多的并发和拥有更好的特性;应用服务器开始添加越来越多的基于HTTP的通信功能。所有的这些导致了web服务器与应用服务器的界线变得更窄了。
目前,&应用服务器&和&web服务器&之间的界线已经变得模糊不清了。但是人们还把这两个术语区分开来,作为强调使用。
当有人说到&web服务器&时,你通常要把它认为是以HTTP为核心、web
UI为向导的应用。当有人说到&应用服务器&时,你可能想到&高负载、企业级特性、事务和队列、多通道通信(HTTP和更多的协议)&。但现在提供这些需求的基本上都是同一个产品。
下图描述一个典型的Web应用服务器的结构图:
从上图中可以看到Web应用服务器包括了Web容器,同时内置了支撑企业应用的事务,安全,集成,通信,高可用等等功能,极大了减少了重复开发量,保障了业务系统快速开发和部署,而它本身也是一个Web服务器。Web应用服务器可以选择使用大厂的WebLogic和WebSphere这种重量级产品外,也可以使用类似与Tomcat、jetty这样的web
containner 再加上第三方的框架(spring,hibernate等)来构建自己的Application S.NET
Core平台下可以选择IIS, Apache,Nginx 与ASP.NET Core构建。
1.4. 反向代理概念与基本原理1.4.1. 反向代理基本概念
反向代理是代理服务器的一种。它根据客户端的请求,从后端的服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端。与前向代理不同,前向代理作为一个媒介将互联网上获取的资源返回给相关联的客户端,而反向代理是在服务器端(如Web服务器)作为代理使用,而不是客户端。客户端通过前向代理可以访问很多不同的资源,而反向代理是很多客户端都通过它访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
互联网中的请求发送给反向代理,反向代理把请求转发到内网中的服务器。
反向代理的主要作用为:
加密和SSL加速
缓存静态内容
安全防火墙
突破互联网封锁
解决跨域问题
1.4.2. 反向代理基本工作原理
一个反向代理服务器的构成和处理过程如下图:
左边淡黄色功能模块对外网报文进行处理,右边灰色功能模块针对内网报文进行处理
TCP监听模块
监听TCP请求,这里的请求是指报文内容是某应用层协议(比如HTTP,FTP,EMAIL等应用层协议)的请求。至于这里是否会单独产生一个线程来开始处理,这个由服务器自己决定,目前最流行的是先入消息队列然后异步处理,这样能极大提高代理的吞吐量和稳定性。
匹配被代理服务器
代理服务器根据一个表(存放外网url和内网服务器的对应关系,通常需人工进行设置),如果匹配到则继续处理,否则依据外网协议返回错误信息,比如HTTP协议这返回404。
应用负载均衡策略
如果比较大型的互联网应用,为了整体系统稳定性,解决单点问题,需要根据自定义策略合理的转发报文给被代理服务器。简单的策略是哈希分发或者随机分发,一般可以由用户进行配置和选择。
这里依据协商好的外网应用协议进行解密,安全,会话,解压等处理。
新生成网络报文
这里依据协商好的内网应用协议生成网络报文,这里可能会进行加密,安全,会话,压缩等处理。
转发给被代理服务器
把新生成的网络报文发送给内网服务器(可能是否Web服务器,Ftp服务器,邮件服务器)。
接受网络报文
接受内网服务器反馈的网络报文。
这里依据协商好的外网应用协议进行加密,安全,会话,压缩等处理。
资源输出模块
这时生成满足外网应用协议要求的报文,并发送到外网连接的另一端(用户代理)。
常用的反向代理服务器
它们的名字您一定记得:Ngnix,IIS,Apache。
从概念上讲:Web服务器是提供WWW服务的程序;Web容器是提供给开发者的框架;Web应用程序服务器内容丰富得多,既可用各厂商通常遵循一定的工业标准并自定义扩展功能而成,也可以利用开源组件轻量级拼装打造;反向代理服务器在企业级应用中表现突出,具有解决集中式安全,负载均衡等等优点。
关于Kerstrel是否web容器,有两种观点:
1. 由于Kerstrel不提供编写应用的框架,所以它不是容器;asp.net
core才是容器,因为它提供了开发应用的框架并提供web应用(MVC,Web API)运行环境。
2. Kerstrel提供了运行环境。
非常欢迎大家提出自己的有力观点,帮助我们清晰化这个asp.net core容器概念。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
关注热点聚焦热点聚焦
24H热文一周话题本月最赞
精选博文论坛热帖下载排行
本书重点介绍了主流ARM应用系统的开发与实践。全书基于目前较为通用、流行的ARM处理器,介绍了其原理、硬件结构、硬件电路设计与开发和软件...
订阅51CTO邮刊

我要回帖

更多关于 支持jsp的web服务器 的文章

 

随机推荐