代码之家  ›  专栏  ›  技术社区  ›  Michel

中间件到底是什么?

  •  163
  • Michel  · 技术社区  · 14 年前

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

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

    14 回复  |  直到 7 年前
        1
  •  237
  •   ZekeC    4 年前

    假设你的公司生产4种不同的产品,你的客户有另外3种不同公司的产品。

    总有一天,客户会想,我们为什么不把所有的系统集成到一个巨大的系统中呢。十分钟后,他们的IT部门说这需要两年的时间。

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

        2
  •  102
  •   John Feminella    14 年前

    中间件是一个非常模糊的术语。在一种情况下什么是“中间件”在另一种情况下就不存在了。通常,您可以期望被归类为中间件的东西具有以下特征:

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

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

    • 几乎可以肯定的是连接两个应用程序并在它们之间传递数据。

    中间件的一些示例:

    • 分布式缓存
    • 消息队列
    • 包重写器
    • 自动备份系统
        3
  •  22
  •   aioobe    14 年前

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

    中间件是连接软件组件或应用程序的计算机软件。该软件由一组服务组成,这些服务允许在一台或多台计算机上运行的多个进程进行交互。

    What is Middleware 举几个例子。

        4
  •  20
  •   Pete Kirkham    14 年前

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

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

    • 在游戏中,中间件是由第三方提供的任何东西

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

        5
  •  16
  •   nbro kai    7 年前

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

    • 从一个应用程序到另一个应用程序的消息格式转换,
    • 验证和
    • 对这些消息应用不同的业务规则。

    中间件的一个典型示例是 ESB公司 IBM message broker(WMB/IIB)、WESB、Datapower XI50、Oracle Fusion、Mule等产品。

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

        6
  •  14
  •   Patt Mehta    8 年前

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

    1. 异常/错误处理
    2. 静态文件服务器
    3. MVC公司 Middlewares

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

        7
  •  11
  •   falcucci    9 年前

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

        8
  •  8
  •   Brad Peabody    7 年前

    在web应用程序开发中有一个共同的定义,即(我在编这个词,但似乎很合适):

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

    • Gzip响应压缩
    • 请求日志记录

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

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

    就我个人而言,我讨厌术语“中间件”的通用性,但它是常用的。

    Here is an additional explanation specifically applicable to Ruby on Rails.

        9
  •  7
  •   Daniel    6 年前

    Middleware 站在web应用程序和web服务之间,这些应用程序和web服务本机无法通信,并且通常是用不同的语言/框架编写的。

    OWIN middleware for .NET 在owin之前,人们被迫在一个名为 IIS host .NET web apps on Linux via Mono ,这再次增加了对Owin的支持。

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

        10
  •  3
  •   fstuijt    14 年前

    中间件的一些例子:CORBA,远程方法调用(RMI),。。。

    上面提到的示例都是允许您处理不同进程之间的通信的软件(运行在同一台机器上或分布在internet上)。

        11
  •  2
  •   nbro kai    7 年前

    根据我自己在webwork的经验,中间件是用户(web浏览器)和后端数据库之间的东西。正是这个软件接收了用户输入的内容(例如:ipad订单,执行了一些神奇的业务逻辑,即检查是否有足够的ipad可以满足订单),并更新了后端数据库以反映这些更改。

        12
  •  2
  •   Afzal Haque    7 年前

    它只是一个软件或一个工具,您的应用程序在其上执行和恢复应用程序的高可用性、可伸缩性,与其他软件或系统集成,而不必担心应用程序级代码的更改。

    例如:运行应用程序的操作系统需要一个I.P更改,您不必在代码中担心它,它是一个中间件堆栈,您可以在上面简单地更新配置。

    示例2:您在运行时内存分配方面遇到问题,并且觉得应用程序的使用量增加了,您不需要太多考虑,除非您的代码中有bug或瓶颈,否则通过调整应用程序运行的中间件软件配置很容易实现。

    希望提供的信息对您有所帮助。

        13
  •  2
  •   Maryam Sheikh    6 年前

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

        14
  •  0
  •   nbro kai    7 年前

    我一直认为它是我必须安装的最古老的软件。整个应用程序使用了一个web服务器、一个数据库服务器和一个应用程序服务器。web服务器是数据和应用程序之间的中间件。

        15
  •  0
  •   A.N.M. Saiful Islam    5 年前

    如果我没有错,在 软件应用框架 上下文 ,你可以考虑 middleware 对于以下内容 角色 为了在用户之间执行某些活动而可以组合的 request response .

    • 消毒杀菌剂
    • 验证器