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?
RMI and CORBA are technologies for distributed objects. You then invoke methods on remote object the same way as on 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 UPD sockets, or something like this, which just drops packets if the channel is saturated.
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.