2010-08-11 75 views
1

我需要在服务器/客户端之间进行通信。我看到CORBA被用于不同的语言,像RMI一样工作,是吗? 在我的应用程序中,我将不得不在客户端/服务器之间传输对象,传输二进制文件(我看到我可以对RMI执行操作),还可以从一个客户端直播到另一个客户端。 我在考虑CORBA,因为如果我需要它也可以用于C++,不是吗? 那么我可以使用CORBA播放流媒体吗?我可以使用CORBA/RMI进行实时音频流式传输吗?

+0

我会尽可能避免使用CORBA,它当然不是设计用于流媒体等应用程序。 – 2010-08-11 13:06:24

+0

我不确定其他ORB,但TAO ACE在传递大对象时确实存在内存问题。 – DumbCoder 2010-08-11 13:47:38

回答

5

RMI和CORBA是分布式对象的技术。然后,您可以像在本地对象上一样调用远程对象上的方法。

当然,如果您实现这样做的方法(例如void sendChunk(byte[] data)),则可以发送和接收字节。但我不认为它们适合于流式传输。对于流媒体,你应该选择一些东西来解决流的服务质量问题--RMI或CORBA明确不会这样做。为此,我可能会看看UDP套接字,或类似的东西,如果通道饱和就会丢弃数据包。

+0

我需要组播流,所以我需要让clint在收到服务器告诉他的RMI指令时监听UDP套接字。 – fredcrs 2010-08-11 13:40:00

4

CORBA为您提供了很多服务,它可能不是流媒体的最佳选择。有两个原因,我能想到的(尽管可以找到对太多的理由)

  1. 对象的有效载荷不仅仅是数据(打包和解包)
  2. CORBA(具体实现)一般争取良好以上服务质量aka将有同样的呼叫重试

这就是说,它已被证明,ORBs也可以与real-time通信。所以,CORBA作为一个框架并不是完全不在桌面上。

虽然我不确定CORBA的组播通信功能。

3

如果你不想使用CORBA来解决这个问题,可以看看RT-CORBA(Real-time corba)。我相信TAO已经实现了它,但是我从来没有使用过RT-CORBA,所以如果它能够为您提供流媒体所需的性能,我就无法亲自演讲。