Can I use CORBA/RMI to make live audio streaming?
Question
I need to communicate between server/client. I saw that CORBA is used for different languages to work like RMI, is it? In my application I will have to transfer objects between client/server, transfer binary files (which I saw that I can do with RMI) and also play live streaming from one client to another. I was thinking about CORBA because it also can be used with C++ if I need, isnt it? So can I play streaming with CORBA?
Solution
RMI and CORBA are technologies for distributed objects. You then invoke methods on a remote object the same way as on a local object.
Sure, you can send and receive bytes if you implement methods that do so (e.g. void sendChunk(byte[] data)
). But I wouldn't consider them appropriate for streaming. Also for streaming, you should pick something to address the quality of service of the stream -- which RMI or CORBA definitively don't do. For that I would maybe have a look at UDP sockets, or something like that, which just drops packets if the channel is saturated.
OTHER TIPS
CORBA provides you a lot of services and it possibly is not the best of the options for streaming media. Two reasons I can think of (though one can find more reasons against too)
- The object payload is more than just the data (marshalling and unmarshalling)
- CORBA (specifically the implementations) generally strive for a good QoS aka there will be retries for the same call
That said, it has been demonstrated that ORBs can work with real-time communication too. So, CORBA as a framework is not completely off the table.
I am not sure of the multicast communication capabilities of CORBA though.
If you're hell bent on using CORBA to address this, have a look at RT-CORBA (Real-time corba). I believe TAO has an implementation of it, however I've never used RT-CORBA so I can't speak first-hand if it'll give you the performance you'll require for streaming.