Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dienst aufteilen in DLLs? (https://www.delphipraxis.net/138151-dienst-aufteilen-dlls.html)

Jackie1983 4. Aug 2009 12:16


Dienst aufteilen in DLLs?
 
Servus,

habe eine Client / Server Anwendung. Der Clientsocket (Thread) läuft als Dienst.
Jetzt habe ich mir gedacht, wenn der Dienst mal abschmiert weil es einen Fehler in der Programmierung gibt, muss ich den Dienst per Hand neustarten. Was nicht sein soll.

Zur Zeit sind alle "Module" im Client eingebaut.
Wäre es nicht besser im Dienst NUR den Clientsocket zu programmieren für die Kommunikation mit dem Server.
Die Aufgaben etc. werden dann in DLLs programmiert. So kann ich im Dienst ja direkt prüfen ob die Threads in den DLLs noch funktionieren, sonst neustart. Und wenn ein "Modul" Daten an den Server schicken möchte kann es die Daten den Dienst übergeben und dieser sendet die Daten an den Serversocket.

Was meint ihr dazu?
Wollte erst nachfragen was ihr dazu meint. Da das Projekt schon recht groß ist wäre das viel Arbeit.
So könnte man auch einzelne Module updaten über den Dienst und braucht nicht den ganzen Dienst abschalten.

Probleme die sich dabei aufstellen:
1) Thread in DLL, sollte funktionieren.
2) Thread in DLL starten über Initfunktion.
3) Thread und Timer in DLL da könnte ich probleme bekommen.
4) Übergabe der Werte aus einer DLL an Dienst -> ?

Gruß

himitsu 4. Aug 2009 12:31

Re: Dienst aufteilen in DLLs?
 
ob die Threads nun in einer DLL laufen oder in der EXE ist vollkommen egal

wenn ein Thread ungeschützt abschmiert, dann reißt er so oder so das ganze Programm mit sich in den Abgrund (Programm beendet sich)

mirage228 4. Aug 2009 12:34

Re: Dienst aufteilen in DLLs?
 
Zitat:

Zitat von himitsu
wenn ein Thread ungeschützt abschmiert, dann reißt er so oder so das ganze Programm mit sich in den Abgrund (Programm beendet sich)

Immer? Also z.B. bei Stack-Overflows ist bei immer nur der TThread "flöten" gegangen, da die Threads ja in unterschiedlichen Kontexten laufen (eigener IP, Stack, etc.) ...

himitsu 4. Aug 2009 13:02

Re: Dienst aufteilen in DLLs?
 
was hattest du denn für einen Thread?
selber per WinAPI, oder via TThread der VCL?
(bei Letzterem ist ist die Threadprozedur durch Try-Except seitens TThread geschützt)

ich wollte aber nur darauf hinaus, daß es im Grunde egal ist, wo sich der Thread befindet.

Jackie1983 4. Aug 2009 13:15

Re: Dienst aufteilen in DLLs?
 
bis jetzt ist mein Thread auch nur abgeschmiert und der Dienst lief noch weiter.
Man konnte aber den Dienst nicht mehr ansprechen oder richtig beenden.

Für die Update Funktion ist es aber wesentlich einfacher wenn die Module in DLLs stecken.
Und ich bekomme eher mit welche Modul nicht mehr funktioniert, da ja die dll nur "hängt" und ich im Dienst das dann sehe und eine Message an den Server schicken könnte, oder die dll neu lade.

franktron 4. Aug 2009 14:30

Re: Dienst aufteilen in DLLs?
 
Zitat:

Zitat von Jackie1983
Und ich bekomme eher mit welche Modul nicht mehr funktioniert, da ja die dll nur "hängt" und ich im Dienst das dann sehe und eine Message an den Server schicken könnte, oder die dll neu lade.

Leider nicht du kannst die DLL nämlich nicht mehr richtig entladen, und sie bleib auch noch in Benutzung was ein löschen auch erschwert.

Jackie1983 4. Aug 2009 14:31

Re: Dienst aufteilen in DLLs?
 
also dann doch eher nur der Dienst ohne die DLLs?


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