最近我听到很多人在谈论中间件,但是中间件的确切定义是什么呢?当我研究中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎所有的“产品”都处于某种中间。那么,所有东西都是中间件吗?

或者你有一个不是中间件的软件的例子吗?


当前回答

如果我没有错的话,在软件应用程序框架中,基于上下文,您可以考虑用于以下角色的中间件,它们可以组合在一起,以便在用户请求和应用程序响应之间执行某些活动。

适配器 洗手液 验证器

其他回答

中间件位于web应用程序和web服务之间,它们本身无法通信,而且通常是用不同的语言/框架编写的。

一个这样的例子是。net环境的OWIN中间件,在OWIN用户被迫在一个叫做IIS的微软托管软件中托管web应用程序之前。owin开发后,在IIS和self host中都增加了主机容量,在IIS中只是增加了对owin的支持,充当接口。此外,通过Mono在Linux上托管。net web应用程序也成为可能,这再次增加了对Owin的支持。

It also added capacity to create Single Page Applications, Owin handling Http request/response context, so on top of owin you can add authentication/authorization logic via OAuth2 for example, you can configure middleware to register a class which contains logic of user authentification (for ex. OAuth2 implementation) or class which contains logic of how to manage http request/response messages, that way you can make one application communicate with other applications/services via different data format (like json, xml, etc if you are targeting web).

中间件是软件的总称,用于将分离的、通常是复杂的、已经存在的程序“粘合在一起”。一些经常与中间件连接的软件组件包括企业应用程序和Web服务。

在web应用程序开发中有一个常见的定义(我编了这个词,但它似乎很合适):一个被设计用来修改HTTP请求和/或响应,但(通常)不服务于整个响应的组件,被设计成链接在一起,在请求处理期间形成行为变化的管道。

通常由中间件实现的任务示例:

Gzip响应压缩 HTTP身份验证 请求日志记录

这里的关键点是,这些人都不完全负责对客户端的响应。相反,作为管道的一部分,每一个都以某种方式改变行为,将实际响应留给序列(管道)的后面部分。

通常,中间件在某种“路由器”之前运行,后者检查请求(通常是路径)并调用适当的代码来生成响应。

就我个人而言,我讨厌“中间件”这个术语的泛型,但它却被广泛使用。

下面是一个特别适用于Ruby on Rails的额外解释。

中间件是关于应用程序如何响应传入请求的。中间件查看传入的请求,并根据该请求做出决策。我们可以只使用中间件构建整个应用程序。例如ASP。NET是一个web框架,由以下主要的HTTP中间件组成。

异常/错误处理 静态文件服务器 身份验证 MVC

如上图所示,在ASP中有各种各样的中间件。NET接收传入的请求,并将其重定向到一个c#类(在本例中是控制器类)。

它是介于操作系统之间的软件层 以及网络中分布式计算系统两侧的应用程序。实际上,它连接了异构网络和软件系统。