Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Socket-/Http-Verbindung in Threads (https://www.delphipraxis.net/147993-socket-http-verbindung-threads.html)

Wollaston 20. Feb 2010 11:17


Socket-/Http-Verbindung in Threads
 
Hallo Zusammen,

ich soll einen Dienst schreiben über den mit verschiedenen externen Anwendungen kommuniziert werden soll. Dies kann über Dateiaustausch, serielle Kommunikation, Socket-Verbindung und WSDL geschehen. Jede Anbindung soll dynamisch über einen DB-Eintrag aktiviert oder nicht aktiviert werden können.

Meine Idee war die einzelnen Anbindungen in einzelnen Klassen zu kapseln und für jede Anbindung einen einzelnen Thread zu erstellen. Für den Dateiaustausch ist das auch kein Thema, While-Schleife im Thread-Execute und gut. Nur bei den anderen Wegen habe ich ein Verständnisproblem.

Da die Socket-/Http-Verbindungen (Indy) ja eigenständig laufen und über Events reagieren frage ich mich, ob ein Thread hier Sinn macht. Wie geht man bei soetwas vor?

Astat 20. Feb 2010 17:27

Re: Socket-/Http-Verbindung in Threads
 
Hallo Wollaston,

Dienst Schreiben, verschiedene Externe Anwendungen, Sockets, DB, WSDl, Serielle Kommunikation,
Threads und auch noch die Indys.

Also ich weiss nicht ob es anderen auch so geht, aber ich hab keine Ahnung was du eigentlich willst? :gruebel:

Erklär doch bitte mal alles genauer, dann kann man leichter helfen.

lg. Astat

mjustin 20. Feb 2010 18:38

Re: Socket-/Http-Verbindung in Threads
 
Zitat:

Zitat von Wollaston
Da die Socket-/Http-Verbindungen (Indy) ja eigenständig laufen und über Events reagieren frage ich mich, ob ein Thread hier Sinn macht. Wie geht man bei soetwas vor?

Indy arbeitet bei Socket/Http in der Regel auch mit Threads. Also würde eine Anbindung für Sockets einen Thread benötigen, in dem für eingehende Verbindungen dann ein Port z.B. für Telnet aufgemacht wird. Daran können sich dann (einer oder mehrere) Clients anmelden, auf die der Server dann parallel reagieren kann. Auch der umgekehrte Fall ist möglich, dass die Socket-Verbindung nicht vom entfernten Client sondern von der Anwendung (Anbindung) hergestellt wird. Im ersten Fall wird die Anbindung die Rolle eines Servers annehmen, im zweiten die eines Clients.

Die Anforderung einer Multiprotokoll-Anwendung klingt allerdings nach einer ziemlich grossen technischen Herausforderung - wartungsfreundlich (Stichwort: Update der Software im laufenden Betrieb) und robust sollte sie ja auch sein, und aus eigener Erfahrung wird man immer weitere Sonderfälle in der Anwendung haben wollen, bis ihre UML-Diagramme Ähnlichkeit mit dem Bauplan einer Erdölraffinerie haben :)

Cheers,

Wollaston 21. Feb 2010 19:39

Re: Socket-/Http-Verbindung in Threads
 
Vielen Dank an Euch.

Ich habs einfach mal probiert und habe im Thread-Execute einen Private Indy Http-Server gestartet. Das ganze funktioniert soweit. Ich hatte nur Verständnisprobleme wie ich Client- und Server-Objekte im Thread benutze weil diese ja eigene Threads haben.

@mjustin
Der Vergleich mit der Erdölraffinerie passt ganz gut. Aber zu meinem Glück sind die einzelen Anbindungen in unserer Software schon vorhanden und sollen "nur" ;-) vom Frontend getrennt werden.

Gruß
Wollaston


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 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