最近我听到很多人在谈论中间件,但是中间件的确切定义是什么呢?当我研究中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎所有的“产品”都处于某种中间。那么,所有东西都是中间件吗?
或者你有一个不是中间件的软件的例子吗?
最近我听到很多人在谈论中间件,但是中间件的确切定义是什么呢?当我研究中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎所有的“产品”都处于某种中间。那么,所有东西都是中间件吗?
或者你有一个不是中间件的软件的例子吗?
当前回答
在web应用程序开发中有一个常见的定义(我编了这个词,但它似乎很合适):一个被设计用来修改HTTP请求和/或响应,但(通常)不服务于整个响应的组件,被设计成链接在一起,在请求处理期间形成行为变化的管道。
通常由中间件实现的任务示例:
Gzip响应压缩 HTTP身份验证 请求日志记录
这里的关键点是,这些人都不完全负责对客户端的响应。相反,作为管道的一部分,每一个都以某种方式改变行为,将实际响应留给序列(管道)的后面部分。
通常,中间件在某种“路由器”之前运行,后者检查请求(通常是路径)并调用适当的代码来生成响应。
就我个人而言,我讨厌“中间件”这个术语的泛型,但它却被广泛使用。
下面是一个特别适用于Ruby on Rails的额外解释。
其他回答
维基百科给出了一个很好的解释:http://en.wikipedia.org/wiki/Middleware
首先是
中间件是连接软件组件或应用程序的计算机软件。该软件由一组服务组成,这些服务允许运行在一台或多台机器上的多个进程进行交互。
什么是中间件给出了几个例子。
中间件的一些例子:CORBA,远程方法调用(RMI),…
上面提到的例子都是允许你处理不同进程之间通信的软件(要么运行在同一台机器上,要么分布在互联网上)。
简单地说,中间件是一种软件组件,它提供将不同的系统集成在一起的服务。
在复杂的企业环境中,当您需要将两个或多个企业系统集成在一起以相互通信时,会遇到许多挑战。通常这些系统不能理解彼此的语言,因为它们是在使用不同语言的不同平台上开发的(如c++、Java、Cobol等)。
所以这里出现了中间件软件,它提供的服务
从一个应用程序到另一个应用程序的消息格式转换, 路由和丰富消息,除了注意安全性, 加密, 验证和 对这些消息应用不同的业务规则。
中间件的一个典型例子是ESB产品,如IBM消息代理(WMB/IIB)、WESB、Datapower XI50、Oracle Fusion、Mule和许多其他产品。
因此,中间件主要位于服务消费应用程序和服务提供者应用程序之间,并帮助这些应用程序相互通信。
我知道(至少)有三种不同的定义
在业务计算中,中间件是应用程序和服务之间的消息传递和集成软件 在游戏中,中间件是由第三方提供的任何东西 在(某些)嵌入式软件系统中,中间件提供应用程序使用的服务,这些服务由硬件抽象层提供的功能组成——它位于应用层和硬件抽象层之间。
在web应用程序开发中有一个常见的定义(我编了这个词,但它似乎很合适):一个被设计用来修改HTTP请求和/或响应,但(通常)不服务于整个响应的组件,被设计成链接在一起,在请求处理期间形成行为变化的管道。
通常由中间件实现的任务示例:
Gzip响应压缩 HTTP身份验证 请求日志记录
这里的关键点是,这些人都不完全负责对客户端的响应。相反,作为管道的一部分,每一个都以某种方式改变行为,将实际响应留给序列(管道)的后面部分。
通常,中间件在某种“路由器”之前运行,后者检查请求(通常是路径)并调用适当的代码来生成响应。
就我个人而言,我讨厌“中间件”这个术语的泛型,但它却被广泛使用。
下面是一个特别适用于Ruby on Rails的额外解释。