2015-09-01 19 views
6

C++ MFC kullanıyorum.Uygulamalar arasındaki iletişim için en iyi yol Bir uygulama için

ben "Uygulama Yöneticisi" Ben SendMessge (Win32 Api) kullanmak için ve daha iyi bir yolu olup olmadığını bilmiyorum düşünüyorum

gibi davranmaya bir uygulamaya X uygulamalar arasında iletişim kurmak için en iyi yolu nedir acaba Bunu yapmak için (yuva gibi)

Bu sorun hakkında bazı önerilerde bulunmak istiyorum. Avantaj ve dezavantajlar karşılandı!

Teşekkür

+1

Uygulamalarınız bir ağ üzerinden iletişim kuruyor, bu doğru değilse, yuvaları dikkate almanız gerekmez. – john

+1

Bir sunucu/istemci yapısı gibi görünüyor, orada çok fazla yol var. Soketlere veya GSOAP'a bir göz atın (bunlar da yuva kullanıyor). – Blacktempel

+2

Eğer ihtiyacınız olan şeyi 'SendMessage' yaparsa, sadece bunu kullanın. Başka bir şey programınızın karmaşıklığını çok artırır. – paddy

cevap

6

için uygulama C/S yapıdır. X uygulaması istemci ve uygulama yöneticisi Sunucu. Sen S ve C arasındaki iletişim

1. SendMessage/ileti yuvası/Borular/Dosya Haritalama/Paylaşımlı Hafıza için DataBase, SendMessage'i ve Soket kullanabilirsiniz

  • Avantajları: Kolay
  • Dezavantajları uygulamak : C ve S aynı ortamda (PC) olmalıdır. C ve S , Windows'ta uygulanmalıdır. Ve hiçbir iletişim geçmiş kaydı yok.

2. DataBase

  • Avantajları: C ve S farklı bir ortamda kullanıma alınabilen ve farklı programlama dilleri ile uygulanabilir. Ve siz iletişim geçmişi takip edilebilir.
  • Dezavantajlar: Uygulanması için daha fazla çabaya ihtiyaç vardır.

3. Soket

  • Avantajları: C ve S farklı bir ortamda kullanıma alınabilen ve farklı programlama dilleri ile uygulanabilir.

  • Dezavantajlar: Uygulanması için daha fazla çabaya ihtiyaç vardır.

Genellikle DB & Soket Geçmiş kaydı ihtiyaç karmaşık iletişim/mantık yazılım tasarımı içindir. İletişiminiz çok karmaşık değilse SendMessage'ı seçebilirsiniz.

+1

Teşekkürler !, SendMessage daha hızlı o zaman Soketler? Eğer her bir 10ms (her uygulamadan) yöneticisine gönderilen mesajlar SendMessage'ın performansı azalırsa, uygulamam askıda kalacak mı? –

+3

[Borular] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365780.aspx) ve muhtemelen [Mailslots] (https://msdn.microsoft.com/tr) eklemelisiniz. -us/library/windows/desktop/aa365576.aspx) listesine. – IInspectable

+1

İdeal olarak SendMessage, Soketten daha hızlı olacaktır. SendMessage tarafından gönderilen veriler ağ protokolü gibi ağ zaman maliyeti işlemiyle temas etmediğinden. Ve eğer yönetici mesajı hızlıca işlemezse, uygulama asılacaktır. Bekleme yöneticisinin mesaj sürecini görmezden gelmek için PostMessage'ı kullanabilirsiniz. – ybdesire