Answers:
假设您的公司生产4种不同的产品,而您的客户又有3种不同的公司提供3种不同的产品。
客户有一天想,为什么我们不将所有系统集成到一个庞大的系统中。十分钟后,他们的IT部门表示将需要2年时间。
您(明智的开发人员)说,为什么我们不仅仅集成所有不同的系统,并使它们在同一个环境中协同工作?客户经理凝视着您...您继续,我们将使用中间件,我们将研究所有不同系统的输入/输出,它们使用的资源,然后选择合适的中间件框架。
仍然向非技术经理解释,
中间使用中间件框架,第一个系统将产生X东西,系统Y和Z将消耗这些输出,依此类推。
中间件是一个非常模糊的术语。在一种情况下,所谓的“中间件”将不在另一种情况下。通常,您可以期望分类为中间件的东西具有以下特征:
主要(通常是专用)软件;通常不需要任何专用硬件。
如果不存在,依赖它的应用程序必须将其合并为应用程序的一部分,并且会经历很多重复。
几乎可以肯定的是,连接了两个应用程序并在它们之间传递数据。
您会注意到,这与操作系统几乎是相同的定义。因此,例如,可以将TCP / IP堆栈或缓存视为中间件。但是您的操作系统也可以提供相同的功能。实际上,可以将中间件视为对操作系统的特殊扩展,特定于依赖于它的一组应用程序。它只是提供更高级别的服务。
中间件的一些示例:
维基百科有一个很好的解释:http : //en.wikipedia.org/wiki/Middleware
它开始于
中间件是连接软件组件或应用程序的计算机软件。该软件由一组服务组成,该服务允许在一台或多台计算机上运行的多个进程进行交互。
什么是中间件给出了一些示例。
我知道(至少)三个不同的定义
在业务计算中,中间件是应用程序和服务之间的消息传递和集成软件
在游戏中,第三方完全可以提供中间件
在(某些)嵌入式软件系统中,中间件提供应用程序使用的服务,这些服务由硬件抽象层提供的功能组成-位于应用程序层和硬件抽象层之间。
简而言之,中间件是一个软件组件,提供将不同系统集成在一起的服务。
在复杂的企业环境中,当您需要将两个或多个企业系统集成在一起以进行相互通信时,会遇到许多挑战。通常,这些系统在使用不同语言(例如C ++,Java,Cobol等)的不同平台上开发时,不会互相理解其他语言。
因此,图中出现了中间件软件,它提供了诸如
中间件的典型示例是ESB产品,例如IBM消息代理(WMB / IIB),WESB,Datapower XI50,Oracle Fusion,Mule等。
因此,中间件通常位于服务使用应用程序和服务提供者应用程序之间,并帮助这些应用程序相互通信。
中间件是关于我们的应用程序如何响应传入的请求。中间件调查传入的请求,并根据该请求做出决策。我们只能使用中间件来构建整个应用程序。例如,ASP.NET是一个Web框架,包含以下主要的HTTP中间件组件。
如上图所示,ASP.NET中有各种中间件组件,它们接收传入的请求,并将其重定向到C#类(在本例中为控制器类)。
Web应用程序开发中有一个通用定义,该定义是(我正在写这句话,但似乎很合适):一个组件,旨在修改HTTP请求和/或响应,但通常不提供响应总体上讲,它被设计为链接在一起以形成请求处理过程中行为更改的管道。
中间件通常实现的任务示例:
这里的关键点是,这些都不对响应客户负全部责任。相反,它们各自作为管道的一部分以某种方式更改行为,而使实际响应来自序列(管道)后面的某些事物。
通常,中间件在某种“路由器”之前运行,后者检查请求(通常是路径)并调用适当的代码以生成响应。
就我个人而言,我讨厌术语“中间件”,因为它具有通用性,但它很常用。
Middleware
位于本机无法通信的Web应用程序和Web服务之间,并且通常以不同的语言/框架编写。
一个这样的例子就是OWIN middleware for .NET
环境,在没有人强迫人们在名为的Microsoft托管软件中托管Web应用之前,环境就是这样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请求/响应消息的逻辑的类,这样您就可以使一个应用程序通过不同的数据格式(例如json,xml等,如果您定位到网络)与其他应用程序/服务进行通信。
它只是一个软件或工具,您的应用程序可以在该软件或工具上执行并具有与高可用性,可伸缩性有关的应用程序功能,可以与其他软件或系统集成,而无需担心应用程序级代码的更改。
例如:运行您的应用程序的操作系统需要IP更改,您不必在代码中担心它,它是您可以在其中简单地更新配置的中间件堆栈。
示例2:您在运行时内存分配时遇到问题,并感到应用程序的使用有所增加,除非您的代码中有错误或瓶颈,否则您不需要做太多事情,可以通过在Windows上调整中间件软件配置来轻松实现您的应用程序将运行。
示例3:您有多个不同的软件,并且您需要它们彼此交谈或以所有系统都可以理解的通用格式发送数据,这就是中间件系统很方便的地方。
希望所提供的信息有所帮助。
它是网络中分布式计算系统每一侧的操作系统和应用程序之间的软件层。实际上,它连接异构网络和软件系统。
如果我没弄错,在软件应用程序框架中,您可以根据上下文考虑middleware
以下角色,可以将这些角色组合在一起,以便在用户request
和应用程序之间执行某些活动response
。