AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein HTTPS Post an Server in einer Queue senden
Thema durchsuchen
Ansicht
Themen-Optionen

HTTPS Post an Server in einer Queue senden

Ein Thema von linxxruxx · begonnen am 20. Sep 2019 · letzter Beitrag vom 23. Sep 2019
Antwort Antwort
Seite 2 von 2     12   
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: HTTPS Post an Server in einer Queue senden

  Alt 20. Sep 2019, 12:20
Weiss nicht genau was du hier mit "Queue" meinst. Wenn es deine Tabelle ist die du mit "while not eof" durcharbeiten willst, dann geht das auf jeden Fall.

Dir Frage ist dann halt, ob das Backend nur einzelne Aufträge verarbeiten kann oder ob es eventuell alle Aufträge in Form einer JSON/XML Datei verarbeiten kann. Muss jeder Auftrag aleine verarbeitet werden, musst du halt für jeden Auftrag die Daten an das Backend senden. Pro Auftrag also einen Webaufruf. Wenn er mehrere Aufträge mit einer JSON/XML Datei einlesen kann, reicht ein einzelner Aufruf mit der von dir zuerst zusammen gestellen JSON/XML Datei mit allen Aufträgen deiner Queue.
  Mit Zitat antworten Zitat
linxxruxx

Registriert seit: 19. Aug 2019
28 Beiträge
 
#12

AW: HTTPS Post an Server in einer Queue senden

  Alt 20. Sep 2019, 12:30
Es soll in der "while" quasi geprüft werden, ob die Variable "SentToServer" false ist, denn nur dann wurde der Eintrag noch nicht an das Backend gesendet.
Danach soll geprüft werden ob Verbindung zum Server besteht, wenn das nicht der Fall ist, soll der Eintrag solange in einer Warteschleife bleiben, bis Serververbindung besteht.
Besteht die Verbindung, wird der Eintrag gesendet und im Anschluss die Variable "SentToServer" auf true gesetzt.
Die While-Schleife ist durch und es geht mit dem nächsten Eintrag weiter.

Und das soll ich iwie in einer Queue machen, aber das weiß ich eben nicht so recht.

Jeder Auftrag muss alleine verarbeitet werden, da es ja Änderungen am Auftrag sind.
Man kann es sich so wie Events vorstellen: AuftragStauts = "Angenommen" wäre dann ein Event. Wird er aber während keine Verbindung zum Server besteht auch noch "Erledigt", wäre das ein nächstes Event.

Aus diesem Grund hat die Tabelle Auftrag/AuftragCache auch einen Zeitstempel, damit mit dem ersten, also ältesten Eintrag/Event begonnen wird, in das Backend zu schreiben.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: HTTPS Post an Server in einer Queue senden

  Alt 20. Sep 2019, 13:04
Jeder Auftrag muss alleine verarbeitet werden, da es ja Änderungen am Auftrag sind.
Man kann es sich so wie Events vorstellen: AuftragStauts = "Angenommen" wäre dann ein Event. Wird er aber während keine Verbindung zum Server besteht auch noch "Erledigt", wäre das ein nächstes Event.
Wie das Ganze verarbeitet wird ist eigentlich egal. Das müsste ja dann das Backend machen. Ob du da alle Queue Aufträge mittels XML oder nur einzlene senden kannst, bestimmt das Backend und nicht du im Client. Die Verarbeitung passiert ja dann auch im Backend und wie das da gemacht wird, muss dich nicht intressieren. Du musst ihm nur die Daten so anliefern wie er sie erwartet.

In deinem Fall wäre es aber schon einfacher, wenn das Backend nur einzelne Aufträge verarbeitet, da du so pro Webaufruf auch gleich die eindeutige Antwort bekommen kannst, ob die Verarbeitung geklappt hat. Diese Info wirst du vom Webserver als Antwort auf deine Webanfrage zurück bekommen. Aber auch im anderen Fall müsstest du dann halt vom Server eine XML Datei mit allen Infos zur Verarbeitung retour bekommen. Darin würden dann die Auftragsnummer und das Resultat der Verarbietung drin stehen. Diese würdest du dann auswerten und deine lokale DB entsprechend aktualisieren.

