AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Softwareentwicklung im Allgemeinen Projektplanung und -Management Einen REST-Server mit Delphi/CPP Builder erstellen?

Einen REST-Server mit Delphi/CPP Builder erstellen?

Ein Thema von Der schöne Günther · begonnen am 7. Apr 2015 · letzter Beitrag vom 12. Nov 2020
Antwort Antwort
Seite 3 von 5     123 45   
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#21

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 7. Mai 2015, 21:14
So, hier kommt nun endlich das Beispiel.

Kernstück ist das hier:
Delphi-Quellcode:
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;
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von Daniel ( 3. Dez 2015 um 14:51 Uhr) Grund: Anhang auf Wunsch des Autors entfernt, korrigierte Fassung s.u.
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#22

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 8. Mai 2015, 19:16
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 8. Mai 2015, 19:48
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 2. Dez 2015, 22:58
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.
Angehängte Dateien
Dateityp: 7z Demo Server Service.7z (54,9 KB, 189x aufgerufen)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.549 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 3. Dez 2015, 11:22
ahh. genial, danke @jaenicke
Sven
--
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.549 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 10. Dez 2015, 16:52
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?
Sven
--
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.093 Beiträge
 
Delphi 10.4 Sydney
 
#27

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 14. Dez 2015, 05:14
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.716 Beiträge
 
Delphi 10 Seattle Enterprise
 
#28

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 26. Jan 2016, 20:30
Hinweis am Rande: Am 2. bzw. 4. Februar macht Embarcadero einen Skill Sprint zu "Developing REST Servers from scratch"

https://www.embarcadero.com/landing-pages/skill-sprints
Miniaturansicht angehängter Grafiken
attendeeviewerimage002.jpg  

Geändert von Der schöne Günther (26. Jan 2016 um 20:37 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.810 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#29

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 31. Aug 2016, 16:14
TidHttpServer in einen Dienst packen und gut ist
Nach Rufos Vorschlag einfach mal angefangen und ja- da steckt wohl wirklich nichts dahinter. HTTP GET und gut ist. Das werde ich wohl so machen.
Wie hast du das Problem letztendlich gelöst?
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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.716 Beiträge
 
Delphi 10 Seattle Enterprise
 
#30

AW: Einen REST-Server mit Delphi/CPP Builder erstellen?

  Alt 31. Aug 2016, 16:49
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 10:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf