根据之前的经验,我将只回答一个答案——看看这里大公司使用的中间件——中间件有一个目的——将断开连接的系统(用不同的语言编写)粘合在一起,以便它们可以相互交互并简化业务流程 - Entera 就像我所经历的那样,创建了一个中间层,其中 unix 盒子使用用 C 编写的流程,通过前端编写的与大型机系统(DB2、COBOL)交互在 PowerBuilder 中(我没有命名公司!)。
从我给出的描述来看,Entera 是一个中间件,它承载了许多东西——无论字节序格式如何,数据流的平滑集成,不同语言与中间件代理(代理是CORBA或DCE类进程,符合侦听特定端口的“开放组”)并由IDL指定这使得进程看起来是本地的 - 如果您了解 Microsoft .NET 框架下的远程处理中使用的术语,那么您就离题不远了!中间件生成在编译时链接的存根,并管理进程的创建,将其托管在端口外,在运行时进行多线程处理,以及现代前端(如 .NET、Java , PowerBuilder 甚至是无法形容的 VB6...好吧...VB.NET 对于纯粹主义者来说)可以通过打开与特定 IP 地址上指定端口的连接进行交互,并使用生成的存根直接与其交互。
显然,从所描述的内容中,您可以看到遗留系统如何为它注入新的活力,从而实现流程的可扩展性,其主要缺点是成本因素,可能会达到数千美元。使用大型机作为计费/发票的后端处理系统的大公司,他们产生巨额收入显然可以买得起如此昂贵的产品——对他们来说,这就像把硬币扔进水池……因为使用延长业务流程并为其注入新活力的中间件可以将业务扩展到未来数年,而无需担心附加的“遗留”标签。
顺便说一句,我将其作为我的 BSc 论文的一部分进行。在涵盖此商业前端的信息系统中。sourceforge 上有一个名为FreeDCE的中间件开源版本,但开发工作已经下降或停止。
编辑:
@cocotwo:这正是中间件所做的,正如你所说的它是一个管道工具......面向消息的中间件并没有真正听说过 AFAIK,因为我想,需要调用进程(函数)就好像它们在前端的应用程序域中是本地可见的,以便于交互。
与 RPC 调用相比,使用消息可能具有其优势,因为在发生网络断开连接的情况下,消息会在安全保存区域中排队 - 在该方面可能会进行一些数据缓存,以允许前端继续进行...它在“更新特定账单/发票号码的状态”的情况下很有用 - 通过中间件向后端写入数据的单向方式。
好的,大公司将拥有先进的系统基础设施,因为技术人员会全天候不间断地确保数据流的顺利交付,因此必须考虑到这一点。与我合作的公司有 IBM 全球支持合同以按顺序履行以确保在小数点后有 6 个 9 的最大正常运行时间为 99%...使用热插拔/平衡集群/镜像系统...
而对于 RPC,如果发生断开连接,则必须重新启动前端或必须处理断开连接事件。这真的取决于消息队列中间件是否实时处理每条消息并将结果立即传递回前端......
这就是每个(消息队列和 RPC 相关的中间件)都有其优点和缺点的地方......以及成本降低因素,如支持、最长正常运行时间、开发工作和培训 - 这是中间件的一个大问题 - ware 确实是专有的(尽管遵循“The Open Group”布局/标准)并且设置复杂,并且通过脚本将整个事物粘合在一起。