2011-11-23 33 views
7

İki sistemi birbirine bağlamak için iyi bir yol arıyorum: 1) Ubuntu üzerinde çalışan bir Qt tabanlı uygulama ve 2) başka bir Ubuntu makinesinde çalışan bir Boost tabanlı uygulama. Her iki uygulama da ortak arayüz kodunu koyacağım ortak bir kütüphane kullanıyor. RPC tipi bir arayüz kullanmak istiyorum. CORBA ve D-Bus'a baktım ama başkalarının ne kullandığını veya tavsiye edeceğini merak ediyorum.Qt ve Boost RPC

Şimdiden teşekkürler.

cevap

4

Apache Thrift, orijinal olarak Facebook tarafından geliştirilen çapraz bir RPC çerçevesidir. Bir süre önce yazdığım bir prototip kullandı, bence kullanımı oldukça kolaydı (herhangi bir problemi hatırlamıyorum). Daha sonra sistemi başka dillerde yazılmış bileşenlerle genişletmek isteyebilirsiniz, iyi bir seçim olacaktır.

0

İnternet İletişim Motoru (Ice), birçok dili destekleyen modern ve güncel bir RPC Mekanizmasıdır. here'u indirebilirsiniz. Buz API'lerinin çoğu, Buz için belirtim dili olan Dilim'de tanımlanmıştır.

Dilim (Ice için Spesifikasyon Dili), nesne arayüzlerini uygulamalarından ayırmak için temel soyutlama mekanizmasıdır. Dilim, bir uygulama tarafından kullanılan tür ve nesne arayüzlerini tanımlayan istemci ve sunucu arasında bir sözleşme oluşturur. Bu açıklama, uygulama dilinden bağımsızdır, dolayısıyla istemcinin sunucuyla aynı dilde yazılıp yazılmadığı önemli değildir.

Dilim tanımları, C++ için bir derleyici tarafından belirli bir uygulama dili için derlenir.

XML-RPC'yi de kullanabilirsiniz. Hafif ve kullanımı kolay bir RPC mekanizmasıdır. here'u alabilirsiniz.

2

ØMQ'u düşünebilirsiniz. Diğer birçok şeyin yanı sıra, "otomatik olarak" bağlantı sorunlarını (başarısızlık durumunda yeniden bağlanma dahil) ele alan bir çapraz platform mesaj kütüphanesidir. Birçok dilde bağlamalar vardır ve czmq kitaplığı, ØMQ'nun birçok yaygın kullanımı için güzel bir yüksek düzey C arabirimi sağlar.

Bir RPC çerçevesi için İstek Yanıtı modelini kolayca kullanabilirsiniz, ancak guide'u okuduğunuzda, diğer kalıpların daha uygun olduğunu görebilirsiniz.

ØMQ'nun üzerine kurulmuş bir RPC framework buldum, ancak görünüşe göre C++ kullanıyor olduğunuzdan, bu muhtemelen size yardımcı olmayacaktır (öğrenme amaçları dışında). Ayrıca bkz. this question. İsterseniz muhtemelen kolayca kendi başınıza rulo olabilir.

ØMQ lisansı temelde LGPL statik statik bir istisna ile LGPLv3 + 'dir. czmq, MPLv2'ye taşınıyor, bu yüzden ØMQ yakında bir takım elbise takip ederse şaşırmam. ØMQ yaratıcısından gelen bir mesaja göre, MPLv2 "LGPLv3 +" lisansına çok benzer, ancak kurumsal avukatlar için daha kabul edilebilir.

Arabirim kodunuz için boost serialization'u da düşünebilirsiniz. Yükseltme serileştirme ile birlikte czmq (otomatik düğüm bulma için zbeacon dahil) kullandık ve çok iyi çalışıyor. Geçmişte XML-RPC'u kullandım ve sunduğu bağlantı işleme işlevi için ØMQ'yi tercih ediyorum.