![]() |
Client/Server Architektur realisieren - Ideen
Hallo,
ich überlege derzeit, ein größeres Programm in eine echte Client-/Server-Architektur einzubauen. Das Programm besteht aus einem Hauptprogramm mit mehreren Modulen/Plugins. Die Datenspeicherung übernimmt eine MySQL-Datenbank. Da das Programm und dessen Plugins hauptsächlich mit Daten aus der DB arbeiten, benötigt jedes Programmteil eine Datenbankverbindung und muss mit dem DB-Server kommunizieren können. Das hat natürlich zum Nachteil, dass pro Benutzer mehrere Datenbankverbindungen (eine pro Programmteil) geöffnet wird. Weiterer Nachteil ist, dass es zu schwer abfangbaren Problemen im Programm kommt (keine Reaktion etc.), wenn die Verbidung zur Datenbank verloren geht. Dies kann durch remote-Zugriff via VPN etc. öfter mal passieren. Daher habe ich mir überlegt, einen Windows-Dienst zu schreiben. Dieser läuft auf dem Windows-Server 24/7. Programme/Plugins können bauen eine TCP-Verbindung zum Dienst auf, senden ihm ein command (zB getTasks), der Dienst verbindet sich zur Datenbank, liest die Daten aus und sendet sie per tcp (hier meine ich Indy-TCP-Server/Client) an den Clientprozess zurück. Wenn keine Internetverbindung besteht, kann man das echt gut abfangen und es wäre immer nur eine Datenbankverbindung (nämlich Dienst <-> Datenbank) geöffnet. Alle Datenbankoperationen (hinzufügen, ändern, löschen) würden dann vom Dienst übernommen werden. Dies ist auch einfacher zu Warten. Die Kommunikation zwischen Client und Dienst würde per Strings/Records stattfinden. Da wir OOP nutzen, würden die Daten eines Objekts in ein Record übergeben und dann zum Dienst übertragen werden, da man ja keine Objekte verschicken kann. Oder, wenn es in Delphi auch sowas gibt, dann ein serialisiertes Objekt (ähnlich zu json_encode in php). Macht man das so? Was haltet ihr davon? Habt ihr Tipps dazu? Danke im Voraus |
AW: Client/Server Architektur realisieren - Ideen
Früher konnte man das noch direkt mit Delphi-Bordmitteln lösen, jetzt sollte das doch auch noch gehen. Stichwort: TRemoteDatamodule
Es gibt auch Drittanbieter, die das noch 1000x besser gelöst haben (RemObjects) Erfinde das Rad nicht neu. |
AW: Client/Server Architektur realisieren - Ideen
Schau doch mal nach wann die erste JSON-Serialisierung in Delphi kam. War es nicht sogar 2009 oder 2010?
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zitat:
Gruß, Olli |
AW: Client/Server Architektur realisieren - Ideen
Danke für die Antworten.
Mutil Tier habe ich zwar schon öfter gelesen, mich aber nie darum gekümmert, was es ist. Die Datenbank läuft i.d.R auf einem Linux-Server (MySQL). Es ist richtig, dass die Verarbeitung dann nacheinander durchgeführt wird. Man könnte ja überlegen, die Anzahl der offenen Verbindungen auf 2 Stk. pro User zu beschränken. Immernoch besser, als wenn jedes Plugin eine offene Verbindung hält. Manchmal sind nämlich gleichzeitig 4 Plugins offen. Das macht bei 10 Usern - die die Anwendung regelmäßig nutzen - 40 Verbindungen. Ich dachte, es wäre besser, dies zu reduzieren und das alles zentral abwickeln zu lassen. Der Dienst soll darüber hinaus noch andere zentrale Aufgaben übernehmen, die nichts mit der Datenbank zu tun haben. Wichtig wäre mir halt auch das Abfangen auftretender Verbindungsprobleme, was über einen Dienst mit Kommunikation zum Client besser gehandlet werden könnte. Denke ich. Ich habe ein wenig über TRemoteDatamodule gelesen. Verstehe das alles noch nicht so ganz. Wüsste aber auch nicht, wo die Vorteile sind. Wenn ich dem Indy-TCP-Server einen Command schicke, weiß er, was damit zu tun ist, läd die Daten aus der Datenbank (dazu nutze ich übrigens UniDAC), und gibt das json zurück via Indy-TCP. Geht es wirklich noch einfacher, oder habe ich einen Denkfehler? Ihr seht - das ist noch neu für mich. |
AW: Client/Server Architektur realisieren - Ideen
Ein kleiner Nachtrag noch, warum ich diese Architektur in Erwägung ziehe. Bin aber dahingehend für alles offen ;)
Der Server könnte so auch alle Clients mit aktivem Modul XY benachrichtigen, wenn sich Änderungen in ihm bzw. dem Datenbestand ergeben haben. So könnten die Clients gleich die neuen Daten laden. |
AW: Client/Server Architektur realisieren - Ideen
Wenn der Datenbank Server schon auf einer Linux-Kiste läuft, dann klatscht dir da mit PHP ein REST drauf und lass das darüber laufen. Dann brauchst du auf den Clients auch keine Datenbank-Treiber mehr, nur noch HTTP-Abfragen ausführen :)
|
AW: Client/Server Architektur realisieren - Ideen
Genau das habe ich mir auch schon überlegt.
Nur leider soll der Dienst ja auch weitere, nicht-datenbankbezogene Aufgaben erledigen. Wie ich eben oben schrieb, soll er ja auch Nachrichten an die Clients schicken, wenn sich ein Datenbestand geändert hat, der gerade via Plugin von einem Client offen ist. Auch soll sich der Dienst über die Benutzerverwaltung kümmern (wer ist mit welcher IP online, wer ist offline), kleiner Chat, Backup und einige weitere Funktionen aus dem Bereich der Textverarbeitung der Clients etc. |
AW: Client/Server Architektur realisieren - Ideen
Hi,
Zitat:
![]() Viele Grüße .... |
AW: Client/Server Architektur realisieren - Ideen
Die Datenbankkommunikation könnten wir aber tatsächlich in eine PHP-Anwendung auslagern, da wir - zumindest Teilfunktionen - auch für andere Plattformen wie (na klar) iOS etc. planen. Da müsste man nur eine Stelle pflegen.
Dennoch bleiben die anderen Aufgaben übrig und die Benachrichtigung über neue Daten würde wieder schwerer zu realisieren sein. Ein Timer-Polling der Clients will ich eigentlich vermeiden. Würde gerne so programmieren, dass man auch locker von außerhalb via VPN arbeiten kann, ohne, dass alles brechend langsam wird. |
AW: Client/Server Architektur realisieren - Ideen
Wenn du eine Zwischenschicht da einziehst, dann kannst du gerade was die Performance angeht sehr schön skalieren, denn wo die Zwischenschicht sich die Daten herholt, weiß der Client nicht und muss er auch nicht entscheiden. Steigt die Anzahl der Abfragen, dann kommen im Hintergrund einfach ein paar mehr Slave-Datenbank-Kisten und die werden dann eben gefragt (Last-Verteilung).
Für die kontinuierliche Benachrichtigung gibt es weitere Möglichkeiten (z.B. MessageQueues), die dann auch von der Zwischenschicht bedient werden. |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zitat:
Abgesehen von den vermeintlichen Nachteilen hat das Prinzip auch (daten-)sicherheitstechnische Vorteile. Wenn ein Client (ein Modul auf einem PC im Netz) abraucht (nicht mehr reagiert) dann hat das auf die übrigen Verbindungen überhaupt keinen negativen Einfluss. Der Server trennt diese einzige Verbindung, ohne dass die anderen Clients davon was mitbekommen. Zitat:
Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zitat:
Zitat:
Sachlichkeit und ein wenig mehr Grundwissen über C/S und N-Tier-Technologien sowie deren Vor- und Nachteile wäre wirklich angebracht. Nur weil dein Gurken :mrgreen: System seit 50 Jahren läuft, heißt das ja nicht, das das nicht besser, schlanker und moderner geht. Wie und wo speicherst Du eigentlich die Verbindungsdaten zum Server? Also Login und Kennwort? Auf jedem Client? Hö. Viel Spaß mit Leuten, die Lust haben, den Zugang zu knacken. Ist popeleinfach, schätze ich. Bei einem N-Tier-System ist das dann schon etwas schwieriger. Das nur mal so am Rande. |
AW: Client/Server Architektur realisieren - Ideen
Jetzt hast du eindrucksvoll beschrieben, dass du ein Oberchecker bist und ich eine rumzottelnde NULL mit popeleinfachem .... Vielen herzlichen Dank für die Aufklärung.
|
AW: Client/Server Architektur realisieren - Ideen
Angenommen, ich würde micht entscheiden, dass wir tatsächlich eine Server-Anwendung in Form eines Windows-Dienstes schreiben, welches Konstrukt sollte ich bevorzugen?
Ich dachte die ganze Zeit an einen Indy-TCP-Server/Client. Dem Server werden commands geschickt (ähnlich wie Parameter-Übergaben bei Webseiten). Diese liest er aus und führt die jeweilige Aktion durch. Gibt es bessere/professionellere Wege als den Indy-TCP-Server? Das System sollte jedoch recht simpel gestaltet werden. Ein riesen Framework ist glaube ich nicht von nöten. Es werden bestimmt nie mehr als 30 Clients gleichzeitig mit dem Server kommunizieren. Wie viel hält der TCP-Server eigentlich aus? Die Umsetzung war ja auch teil meiner Frage. Wie gesagt, habe sowas noch nie umgesetzt, außer micht mit einer Datenbank verbunden. Das zähle ich jetzt aber nicht mit ;) Ich habe mich zwar noch nicht entschieden, aber bis jetzt ist die Dienste-Methode als Zwischenschicht im Rahmen des Möglichen. |
AW: Client/Server Architektur realisieren - Ideen
Ich würde mir nicht zutrauen, in akzeptabler Zeit, das Rad "besser" neu zu erfinden. ;)
|
AW: Client/Server Architektur realisieren - Ideen
Schau dir mal RemObjects an. Die haben doch alles.
Oder die Delphi-eigenen Komponenten, damit geht das doch auch. Oder die -sehr generisch- die Middleware-Suite von FPiette. Nochmal: Mach das nicht selbst, das lohnt nicht (außer, ihr habt sonst nichts zu tun). Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Darin würde ein MySQL Connection Pool dafür sorgen, dass immer frische, knusprige Datenbankconnections vorrätig sind. Die Clients würden dann (ebenfalls Indy basierte) HTTP Verbindungen öffnen, Requests mit Parametern senden und die Daten dann als Anwtorten zum Beipisle JSON codiert erhalten. Gegenüber reinem TCP hat HTTP einige Vorteile. Es können ständig geöffnete Verbindungen verwendet werden (keep-alive, HTTP 1.1) und über long polling kann eine Verbindung auch aktiv Daten vom Server erhalten ('Server-Push'). Dazu würde dann allerdings eine separate Connection benötigt, nicht die in der die normalen blockierenden Daten-Requests stattfinden. p.s. natürlich sind bestehende Frameworks, wenn sie denn genau zu den Anforderungen und Rahmenbedingungen passen, sehr zu empfehlen. Nur bei kleinen bis mittleren Systemen würde ich eine Eigenentwicklung erwägen. Oder wenn man "experimentierfreudig" zu seinen soft skills zählt :) |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
DataSnap soll sehr langsam und fehlerbehaftet sein. Und die Geschichte mit TRemoteDatamodule hört sich gerade etwas kompliziert an. Roter Kasten: Danke für die weiteren Nachrichten. Ich muss mir mal die Vorteile / Unterschiede zwischen einer eigenen Lösung und den vorgeschlagenen Frameworks anschauen. Derzeit denke ich, dass wir nicht viele Funktionen brauchen, außer den Transport von json-"Objekten". Die HTTP-Methode hört sich auch sehr gut an. Das Rad will ich keinesfalls neu erfinden. Dazu fehlt die Zeit. Nur abwägen zwischen dem Kauf neuer Komponenten (was mittlerweile ordentlich Geld kostet), den Funktionen die wir nutzen werden, und Boardmittel benutzen. |
AW: Client/Server Architektur realisieren - Ideen
Ich meinte, Du solltest Dir vorhandene Lösungen ansehen und dann entscheiden, ob es wirklich sinnvoll ist selber Zeit zu investieren.
![]() ![]() ![]() ![]() ![]() |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Ich habe lediglich meine Meinung kund getan. Vielleicht in einer etwas "direkten Formulierung", doch was soll daran falsch sein. Es geht doch - um zur urspünglichen Frage zurück zu kommen Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
* keine Datenbank-Clientinstallation auf den Clients erforderlich => was nicht da ist, kann auch nicht ausfallen oder falsch konfiguriert werden * keine datenbankspezifische Programmierung (Transaktionsbehandlung) im Client => Komplexität nur noch im Middle-Tier, die ohne Roll-out neuer Clients gepflegt werden kann * durch asynchrone Requests (Message Queues) können DB-Aktionen die zum Beispiel während einer Downtime der Datenbank nicht möglich sind, zeitversetzt erfolgen. Ein Middle-Tier System kann auch Caching dazu einsetzen, dass Clients während eines Datenbankausfalls noch eingeschränkt weiter arbeiten können. Hochverfügbarkeit kann man in einem klassischen Client/Server System nur mit höherem Aufwand erreichen. |
AW: Client/Server Architektur realisieren - Ideen
Bei einem Kunden ist es nicht möglich und nicht gewollt, vom Client aus direkt auf die DB-Server zuzugreifen. Eine Zwischenschicht löst das Problem, ohne das die Sicherheitspolitik zur Disposition steht. Oft gemacht (mit Delphi-Bordmitteln).
Zitat:
Zitat:
Wie reagierst Du denn bei deiner Lösung, wenn der Server ausfällt und der Backup-Server nun einspringen muss (andere IP)? Dann rennst Du doch zu allen Clients und änderst die Konfiguration, oder wie löst Du das sonst? Doch nicht etwa über eine im Netz stehende Konfigurationsdatei? :lol: Na ja, wenn du von deiner Lösung überzeugt bist, dann ist das ja ok. "Never change a running system". Aber wenn das System vom TE nicht gut läuft, sind erprobte und etablierte Alternativen ('N-Tier', Proxy) doch wohl besser angebracht, als ein: "Bringt doch nix". Mach doch erst einmal Erfahrungen mit mehrschichtigen Anwendungen. Entweder wirst Du deine Meinung bestätigt sehen, oder nicht: Gewonnen hast Du dann auf jeden Fall. |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Es ist ja nun noch nicht genau zu ersehen, für was für eine Lösung du dich nun entschieden hast, aber du solltest dich vielleicht mit einer Kombilösung anfreunden.
Deine Verwaltung deiner wichtigsten Daten kannst du doch durchaus 'sicher' und unabhängig lösen: Zitat:
Wenn du dann ergänzend für nicht 'so wichtigen' Dienste für deine Kunden/User eine Multithread-Verbindung á la TCP-Client-Server einrichtest, schaffst du dir eine passable Lösung für deine Probleme. Selbst die Datensicherung via Netz/Internet lässt sich dann verwirklichen. Client-seitig solltest du dann vielleicht ein Programm-Update für deine Kunden in Erwägung ziehen, um Einzelverbindungen aus den Plugins für die TCP-Client-Server-Lösung in dein Hauptmodul zu verlagern... Das Rad nicht neu erfunden und doch verwendbar. |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zitat:
Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Mein Ansatz ist zwar etwas anders aber läuft aufs gleiche hinaus. Clientseitig nur mir meiner Schicht reden ohne eine Datenbank Komponente. Somit kann ich in 2 Sekunden meine Software von Datenbank A auf Datenbank B umstellen uvm. Indy ist entgegen von overbyte meine Wahl, da die Overbyte Sourcen nicht Android/iOS kompatible sind. (Nach meinen Wissen, obwohl ich ein Overbyte-Fan bin). Wichtig für mich ist auch ein "Shoot & Forget" ich mache 10000 Posts und meine App arbeitet sofort weiter als währen die Daten schon in der Datenbank angekommen... Die Zwischenschicht kann dann in einem netten WorkerThread die Daten "in Ruhe" weg schreiben und nur ggf. im Fehlerfall mir einen Callback schicken. (Vereinfacht) Daher je einen Teil der Zwischenschicht in jedem Client und den anderen Teil zentral/dezentral. Hier können auch mehrere Server dann Synchronisiert werden. Mavarik PS.: Momentan "bastel" ich noch an einem Konzept für eine SELECT bla JOIN bla Umsetzung. |
AW: Client/Server Architektur realisieren - Ideen
Also ich würde auch eine Zwischenschicht einbauen. Wir haben das bei einem Produkt auch so gemacht, mit der RemObjects SDK und Indy (Den DataAbstract-Überbau brauchst Du nicht)
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Jeder spricht von: - Designpatten's - ![]() - MVVM - uvm. Endlich nicht mehr im Source ein feste Verknüpfung zu "der" Datenbank oder "der" Datenbankkomponente. Mavarik |
AW: Client/Server Architektur realisieren - Ideen
Hallo zurück ;)
Vielen Dank für die weiteren Antworten. Ich habe erst Sonntag entdeckt, dass neue Beiträge geschrieben wurden und seitdem leider keine Zeit mehr gehabt zum Antworten - aber zum Nachdenken! ---- Aber eines Vorweg: Meine Themen stellen oft auf abstrakte Fragen, Grundsätze, Aufbauftechniken etc. ab. In diesem Rahmen ist es durchaus gewollt, dass andere Leute ihre Erfahren und Bedenken teilen, weitere Vor- und Nachteile nennen/entwickeln und so mir und anderen einen erweiterten Blick auf die Themen zu geben. Denn niemand denkt an alle Eventualitäten. Ob das nun sinnvoll ist, kann ja jeder für sich entscheiden. Wenn es nun aber mit dem eigentlichen Thema garnichts mehr zu tun hat, tja, dann ist es wirklich fehl am Platze. Aber ich schätze die DP eben gerade dafür, dass man nicht nur Stumpf die Frage beantwortet, sondern eben wie in einem Gespräch unter Kollegen auf weitere Sachen hingewiesen wird oder ein gänzlich anderer Vorschlag gebracht wird, weil es anders eben besser ist als ursprünglich gedacht. Ich habe das Programmieren damals in der Schule angefagen, heute programmiere ich durchaus erfolgreich. Ich habe keine Ausbildung und kein Studium in der Programmierung. Alles nur durch Eigenstudium und die Hilfe der DP. ---- So. Ich werde definitiv eine Zwischenschicht einbauen. Es hat wirklich viele Vorteile. Sie wird höchstwahrscheinlich in PHP erstellt, also eine REST-API. Passt auch gut, da ich eine solche schon mehrfach umgesetzt habe. Zusätzlich werde ich einen Server und einen Client brauchen. Ich denke, dafür reichen wirklich die Indys. Ich habe mir das nun folgendermaßen gedacht - da würde ich gerne wissen, ihr das die Methode für "okay" empfindet: * Auf dem Windows-Server läuft in einem Windows-Dienst der Indy-TCP-Server. * Der TCP-Client verbindet sich mit dem Server und sendet einen String in der Form: "/db/getObject/[objectname]/[db-id]". * Der Server fragt in der API nach und sendet den json-String zurück. Mir geht es hauptsächlich darum, ob die Kommandos in der o.g. Form eine gute Idee sind, oder ob ich ein anderes System/Format nutzen sollte. Dieser String könnte auch durchaus anders aussehen, z.B. so: "/user/registerOnline/192.168.1.6". Oder man sendet gleich ein Record bzw. json-array. Es ist halt erstmal das Problem da, dass nicht absehbar ist, wie viele Parameter übergeben werden müssen, geschweige denn ganze ObjectLists. Das sind so meine jetzigen Überlegungen. Nehmt gerne Stellung dazu! Danke im Voraus! |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Eine "feste" Verbindung zur Datenbank in einer Anwendung? Das scheint mir genauso sinnvoll wie hart kodierte Dateinamen. Gruß K-H |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zitat:
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
1. Optimierte Routine in Deiner Anwendung. 2. Umsetzen/Parsen in einen String. 3. String wieder als Bytes per TCP senden 4. Bytes wieder in String konvertieren 5. String auseinander nehmen 6. Routine um aus dem String eine Anfrage zu kodieren 7. Umsetzen in JSON 8. Anfrage an PHP (oh grusel) 9. PHP Interpretiert die JSON Anfrage 10. Wieder SQL daraus machen 11. Am Server per TCP anfragen Und dann das ganze wieder zurück? Sehen wir mal von meine Abneigung zu PHP ab... Stringanalysen sind immer langsam und Du hast zu viele Konvertierungen. SQL ist mir schon nicht kompakt genug... Also Übertragungen und Kommandos so knapp wie möglich halten... Besonders wenn Du diese sowieso per TCP Übertragen willst. Absender, Kommando, SeekNr, DatenbankID sind bei mir 7 Byte... Wenn man jetzt noch die MTU und ggf. noch für das P2P Protokoll die Daten berücksichtig, ergeben sind 1452 Bytes für Nutzer Daten. Das ist meine Größe für eine optimale Datenübertragung von mehreren Kommandos... Aber vielleicht optimiere ich an dieser Stelle auf ein bisschen weit... Also vergiss den Absatz. :oops: Mavarik |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Und ob ein Parser 0.1 ms oder 1.5ms zum Analysieren des Kommandos benötigt, ist jetzt auch nicht so entscheidend. Zitat:
Deine Überlegungen sind grundsätzlich nicht falsch, aber hier vermutlich deplaziert, wie Du schon festgestellt hast. Bei einer Messdatenerfassung in Echtzeit würde ich dich allerdings konsultieren ;-) |
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zugegeben... Manchmal ist es egal ob etwas doppelt so lange braucht. I.d.R. wartet die Software sowieso auf die nächste Eingabe des Benutzers. Aber wenn eine Aktion schon eine Sekunde dauert - dann fängt es an zu nerven... Beste Beispiel Du klickst auf einen Button und nix passiert. Nur weil die Routine dahinter keine Ausgabe hat oder den Button nicht sofort Disabled. Also besonders in den Basis-Routinen sollte man immer ein Augenmerk auf die Performance halten. Da gehören die Datenbankzugriffe klar mit rein. Daher drehen sich immer Sand-Uhren. Dummes Beispiel: Wäre doch schön, wenn ein Programm zum Beispiel bei Aktualisierungen von immer wieder aufgerufenen Listen die ersten 50 Einträger immer aktuell im Speicher hat. Wenn der Benutzer die Liste aufruft - Schwupdi... Liste da! Rest wird - im Thread - nachgeladen. - wie gesagt blödes Beispiel - aber ich denke die Idee ist ausbaufähig. Mavarik |
AW: Client/Server Architektur realisieren - Ideen
|
AW: Client/Server Architektur realisieren - Ideen
Zitat:
Zitat:
Richtig ist, das es seit Jahren eine Vollpfostenmentalität gibt, die auf kompletter Unwissenheit und Borniertheit beruht und mit dazu beiträgt, das Bandbreiten und CPUs immer breiter schneller und tiefergelegt werden müssen. Nachdenken bzw. ein Bewusstsein für überflüssigen Schnickschnack ist aber wichtig, finde ich. Aber -mal wieder- Themaabdriftung. |
AW: Client/Server Architektur realisieren - Ideen
Zum Thema:
Wofür soll der Windows-Dienst mit dem TCP-Server benutzt werden? Der ist mMn völlig überflüssig. Man nehmen einen MessageQueue-Server seiner Wahl und fragt dort nach Nachrichten. Achtung, nur in einem separaten Thread, denn wenn nichts in der Queue ist, dann dauert diese Abfrage ein Weilchen. Ist etwas in der Queue, dann bekommt man auch prompt die Antwort, wirft diese dann in der Anwendung in die Runde und wartet auf/holt sich die nächste Nachricht. Der Rest geht mit der REST-API. |
AW: Client/Server Architektur realisieren - Ideen
Moin!
Zitat:
Diese und andere kleine Aufgaben soll der Server bewerkstelligen. Ich denke, es ist nicht verkehrt, einen solchen zu implementieren. Zur Kommunikation bin ich jetzt gedanklich dabei stehengeblieben, ein Record zu versenden. Ist das okay? Das Record soll mindestens den Timestamp, Absender und die Anfrage (json_string) beinhalten. Mir fällt leider nichts anderes als ein json_string ein. Und da sehe ich ein Problem: Manchmal muss es sein, dass 500+ Einträge aus der DB geladen werden. Jeder Eintrag ist ein Objekt - sagen wir mal, ein Adressen-Objekt. Diese Liste nun in einen json-String zu konvertieren dürfte ziemlich aufwendig / unperformant sein, oder? Welche Möglichkeit gibt es noch, Objekte/Objectlists über das Netzwerk zu versenden? Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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-2025 by Thomas Breitkreuz