什么是中间件?

Mic*_*hel 187 frameworks middleware

我听过很多人最近谈到中间件,但中间件的确切定义是什么?当我查看中间件时,我发现了很多信息和一些定义,但在阅读这些信息和定义时,似乎大多数所有"商品"都处于中间状态.那么,所有东西都是中间件吗?

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

med*_*pal 198

假设您的公司生产4种不同的产品,您的客户还有另外3种不同公司的3种不同产品.

有一天客户想,为什么我们不将所有系统集成到一个庞大的系统中.十分钟后,他们的IT部门表示需要2年时间.

您(明智的开发人员)说,为什么我们不只是整合所有不同的系统并使它们在同质环境中协同工作?客户经理盯着你......你继续,我们将使用中间件,我们将研究所有不同系统的输入/输出,他们使用的资源,然后选择适当的中间件框架.

仍向非技术经理解释
在中间的中间件框架中,第一个系统将生成X个东西,系统Y和Z将消耗这些输出等等.

  • 所以中间件实际上是某种中间人. (5认同)
  • 这是人们寻找的那种答案,而不是那些回应的答案:"你能更具体地说明你的意思......" (5认同)
  • 这个答案似乎表明中间件可以非常广泛。它可以包括日志记录、检索凭据,基本上是请求到达服务器之前发生的任何事情? (3认同)
  • 很好的例子,非常感谢你. (2认同)

Joh*_*lla 84

中间件是一个非常模糊的术语.什么是"中间件"在一个案例中不会在另一个案例中.通常,您可以期望被归类为中间件的东西具有以下特征:

  • 主要(通常是专门)软件; 通常不需要任何专门的硬件.

  • 如果它不在那里,依赖它的应用程序必须将它作为其应用程序的一部分并且会经历大量重复.

  • 几乎肯定会连接两个应用程序并在它们之间传递数据.

您会注意到这与操作系统的定义基本相同.因此,例如,TCP/IP堆栈或缓存可以被视为中间件.但是您的操作系统也可以提供相同的功能.实际上,中间件可以被认为是对操作系统的特殊扩展,特定于依赖于它的一组应用程序.它只是提供更高级别的服务.

中间件的一些示例:

  • 分布式缓存
  • 消息队列
  • 交易监控
  • 包重写器
  • 自动备份系统


aio*_*obe 18

维基百科有一个很好的解释:http://en.wikipedia.org/wiki/Middleware

它始于

中间件是连接软件组件或应用程序的计算机软件.该软件包含一组服务,允许在一台或多台机器上运行的多个进程进行交互.

什么是中间件提供了一些例子.

  • 我自己已经找到了,但似乎维基百科说一切都是中间件,或者你有没有中间件的例子 (2认同)
  • 我会通过添加......来澄清"一台或多台本机无法进行交互的机器".否则,同意,这个答案没有错. (2认同)
  • 更好的说法是“一个或多个[进程]进行交互,而本机无法进行交互”。 (2认同)

Pet*_*ham 15

我知道(至少)有三种不同的定义

  • 在商业计算中,中间件是应用程序和服务之间的消息传递和集成软件

  • 在游戏中,中间件非常适合第三方提供的任何东西

  • 在(某些)嵌入式软件系统中,中间件提供应用程序使用的服务,这些服务由硬件抽象层提供的功能组成 - 它位于应用程序层和硬件抽象层之间.


小智 13

简单地说,Middleware是一个软件组件,它提供将不同系统集成在一起的服务.

在复杂的企业环境中,当您需要将两个或多个企业系统集成在一起以相互通信时,存在许多挑战.通常这些系统不会理解彼此的语言,因为它们是使用不同语言(如C++,Java,Cobol等)在不同平台上开发的.

所以这里有中间件软件在图片中提供像

  • 将消息格式从一个app转换为另一个app,
  • 除了照顾安全之外,路由和丰富消息,
  • 加密,
  • 验证和
  • 将不同的业务规则应用于这些消息.

中间件的典型示例是ESB产品,如IBM消息代理(WMB/IIB),WESB,Datapower XI50,Oracle Fusion,Mule等等.

因此,中间件主要位于服务消费应用程序和服务提供商应用程序之间,并帮助这些应用程序相互通信.


Eld*_*bek 12

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

  1. 异常/错误处理
  2. 静态文件服务器
  3. 认证
  4. MVC 中间件

如上图所示,ASP.NET中有各种中间件组件接收传入请求,并将其重定向到C#类(在本例中为控制器类).


小智 9

中间件是软件的通用术语,用于"粘合"单独的,通常是复杂的和已经存在的程序.一些经常与中间件连接的软件组件包括企业应用程序和Web服务.


Bra*_*ody 5

Web应用程序开发中有一个通用定义,该定义是(我正在写这个措辞,但似乎很合适):一个组件,旨在修改HTTP请求和/或响应,但通常不提供响应整体上,它被设计为链接在一起以形成请求处理期间的行为更改管道。

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

  • Gzip响应压缩
  • HTTP认证
  • 请求记录

这里的关键点是,这些都不对响应客户负全部责任。相反,它们各自以某种方式作为管道的一部分来改变行为,而使实际响应来自于序列(管道)后面的某些事物。

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

就我个人而言,我讨厌术语“中间件”,因为它具有通用性,但它很常用。

这是专门适用于Ruby on Rails的附加说明。


Dan*_*iel 5

Middleware 站在Web应用程序和本地无法通信的Web服务之间,通常用不同的语言/框架编写.

一个这样的例子是OWIN middleware for .NET环境,之后因为人们被迫在微软托管软件中托管网络应用程序IIS.在owin开发之后,它增加了在IIS和自托管主机上托管的能力,在IIS中只增加了对作为接口的Owin的支持.也有可能host .NET web apps on Linux via Mono,这再次增加了对Owin的支持.

它还增加了创建容量Single Page Applications,Owin处理Http请求/响应上下文,所以在owin之上你可以authentication/authorization通过OAuth2 添加逻辑,例如,你可以配置中间件来注册一个包含用户身份验证逻辑的类(例如OAuth2实现)或者包含如何管理http请求/响应消息的逻辑的类,这样您就可以使一个应用程序通过不同的数据格式与其他应用程序/服务进行通信(如jnet,xml等,如果您的目标是web).