Was ist die bevorzugte Art der übergabe von Daten zwischen zwei Anwendungen auf dem gleichen system?
Ich habe eine Anwendung (Ein), muss eine andere Anwendung starten (B). Ich brauche das zum übergeben von Daten zwischen den Anwendungen. Ich denke, der kann zwei Ansätze. Die erste ist, einen socket zu öffnen. Die zweite ist die Freigabe von Daten über eine dll.
Eröffnung Buchse Ansatz ist geradlinig.
Die dll-Ansatz habe ich einige Fragen? Ich kann das laden von plug-in-dlls in B. ich möchte eine dll erstellen, die Einen verwenden kann, um Daten zu B. Beim laden von dlls ist nur eine Instanz der dll geladen? Wenn dem so ist, bedeutet dies, dass Daten gemeinsam genutzt werden können Anwendungen, die die dll laden?
Was ist die bessere Wahl?
Gibt es andere Möglichkeiten, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht effektiv freigeben von Daten über eine DLL. Andere Möglichkeiten:
Die einfachste Methode (vorausgesetzt, dass Windows seit Sie erwähnen eine DLL) ist wahrscheinlich auf die Verwendung von CreateProcess und öffnen Sie eine pipe an den Kind-Prozess, wie beschrieben in vereinfachter form hier: http://msdn.microsoft.com/en-us/library/ms682499.aspx
Named Pipes können eine alternative sein, vor allem, wenn Sie nicht die Kontrolle über die Lebensdauer aller Prozesse. http://msdn.microsoft.com/en-us/library/aa365590.aspx
Für einfache Fälle, mailslots kann eine ausreichende alternative.
http://msdn.microsoft.com/en-us/library/aa365574.aspx#base.using_a_mailslot_for_ipc
Hier ist eine längere Liste von verschiedenen Inter-Prozess-Kommunikation-Techniken für Windows.
http://msdn.microsoft.com/en-us/library/aa365574.aspx
Etwas passiert lokal, mit Hilfe von sockets scheint eine Art overkill. Plus Sie haben, um Ihre eigenen Sicherheits-Mechanismus-spoofing-Angriffe zu verhindern, anstatt abhängig von den integrierten Sicherheitsmechanismus, der die meisten anderen IPC Methoden.
Ist es immer gut zu erkunden alternativer Lösungsmöglichkeiten, aber ich persönlich glaube, dass die Verwendung von sockets als transport layer für Daten zwischen Anwendungen ist nicht nur zukunftssicher, sondern skalierbar als gut. Mithilfe von sockets wird die Notwendigkeit beseitigen, für Sie zu schreiben, reichliche Mengen von OS-spezifischen code, das könnte proclude Sie portieren Ihre Anwendung in der Zukunft auf nicht-Windows-Betriebssystemen.
Ich würde vorschlagen sockets.
Können Sie einen gemeinsamen cache (Beispiel ein windows-Dienst oder versteckten Prozess), die Zuhören kann - zurückgeben von Daten an alle Abonnenten. Dies mit einem Observer-pattern-Ansatz.
Ich würde Zustimmen, dass etwas mit Juan Zamora M außer, dass der service die Bereitstellung der Daten sollte über eine API, die angefordert werden können, wenn erforderlich, nicht gedrückt, wenn sich über die Zuhörer.
Dies könnte helfen. Freigeben von Dateien und Speicher