Mal noch eine andere Frage die mir nicht ganz klar ist: Wie bekommst du die Aufträge vom Backend? Hast du da eine DB-Verbindung zum Backend (per TCP) und wenn ja, wieso muss das dann per Umweg über HTTP passieren?

Geändert von Rolf Frei (20. Sep 2019 um 13:06 Uhr)
  Mit Zitat antworten Zitat
Alt 21. Sep 2019, 10:22     Erstellt von kenstober88
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
linxxruxx

Registriert seit: 19. Aug 2019
28 Beiträge
 
#14

AW: HTTPS Post an Server in einer Queue senden

  Alt 23. Sep 2019, 08:15
Mal noch eine andere Frage die mir nicht ganz klar ist: Wie bekommst du die Aufträge vom Backend? Hast du da eine DB-Verbindung zum Backend (per TCP) und wenn ja, wieso muss das dann per Umweg über HTTP passieren?
Derzeit besteht noch garkeine Verbindung zum Backend. Habe meine SQL-Lite Datenbank in Delphi selbst befüllt und spiele mit diesen Daten rum.
Aus diesem Grund ist ganz klar, dass das alles noch geklärt werden muss in welchem Format die Daten geliefert werden müssen.
Mir geht es ja eigentlich um die Queue, dass ich absolut nicht weiß, wie ich solch eine schreiben soll.
Welche Daten in welchem Format dann letztendlich geschickt werden, kann ich momentan dann noch ein wenig ignorieren.
Ich hätte einfach nur super gern schon einmal das Gerüst gebaut.
Dh. In der While: Auftrag bleibt so lange in der Queue bis Verbindung zum Server besteht und eine positive Antwort vom Server für den Auftrag zurück kommt.

Wie könnte so eine Queue denn ca aussehen? Also prüfen ob Kontakt zum Server ist und auf die Antwort (SentToServer = True) warten?
Das Backend verarbeitet somit jeden Auftrag einzeln, da jeder Auftrag auch so lange in der Queue sein soll, bis eine positive Antwort zurück kommt, danach erst der nächste. Oder?
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#15

AW: HTTPS Post an Server in einer Queue senden

  Alt 23. Sep 2019, 09:02
Aus dem was du bisher geschrieben hast, würde ich im Moment folgendes erstellen:

Data
- Id (integer, PK)
- Version (datetime)
- DataField (...)

DataQueue
- Id (integer, PK)
- DataId (integer)
- DataVersion (datetime)
- DataField (...)

Bei jeder Änderung in Data wird ein Eintrag in die Tabelle DataQueue angehängt.
Diese DataQueue Tabelle wird dann an das Backend gesendet.
Wurde ein Datensatz aus der DataQueue erfolgreich übertragen, dann wird der aus der DataQueue entfernt.

Das Erstellen und Löschen von Datensätzen am Client ist bei diesem Konzept nicht vorgesehen.
  Mit Zitat antworten Zitat
linxxruxx

Registriert seit: 19. Aug 2019
28 Beiträge
 
#16

AW: HTTPS Post an Server in einer Queue senden

  Alt 23. Sep 2019, 14:44
Okay super vielen Dank !

Ich weiß jetzt, dass das Backend ein XML erwartet.
Die Frage ist jetzt nur noch, wie ich aus jedem Eintrag der Tabelle ein XML-File generieren kann?
Gibt es da schon irgendwelche Funktionen ?

XML Mapper z.B. lässt mich ein XML-File in die Datenbank importieren.
Nun möchte ich ja aus einem Tabelleneintrag ein XML-File erstellen, dazu habe ich leider nicht wirklich etwas hilfreiches gefunden.


Danke für die Mühe und Hilfe!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 15:32 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