2010-08-11 74 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,所以如果它能夠爲您提供流媒體所需的性能,我就無法親自演講。