出现过几次被客户要求既有项目为什么不能单独部署WebServer和ApplicationServer的问题,他们用的例子无非就是Apache+Tomcat,他们称之为前面为WebServer,后面为ApplicationServer,问我们的IIS为什么不能这样部署。现说明如下:

首先,webserver和applicationserver的概念是出现在分布式系统中的,它们的具体责任如下:

webserver:负责处理客户端请求,然后远程调用applicationserver上的服务。

Applicationserver:公开服务给webserver。

但我们往往对webserver和applicationserver存在一些误解,很多人对两者的分类依赖于程序的宿主。以JAVA平台为例,不少人会将Apache所在的服务器称作webserver,而将Tomcat\Jboos\Websphere\Weblogic所在的服务器称之为applicationserver。

大部分的应用程序或者网站,都没有复杂到可以称之为分布式应用程序。在很多架构中,Tomcat\Jboos\Websphere\Weblogic仅仅作为可以解析java代码的一个平台(虽然它可以部署在不同的服务器上)。在这种情况下,我们也不能将这个平台称之为applicationserver,而应该称之为webserver的一个httpmodule(物理机之间的转发也应该这样去理解)。

同理,在微软平台下,对于C#代码(asp.net)的解析,已经作为一个默认的httpmodule集成在IIS(5.5及以后版本)中了,一般我们也不将它们物理分割开,所以造成的假象是微软平台下仿佛没有webserver和applicationserver之分。实际的情况是,如果应用系统本身不是一个分布式架构,想要区分webserver和applicationserver就是一个错误的概念。如果一定要把请求和httpmodule物理分割,类似apache+tomcat,那么在微软平台下,也可以是:

Apache+IIS

当然,还有其它的选择,如:

Varnish+IIS

甚至是:

IIS+IIS

即,前者是一个代理服务器,后台加一个动态内容解析服务器(httpmodule)。代理服务器的作用是负责转发http请求,静态内容缓存等,动态内容解析服务器的作用如其名字:解析程序脚本,加载动态内容。

EL不是一个分布式系统,所以,经过上面的解释,我们知道,它不存在什么webserver和applicationserver,某某指明,业界中的普遍做法为:

将HTTP服务器放置在外网或DMZ,AP和DB都需要在内网。

更为准确的描述应该为:

对于非分布式系统,如EL系统,可以将代理服务器放置在DMZ区,IIS和DB放置在内网。

对于分布式系统,将HTTP服务器放置在外网或DMZ,AP和DB都需要在内网。

所以,对于EL系统,我们当前的选择是:需要一个代理服务器吗?一般我们选择代理服务器的理由是:

1:负载均衡;

2:静态内容缓存;

按照某某的说法,仿佛这种方法还出于安全的考虑,即:采用代理服务器后,安全提升了。之所以出现这种误解:是因为往往代理服务器和动态内容解析服务器之间可以加一层防火墙。而实际的情况是,防火墙也可以加在代理服务器和动态内容解析服务器之前,所以说,代理服务器和动态内容解析服务器并不能带来本质上的安全提升。

WebServer Vs ApplicationServer相关推荐

  1. 启动一个java项目http状态 500 - 内部服务器错误_给我 20 分钟,我教你快速掌握JavaWeb和Http...

    Web相关概念 B / S : 浏览器(Browser)-服务器(Server)模式 BS模式中,Server又分为Web Server, Application Server Web Server以 ...

  2. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)

    WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 目录 WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 概述 HTTP解析 HTTP请求头 HTTP响应头 H ...

  3. 大型互联网分布式系统架构技术要点

    大型互联网分布式系统架构技术要点 解决问题的通用思路是将分而治之(divide-and-conquer),将大问题分为若干个小问题,各个击破.在大型互联网的架构实践中,无一不体现这种思想. 架构目标 ...

  4. 大型网站架构与分布式架构

    解决问题的通用思路是将分而治之(divide-and-conquer),将大问题分为若干个小问题,各个击破.在大型互联网的架构实践中,无一不体现这种思想. 架构目标 低成本:任何公司存在的价值都是为了 ...

  5. busybox filesystem httpd php-5.5.31 sqlite3 webserver

    /********************************************************************* busybox filesystem httpd php- ...

  6. 至Webserver构造svgz的文件需要http头,让你的浏览器中打开svgz档

    IE8以及IE8不支持以下浏览器SVG的.svgz它是svg压缩文件格公式,本文介绍的配置独立的浏览器,但浏览svgz请IE9+要么Firefox,Chrome和其他现代的浏览器打开. 让我们以正确显 ...

  7. Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动、停止、重新启动...

    Atitit.   软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动.停止.重新启动 能够通过"netstat  ...

  8. python2 webserver class

    python2 webserver class 研究发现,web socket 的连接返回 消息发的不对: 正确写法: def begin(self):self.webSend = WebSend(s ...

  9. WebDev.WebServer 学习

    自从Vs2005起,Vs开发环境便自带了WebDev.WebServer,就是这个图标,它实际上是一个小型的Web服务器,专用于.net平台.大家经常调试程序它还是相当的方便,经过小小的配置就可以指向 ...

  10. 使用delphi 开发多层应用(十二)使用kbmMW webserver 返回JSON

    由于kbmMW 服务器与客户端交互是使用它的专用数据格式,因此与其它语言及平台相互访问的话就会有兼容问题, 为了最大化的利用kbmMW 服务器,从kbmMW 4.0 以后,其开始支持JSON 格式传递 ...

最新文章

  1. 再学 GDI+[68]: 路径画刷(8) - SetBlendTriangularShaped、SetBlendBellShape
  2. 安装numpy,setuptools的时候,不能再注册表中识别出来python2.7
  3. KOL:Key Opinion Leader
  4. 中移4G模块-ML302-OpenCpu开发-GPIO
  5. C语言-05内存剖析
  6. 面向对象的 XSLT编程
  7. 【react】---函数化编程的理解,柯里化函数及返柯里化函数的理解...
  8. linux查看磁盘使用情况及每个文件夹占用磁盘大小
  9. Python:如何发布自己的模块
  10. 传统算法与神经网络算法,神经网络是谁提出的
  11. 计算机应用基础讨论,计算机应用基础讨论
  12. android 数字 余额宝,仿余额宝数字滚动增长的效果实现
  13. OneHotEncoder简单用法
  14. 阙值,阈值,阀值,傻傻分不清
  15. 基础知识 | 什么是二进制文件?
  16. java取0到999整数_Java中输入一个0到999的整数 怎么弄? 谢谢了、
  17. 进击的UI--------------- UITableViewUITableView的移动
  18. 学计算机颈椎痛,近九成电脑族曾颈椎疼痛,怎么办?
  19. 用计算机弹霜雪千年,霜雪千年(完整版)-双笙-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  20. fiddler更新后证书导出和报错的坑(The root certificate could not be located.)

热门文章

  1. python颜色参数_python matplotlib:plt.scatter() 大小和颜色参数详解
  2. 第二十三章:触发器和行为(九)
  3. tomcat 调优-生产环境必备
  4. APP加密,让你的移动应用更安全!
  5. vue-router页面传值及接收值
  6. Ubuntu编写第一个Python程序
  7. Android布局(4)--相对布局(RelativeLayout)
  8. 为-微软-重写-TechNet Library-中-Microsoft Lync Server 2010
  9. crossentropyloss 输入_Pytorch常用的交叉熵损失函数CrossEntropyLoss()详解
  10. pythonpdf使用教程_Python基础学习教程:Python玩转PDF各种骚操作大全