AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenaustausch zwischen 2 Programmen?

Ein Thema von Errraddicator · begonnen am 29. Sep 2008 · letzter Beitrag vom 7. Okt 2008
Antwort Antwort
Seite 1 von 3  1 23      
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#1

Datenaustausch zwischen 2 Programmen?

  Alt 29. Sep 2008, 15:38
Hiho,

ich hatte ursprünglich vor meine Programme auf Multithreading umzustellen, um Laufzeit zu sparen.
Dies funktioniert aber nicht, da die Datenbankanbindung die ich nutzen muss (Drittanbieter) nicht für sowas geeignet ist.

Jetzt habe ich die Überlegung mir (wie bisher) ein Singlthreading Programm zu schreiben und das in eine Art Client/Server-Architektur einzubinden.

Also Schemadarstellung ähnlich zum Thread-Ablauf:
Delphi-Quellcode:
Programm
|- Sammelt Anforderungen
|- Gibt diese an Threads weiter
   |- Thread #1 verarbeitet x Anforderungen
   |- Thread #2 verarbeitet y Anforderungen
|- Sammelt die erzeugten Daten der Threads
|- Gibt Ausgabedaten aus
das Ganze auf Programm Ebene:
Delphi-Quellcode:
Programm 1
|- Sammelt Anforderungen
|- Gibt diese an Unterprogramme weiter
   |- Programm 2 (Instanz A) verarbeitet x Anforderungen
   |- Programm 2 (Instanz B) verarbeitet x Anforderungen
|- Sammelt die von den Unterprogrammen erzeugten Daten
|- Verarbeitet Ausgabedaten
Sprich:
Mehr oder weniger das gleiche Prinzip aber halt von Thread auf Programm-Ebene verlagert.

...

Jetzt habe ich aber 1 großes Problem:
Wie schaffe ich es, dass mein Hauptprogramm mit den Unterprogrammen "Programm 2" kommunizieren kann?
So dass ich dem sage "Mach das" und am Ende auch dessen Ausgabe wieder auslesen, sammeln und weiterverarbeiten kann?

Da müsste ich doch quasi eine Client-Server-Anwedung schreiben, oder?
Programm 1 ist der Server der 2 oder mehr Clients startet, diese mit der Verarbeitung beauftragt und anschließend Daten von denen geliefert bekommt.

Aber wie mache ich das?

...

Oder kann ich die Kommunikation auch über OLE / COM z.b. regeln?


Danke im Voraus

cu Patrick
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datenaustausch zwischen 2 Programmen?

  Alt 29. Sep 2008, 15:40
Named Pipes, IPC, MailSlots, IP, ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Datenaustausch zwischen 2 Programmen?

  Alt 29. Sep 2008, 15:52
Zitat von mkinzler:
Named Pipes, IPC, MailSlots, IP, ...
IPC?
IPC ist doch der Oberbegriff (inter process communication) oder hast du da noch was spezielles?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Datenaustausch zwischen 2 Programmen?

  Alt 29. Sep 2008, 18:06
Ich finde Messages immer recht hübsch um Aktionen anzustoßen, und Memory-Mapping zum Teilen von Daten, die man nicht mehr in lParam und wParam quetschen kann
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Datenaustausch zwischen 2 Programmen?

  Alt 30. Sep 2008, 09:53
Gibts da irgendwo ein kleines Tutorial oder Beispiele?

Habe im Moment das hier gefunden: http://assarbad.net/stuff/tutorials/...k_tutorial.pdf
Aber da werde ich nich so ganz schlau draus, bzw. weiß nich so recht wie ich da jetzt meine Datenstrukturen austauschen kann.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Datenaustausch zwischen 2 Programmen?

  Alt 30. Sep 2008, 10:19
Da ich das gerade interessant finde und es eigentlich auch zum Thema passt:

Wie viel kann oder sollte man denn mit den genannten Möglichkeiten übertragen?
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Xeres

Registriert seit: 11. Aug 2008
18 Beiträge
 
#7

Re: Datenaustausch zwischen 2 Programmen?

  Alt 30. Sep 2008, 10:43
Schau mal hier:

http://www.swissdelphicenter.ch/de/showcode.php?id=810


Hier wird mit Windows-Messages sehr einfach zwischen 2 Prozessen kommuniziert
Blog von Entwicklern für Entwickler:

http://www.entwicklerforum.org
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Datenaustausch zwischen 2 Programmen?

  Alt 30. Sep 2008, 13:14
Zitat von Xeres:
Schau mal hier:

http://www.swissdelphicenter.ch/de/showcode.php?id=810


Hier wird mit Windows-Messages sehr einfach zwischen 2 Prozessen kommuniziert
Hey, das ist doch quasi genau das was ich haben möchte.
Habs auch schon ausprobiert und mit Strings funzt es wie im Beispiel wunderbar.
Ich denke ja ma nich, dass das nen großen Unterschied macht, ob ich da jetzt Strings oder eine meiner eigenen Datenstrukturen als Zeiger hinterlege, oder?

1 kurze Frage noch zum Verständnis:
Welche Bedeutung hat "TCopyDataStruct.dwData"?
Für mich macht das jetzt den Eindruck, dass das Windows-technisch gesehen egal ist und nur für meine Programme frei definierbar is, damit ich ne Unterscheidung habe, um was für eine Art von Daten es sich da im mitgelieferten Pointer handelt, oder?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#9

Re: Datenaustausch zwischen 2 Programmen?

  Alt 30. Sep 2008, 13:17
Zitat von Xeres:
Hier wird mit Windows-Messages sehr einfach zwischen 2 Prozessen kommuniziert
Kann ich nur abraten, da es spätenstens in Vista nicht mehr funktioniert, wenn ein Prozess erhöhte Rechte besitzt.


Mailslots sollte man auch nicht mehr verwenden, da sie nur aus Kompatibilitätsgründen (LanMan) existieren.


Pipes und SharedMemory ist eine gute Wahl. Jedoch sollte man immer daran denken, dass die Sicherheitseinstellung (Besitzer, DACL) nur den notwendigen Systemen (die beiden Progs) einen Zugriff gibt. Andernfalls kann es zu erfolgreichen Übernahmeversuchen kommen. Leider ist das nicht so ohne weiteres machbar im Userkontext und man muss daher seine Lese- und Schreibroutinen vor Pufferüberläufen etc. schützen. Für eine Dienstkommunikation ist es aber unabdingbar.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Datenaustausch zwischen 2 Programmen?

  Alt 30. Sep 2008, 13:25
Zitat von Dezipaitor:
Kann ich nur abraten, da es spätenstens in Vista nicht mehr funktioniert, wenn ein Prozess erhöhte Rechte besitzt.
Er startet definitiv die beiden Processe im selben Context Und wenn der User daran was ändert ist er selber Schuld. Für den Anfang ist es doch ganz ok.


Und ja, dwData kannst du frei verwenden.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz