3

我现在正在上分布式系统的课程,但我无法掌握中间件的概念。我知道它是一个软件层,在应用程序和网络上的实际通信之间提供了一定程度的抽象,但我需要具体的例子。我知道 CORBA 和 Java RMI 是中间件的例子,但这些对我来说真的没有意义。

当我用 Java 编写一个通过 DatagramSockets() 进行通信的客户端-服务器程序时,是那个中间件吗?如果是这样,为什么不呢?Java DatagramSocket() 方法提供了从我的应用程序到网络上实际通信的一定程度的抽象。

4

1 回答 1

1

到目前为止,我同意评论者的观点——这并不是一个明确的术语。

但是,我能想到的最适用于您的问题的是消息队列,例如0MQRabbitMQ。它们提供了与网络交互的不同方式,这些方式比直接使用 TCP 或 UDP 更加抽象。它们都鼓励使用可应用于大多数分布式系统问题的“网络模式”。

  • 0MQ 提供了关于客户端和服务器开始顺序的灵活性,使用多个协议(线程之间/进程之间/通过 TCP/通过 UDP/...)发送消息,并处理网络断开连接。

  • RabbitMQ(我对此知之甚少)提供了持久化到磁盘的集中式消息队列,并允许您网络上的客户端只知道相关队列在哪里(而不是该队列的所有生产者/消费者在哪里)。

于 2013-05-21T07:21:56.233 回答