web常见的中间件有哪些(常见的Web应用中间件(基于Linux))
在整理常用的Web中间件时 ,我发现自己对于Web服务器 、Web中间件和Web容器的概念容易混淆 ,所以在整理常见的Web应用中间件时 ,我想先区别一下Web服务器 、Web中间件和Web容器 。
Web服务器
Web服务器也可以称为网站服务器 ,时提供Web服务的软件或主机 ,Web服务器可以处理HTTP协议 ,响应针对静态页面或图片的请求 ,进行页面跳转 ,或者把动态请求委托给其他程序 。Web服务器可以向Web浏览器等客户端提供文档 ,也可以放置网站文件 ,让全世界浏览 ,更可以放置数据文件 ,让全世界下载 。常见的Web服务器有IIS 、Apache 、nginx和Tomcat等 。
Web中间件
中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通 。中间件处在操作系统和更高一级应用程序之间 。他充当的功能是:将应用程序运行环境与操作系统隔离 ,从而实现应用程序开发者不必为更多系统问题忧虑 ,而直接关注该应用程序在解决问题上的能力 。
也就是说,关于中间件 ,我们可以理解为:是一类能够为一种或多种应用程序合作互通 、资源共享 ,同时还能够为该应用程序提供相关的服务的软件 。(注意:中间件是一类软件的总称 ,不是单独的一个软件) 。
Web容器
为了与页面产生交互操作 ,来获取动态结果 ,需要一些扩展机制能够让HTTP服务器调用服务端程序 ,Servlet技术产生了 ,可以把Servlet简单理解为运行在服务端的Java小程序 ,但是Servlet没有main方法 ,不能独立运行 ,因此必须把它部署到Servlet容器中 ,由容器来实例化并调用Servlet 。而Tomcat和Jetty就是一个Servlet容器 。为了方便使用 ,它们也具有HTTP服务器的功能,因此Tomcat或者Jetty就是一个“HTTP服务器 + Servlet容器 ” ,我们也叫它们Web容器 。
总结
通过以上的概念理解 ,这三者其实是有包含关系的。
Web服务器:IIS 、Apache 、Nginx 、Tomcat 、Jboss 、Jetty 、Weblogic 、Webshere、Glasshfish 、Lighttpd等
Web中间件:Tomcat 、Jboss、Jetty 、Weblogic 、Webshere 、Glasshfish等
Web容器:IIS(asp容器) 、Tomcat(servlet容器) 、Jboss(EJB容器)
所以应该是 Web服务器>Web中间件>Web容器 。
接下来整理基于Linux系统下的常见的Web中间件 。
一 、Apache(httpd)
Apache HTTPD又可以简称为httpd或者Apache,它是Internet使用最广泛的web服务器之一 ,使用Apache提供的web服务器是由守护进程httpd ,通过http协议进行文本传输 ,默认使用80端口的明文传输方式 ,当然 ,后来 ,为了保证数据的安全和可靠性 ,又添加了443的加密传输的方式 ,Apache提供的服务器又被称为:补丁服务器 ,原因很简单 ,它是一款高度模块化的软件 ,想要给它添加相应的功能只需添加相应的模块 ,让其Apache主程序加载相应的模块,不需要的模块也可以不用加载 ,保证了Apache的简洁 ,轻便,高效性 ,当出现大量访问一个服务器是可以使用多种复用模式 ,保证了服务器能快速回应客户端的请求 ,如MPM ,端口复用技术。
特点: 开放源代码 跨平台使用 ,支持绝大多数硬件平台 ,支持所有的unix系统和linux系统 ,支持大多数windows平台 支持多种web编程语言 ,perl ,php ,python ,java等 模块化设计 ,根据所需功能去安装不同的模块 运行非常稳定,支持大负载访问的web站点 安全性高 ,及时修复已发现的漏洞二 、Tomcat
适用于本地开发 ,小项目,或者是个人开发(免费的开放源代码的Web 应用服务器) ,Apache 为HTML页面服务 ,而Tomcat 实际上运行JSP 页面和Servlet ,但是Tomcat处理静态[HTML]的能力不如Apache服务器 。
特点: 支持最新标准(SUN的专家经常和TOMCAT的开发人员在一起混) 更新快 跨平台 体积小 ,安装和部署都方便三 、weblogic
大项目或者商业项目 ,Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发 、集成 、部署和管理之中 ,是美国bea公司出品的一个基于j2ee架构的中间件 。
特点: 简化了可移植及可扩展的应用系统的开发 ,并为其它应用系统和系统提供了丰富的互操作性 商业软件,功能齐全强大,主要应用于大型企业的大型项目 是高扩展的架构体系四 、jetty
一些示例项目或者小项目常(开源的servlet容器) ,是使用Java语言编写的 ,Jetty的运行速度较快 ,而且是轻量级的 ,可以在Java中可以从test case中控制其运行 。从而可以使[自动化测试]不再依赖外部环境 ,顺利实现自动化测试 。
特点: 具有易用性 、可扩展性、易嵌入性 快速高效五 、JBoss
管理EJB的容器和服务器(开放源代码的项目),JBoss遵循商业友好的LGPL授权分发 ,并且由开源社区开发 。
特点: 应用服务器还具有许多优秀的特质 。 需要的内存和硬盘空间比较小 。 安装便捷:解压后 ,只需配置一些环境变量即可 。 支持"热部署",部署BEAN时 ,只拷贝BEAN的JAR文件到部署路径下即可自动加载;如果有改动 ,也会自动更新 。Boss与Web服务器在同一个Java虚拟机中运行 ,Servlet调用EJB不经过网络 ,从而大大提高运行效率 ,提升安全性能 。 用户可以直接实施J2EE-EAR ,而不是以前分别实施EJB-JAR和Web-WAR ,非常方便 。 Jboss支持[集群] 。六 、WebSphere
IBM 的软件平台 ,它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台 、跨产品解决方案所需要的整个中间件基础设施 ,如服务器 、服务和工具。WebSphere 提供了可靠 、灵活和健壮的软件 。WebSphere 是一个模块化的平台 ,基于业界支持的开放标准 。可以通过受信任和持久的接口 ,将现有资产插入 WebSphere ,可以继续扩展环境。WebSphere 可以在许多平台上运行,包括 Intel 、Linux 和 z/OS 。
特点: 满足大量应用的需要 运行于多种硬件和OS平台 支持分布计算 ,提供跨网络 、硬件和OS平台的透明性的应用或服务的交互 支持标准的协议 支持标准的接口七 、nginx
Nginx 是高性能的 HTTP 和反向代理的web服务器 ,Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言 ,比如 perl 、php 等 。但是不支持 java 。Java 程序只能通过与 tomcat 配合完成 。Nginx 专为性能优化而开发 , 性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高 达 50,000 个并发连接数 。
特点: 跨平台:Nginx 可以在大多数 Unix like OS编译运行 ,而且也有Windows的移植版本 。 配置异常简单:非常容易上手 。配置风格跟程序开发一样 ,神一般的配置 。 非阻塞 、高并发连接:数据复制时 ,磁盘I/O的第一阶段是非阻塞的 。官方测试能够支撑5万并发连接 ,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型) 。 内存消耗小 稳定性高:用于反向代理 ,宕机的概率微乎其微 。nginx代理和后端web服务器间无需长连接 。创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!