Inspiriert von dem Vortrag von Olaf Monien auf den Delphi-Tagen habe ich mir ein paar Gedanken zum Thema Datenanbindung gemacht. Ein Thema, was ich schon lange vor mir herschiebe aber jetzt mal angehen möchte.
Aktuelle Situation:
Meine (Branchen-)Software hat früher Paradoxtabellen und die
BDE-Verwendet. War nicht wirklich stabil. Grade wenn mehrere Clients auf die Daten zugegriffen haben. Nun verwenden wir ADS. Sind sehr zufrieden damit. Etwas ungünstig gelöst ist die Preis- und Updatepolitik (Soll aber nicht Thema dieses Beitrages sein). Probleme haben wir damit, daß wir immer mehr Kunden haben, die mehrere Filialen an verschiedenen Orten haben. Die Daten sind jeweils im lokalen Netz gespeichert. Ein Zugriff von einer zur anderen Filiale ist nicht möglich.
Zukunft:
Wünschenswert wäre der Zugriff auf einen Datenstamm für alle Filialen. Weiterhin soll es so sein, daß auf die Daten mit Software von verschiedenen Plattformen(Windows, Mac, IPad, Andoid, Webclient) zugegriffen werden soll.
Hier ist das Problem:
Ich kann nicht sagen, welche Plattformen von der Datenbank zukünftig unterstützt wird. Das gilt für die Server-Seite und noch viel wichtiger, auch für die Client-Seite. Dabei will ich das gar nicht auf ADS (welches ich ja verwende) festlegen. Ich könnte ja auch eine andere Datenbank verwenden.
Die Idee:
Software komplett von den Daten trennen und eine (einfache) Schnittstelle definieren, über die zugegriffen wird. Ein Zugriff auf die Daten über REST und JSON finde ich nicht schlecht. Auf dem Server läuft irgendeine Datenbank (ADS,
MySql, Interbase etc.). Hinzu kommt eine (von mir geschriebene) Software welche als REST-Server fungiert. Dieser Restserver kann lokal im Netzwerk laufen oder auch auf einem Server in einem angemieteten Rechenzentrum.
Dieser REST-Server soll mir einen Befehlssatz zur Abfrage der Daten zur Verfügung stellen. Ich möchte NICHT direkt die
SQL-Befehle durchschleusen. Könnte man auch machen, um einen
SQL-Server über eine REST-Schnittstelle zu administrieren, aber je weniger funktionen ich nach aussen zur Verfügung stelle, um so sicherer wird das ganze.
Ich denke, daß die Rest-Schnittstelle einfach in den Client zu integrieren ist. Es werden auf dem Client keine Treiber benötigt. Es ist also egal, ob Mac, Windows Android, Webclient etc. REST kann jeder.
Auf Server-Seite könnte der REST-Server über PHP entwickelt werden. Somit kann der Server auch auf einem (preiswerteren) Linux-System laufen. Wobei natürlich mir die Tatsache entgegen kommt, daß bald Delphi für Linux Compilieren kann (können soll). Also muss noch nicht mal auf PHP zurück gegriffen werden.
Gedankenaustausch:
Bei jeder Idee übersieht man etwas, deshalb würde ich gerne euere Meinung hören.
1) Gibt es so etwas schon in einer anderen Form. Ich muss ja nicht das
Rad zwei mal erfinden.
2) Sicherheit: Ist die Datenverbindung sicher, Wenn man auf REST über HTTPS zugreift?
3) Performance: Wird zuviel Overhead erzeugt? Könnte es zu langsam werden?
4) Woran habe ich nicht gedacht? Was kann mir zum Verhängnis werden?
Bin mal auf euere Antworten gespannt.