WebServer Vs ApplicationServer

出现过几次被客户要求既有项目为什么不能单独部署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:静态内容缓存;

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

posted @   陆敏技  阅读(1562)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
历史上的今天:
2011-06-20 使用Entity Framework和WCF Ria Services开发SilverLight之4:Map之主外键映射
Web Counter
Coupon for Contacts
点击右上角即可分享
微信分享提示