![]() |
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
So, hier kommt nun endlich das Beispiel.
Kernstück ist das hier:
Delphi-Quellcode:
Sprich der Trick an der Sache ist, dass ich nachschaue, ob der Dienstmanager mein Programm gestartet hat oder der Dienst gerade installiert oder deinstalliert werden soll. Zusätzlich habe ich als Demo mal noch einen Konfigurationsswitch eingebaut.
var
VclApplication: TApplication; ServiceApplication: TServiceApplication; begin if WebRequestHandler <> nil then WebRequestHandler.WebModuleClass := TLogServerDataModule; if FindCmdLineSwitch('config') then // normal application with config dialog only begin VclApplication := Vcl.Forms.Application; VclApplication.Initialize; VclApplication.MainFormOnTaskbar := True; VclApplication.CreateForm(TfrmLogServerConfigDlg, frmLogServerConfigDlg); VclApplication.Run; end else if not AnsiSameText(GetParentProcessName, 'services.exe') and not FindCmdLineSwitch('install') and not FindCmdLineSwitch('uninstall') then // normal application begin VclApplication := Vcl.Forms.Application; VclApplication.Initialize; VclApplication.MainFormOnTaskbar := True; VclApplication.CreateForm(TfrmLogServerTestMain, frmLogServerTestMain); VclApplication.CreateForm(TLogServerDataModule, LogServerDataModule); LogServerDataModule.RunningAsService := False; VclApplication.Run; end else // service begin ServiceApplication := Vcl.SvcMgr.Application; if not ServiceApplication.DelayInitialize or ServiceApplication.Installing then ServiceApplication.Initialize; ServiceApplication.CreateForm(TDemoServer, DemoServer); ServiceApplication.CreateForm(TLogServerDataModule, LogServerDataModule); LogServerDataModule.RunningAsService := True; ServiceApplication.Run; end; |
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Danke Jaenicke und Sir Rufo.
Man lernt immer wieder was dazu. Ich hatte mir das ganze um einiges komplizierter vorgestellt, aber wenn ich die Beispiele lese ist es ja doch ganz simpel. Kommt mir auch sehr gelegen, da ich eh grad an einem Service rumstricke, und mir schon Gedanken über ein Konfigurationsprogramm gemacht habe. Das kann ich mir jetzt sparen und gleich mit in die Exe packen, was nicht nur eleganter aussieht, sondern auch die Notwendigkeit beinhaltet, dass der Dienst zur Übernahme der Konfiguration eh neu gestartet werden müsste. |
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Vor allem kann man den Dienst so auch steuern, wenn man ihn als Exe normal aufruft. (In der Demo steckt noch mehr als hier als Quelltext gepostet ist, falls das jemand sonst nicht ausprobiert. ;-)) Außerdem habe ich in einem unserer echten Dienste im Büro auch gleich Eingabefelder für Name und Anzeigename des Dienstes für dessen Installation und Statusprüfung eingebaut, was man sonst ja nicht so einfach einstellen kann.
|
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe per PN die Nachricht bekommen, dass in dem Download noch Units fehlen. Hier der korrigierte Download, in dem diese Units nicht benötigt werden.
|
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
ahh. genial, danke @jaenicke
|
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Angenommen es geht was bei Initialisierung des Prozesses schief (Datenbank nicht erreichbar, Ports belegt, etc), wie geht Ihr da vor? Last Ihr den Prozess am Leben und protokolliert das ganze oder Prozess beenden mit Application.Terminate und vor dem .Run rausspringen?
|
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Das wichtigste ist natürlich das zu loggen. Bei einem Dienst auch im System-Eventlog.
Dann würde ich bei einem Dienst per Datasnap auch eine Statuswebseite anbieten. Dort kann dann der Fehler im Detail stehen und auf der Startseite der verlinkte Hinweis, dass der Dienst nicht initialisiert werden konnte. Bei einer normalen Anwendung sehe ich im Normalfall keinen Grund diese normal zu starten, aber wenn diese wie im Beispiel den Dienst steuert, würde ich diese trotzdem starten, ggf. direkt mit einem speziellen Fenster dafür. |
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Liste der Anhänge anzeigen (Anzahl: 1)
Hinweis am Rande: Am 2. bzw. 4. Februar macht Embarcadero einen Skill Sprint zu "Developing REST Servers from scratch"
![]() |
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Zitat:
Ich stehe vor einer ähnlichen Aufgabe und bin irgendwie auf dem gedanklichen Holzweg, wenn es darum geht die eigene Applikation auf REST-Befehle responsiv zu gestalten. |
AW: Einen REST-Server mit Delphi/CPP Builder erstellen?
Ganz billig. Wenn du ein, zwei Tage warten kannst such ich das nochmal heraus. Im Endeffekt war es einfach nur auf den HTTP-GET-String geschaut, eine dazu passende Behandler-Methode aufgerufen und die über HTTP übergebenen Params (sowie die Rückgaben) waren halt Json-Objekte. Mehr habe ich nicht gebraucht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz