2009-07-30 20 views
6

Windows'da bir java işlemini başlatan bir C++ uygulamasına sahibiz. Bu iki uygulama birbiriyle iletişim kurmalıdır (xml parçacıkları aracılığıyla).Windows İşletim Sistemi ortamında C++ uygulaması ve Java Uygulaması arasında İnterprocess İletişimi

Hangi süreçler arası iletişim yöntemini seçersiniz ve neden?

Bizim için tablodaki yöntemler şunlardır: paylaşılan bir dosya (lar), borular ve prizler (bunun bazı güvenlik endişeleri olduğunu düşünüyorum). Diğer yöntemlere açığım.

cevap

9

Neden soket tabanlı iletişimin güvenlik sorunlarına neden sahip olacağını düşündüğünüzden emin değilim (SSL kullan). İyi tanımlanmış bir iletişim protokolüne sahip olduğunuzu varsayarak, dil agnostik olduğu için genellikle çok iyi bir yaklaşımdır. Örneğin, Google'ın protocol buffers'a bir göz atın. Gerekli Java sınıflarını ve akışlarını oluşturuyorlar. Tecrübelerime göre

, dosya sistemleri (özellikle ağ dosya sistemleri) mutlaka mesajlaşma için ayarlanmış değildir gibi iletişim için uygun değildir (gördüğüm önbelleğe sorunlar dosyaları hedef tarafından toplanmayan sayılmasına neden örnek olarak).

Diğer bir seçenek olasılıkla kurmak için daha büyük bir yönetimsel yükü (artı uzmanlık) içerecektir bu halde bir mesajlaşma katman (örneğin AMQ veya TIBCO) 'dir. Esneklik ve basitliği nedeniyle kişisel olarak saf priz yaklaşımını tercih ediyorum. Tüm kontrol içinde olacaktır.

+0

Amacınız, yuva ve güvenlik hakkında alınmıştır. Teşekkürler. +1 –

1

Ice oldukça serin :) Ben C# ve bir çapraz platform C++ app arasındaki iletişim için adlandırılmış yöneltme kullanılan ve iyi sonuçlar başka bir şey gelmedi

3

. Bu soketleri engellemek kesinlikle gitmek için bir yoldur.

2

Soketler güzeldir. Her bileşenin etrafında bir kara kutu test katmanı oluşturmanın yanı sıra her bileşenin kendi makinesinde çalışmasını sağlar.

Güvenlik kesinlikle bir endişe kaynağıdır, ancak ne kadar önemli olduğuna bağlı olarak iyi bir seçenek yelpazesi vardır. Güvenli hale getirmek için SSL, özel el sıkışma, parola korumalı girişler ve güvenlik duvarlarını kullanabilirsiniz.

Düzeltme: Tavsiye etmediğim bir şey değil, aynı zamanda JNI kullanarak paylaşılan bellek de var. Sadece bahsetmeyi düşündüm çünkü bu senin listesinde yok.

İlgili konular