Frage

Ich suche ein paar Anwendungen zusammen zu verknüpfen (alle in verschiedenen Sprachen geschrieben wie C #, C ++, Python) und ich bin nicht sicher, wie es geht.

Was ich meine, durch die Verknüpfung? Das System an dem ich arbeite besteht aus kleinen Programmen der jeweils für eine bestimmte Verarbeitungsaufgabe. Ich muss in der Lage, einen Datensatz von einer Anwendung zur anderen leicht zu übertragen (der Datensatz in Frage ist nicht riesig, wahrscheinlich ein paar Megabyte) und ich brauche auch eine Form der Art und Weise den aktuellen Zustand des Betriebs zu steuern (Dies ist wo ein Client-Server-Modell klingelt)

Es scheint, wie Steckdosen oder vielleicht wäre SOAP eine universelle Lösung, sondern nur ein paar Meinungen bekommen will, was die Leute denken, zu diesem Thema.

Kommentare / Anregungen zu erkennen sind, danke!

War es hilfreich?

Lösung

Ich nehme persönlich Gefallen zu omq . Es ist eine Bibliothek, die Nachrichten für das Bestehen eine vertraute BSD-Sockets-ähnliche Oberfläche, aber Sie finden es interessante Muster zur Verteilung von Aufgaben implementiert.

Es klingt wie Sie mehrere Prozesse in einer Pipeline angeordnet werden sollen. Omq ermöglicht es Ihnen, dass die Verwendung von Push-und Umfrage-Buchsen zu tun. (Und danach, finden Sie es sogar möglich ist, über mehrere Prozesse zu skalieren und Maschinen mit wenig Aufwand.) Werfen Sie einen Blick auf die führen , um loszulegen, und die zmq_socket (3) manpage speziell für wie Push- und Pull funktioniert.

Bindungen sind für alle Sprachen, die Sie erwähnen.

Wie bei dem Inhalt der Nachricht, omq sich nicht um sich selbst damit, sie sind nur ein paar Blöcke von Rohdaten. Sie können ein beliebiges Format verwenden, die zu Ihnen passt, wie JSON, oder vielleicht Protocol Buffers .

Was ich bin mir nicht sicher über den ‚herrschenden Zustand‘ Sie erwähnen. Sie interessieren sich zum Beispiel einen Job auf halbem Wege durch Cancelling?

Andere Tipps

Für C # C # können Sie Windows Communication Foundation verwenden. Sie können in der Lage sein, es zu verwenden, um mit Python und C ++ als auch.

Sie können auch Named Pipes zur Kasse.

Ich würde denken, etwa an einem Modell zu bewegen, wo Sie das Problem beseitigen, indem sie zentralisierte Daten mit, dass alle Anwendungen zu sehen. Halten „eine Quelle der Wahrheit“, so zu sprechen.

Die meisten außerhalb Software hat Probleme Verknüpfung gegen C ++ Code, aufgrund des Namens-Mangeln Algorithmus es für seine Symbole verwendet. Aus diesem Grund, wenn sie mit Programmen in anderen Sprachen Schnittstelle, ist es oft am besten Wrapper Dinge wie extern "C" oder innerhalb eines extern "C" { Block zu erklären.

  

Ich muss in der Lage, einen Datensatz von einer Anwendung zur anderen leicht zu übertragen (der Datensatz in Frage ist nicht riesig, wahrscheinlich ein paar Megabyte)

Verwenden Sie das Dateisystem.

  

und ich habe auch eine Form der Art und Weise müssen den aktuellen Zustand des Betriebs steuern

Auch hier verwenden Sie das Dateisystem. A „current_state.json“ Datei mit einem JSON serialisiert Objekt für mehrere Sprachen zur Arbeit mit perfekt.

  

Es scheint, wie Steckdosen oder vielleicht wäre SOAP eine universelle Lösung sein.

Vielleicht. Aber es ist für diese Art der Sache übertrieben. Ihr Betriebssystem bereits verfügt über alle Einrichtungen, die Sie benötigen. Verwenden Sie einfach das Dateisystem. Es ist sehr einfach und sehr zuverlässig.

Es gibt viele Möglichkeiten, die Kommunikation zwischen Prozessen zu tun. Wie Sie gesagt haben, können Steckdosen eine universelle Lösung sein. SOAP, denke ich, ist etwas zuviel des Guten. Sie können auch Mailslots verwenden. Ich schrieb C ++ Anwendung es vor ein paar Jahren. Named Pipes könnte auch eine Lösung sein, aber wenn Sie auf Windows-Codierung, kann es schwierig sein.

Meiner Meinung nach:

  1. Sockel
  2. Mailslots

Sind die besten Kandidaten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top