it-swarm.com.de

Warum sollten Webdienste anstelle des direkten Zugriffs auf eine relationale Datenbank für eine Android App) verwendet werden?

Ich suchte im Internet nach einem effizienten Zugriff auf eine zentrale Datenbank an einem entfernten Standort und traf auf Vorschläge zur Verwendung von Webdiensten anstelle des direkten Zugriffs (z. B. JDBC usw.) auf eine Datenbank. Ich frage mich, warum dies und andere Vorschläge der Fall sind .

19
yesildal

Durch Hinzufügen einer Webdienstschicht haben Sie die Möglichkeit, Ihren Client sowohl hinsichtlich der erforderlichen CPU-Leistung als auch der während der Verarbeitung verwendeten Bandbreite leichter zu machen. Beide Faktoren sind für Endbenutzer äußerst wichtig:

  • Die Verwendung von weniger CPU verlängert die Akkulaufzeit.
  • Durch die Verwendung von weniger Bandbreite werden die monatlichen Zahlungen für Benutzer mit Messplänen reduziert

Durch die Einführung einer Webanwendungsschicht verschieben Sie den Großteil der Verarbeitung von einem tragbaren mobilen Client mit geringem Stromverbrauch, geringer Bandbreite und geringem Arbeitsspeicher auf einen angeschlossenen Server mit hoher Leistung und hoher Bandbreite, der über mehr Speicher verfügt Bedürfnisse - eine Umgebung, in der Verarbeitung und Kommunikation einen Bruchteil der Kosten eines Kunden kosten.

Aber warten Sie, es ist auch etwas für Sie dabei: Durch die Aufteilung des Systems erhalten Sie mehr Kontrolle über Ihre Geschäftsregeln, die Struktur Ihrer Datenbank und die Versionen dessen, was da draußen ist. Sobald Sie einen mobilen Client direkt mit der Datenbank verbinden lassen, ist Ihr Design mit dieser Datenbankstruktur "verheiratet": Fast jede Änderung würde die Abwärtskompatibilität mit einem Client beeinträchtigen, der möglicherweise nicht bereit ist, seine App zu aktualisieren.

Im Gegensatz dazu können Sie durch Hinzufügen eines dazwischen liegenden Webdienstes die Benutzeroberfläche für mobile Clients auf übersichtlichere Weise weiterentwickeln: Sie können beispielsweise die alte Benutzeroberfläche beibehalten, eine neue hinzufügen, die "parallel" dazu funktioniert, und dann vollständig Restrukturieren Sie Ihre Datenbank, ohne einen einzelnen Client zu beschädigen.

Wenn Sie beim Entwerfen Ihres Webdienstes einige ziemlich grundlegende Entwurfsprinzipien befolgen, können Sie auch erhebliche Vorteile erzielen, wenn Sie die ausgereifte serverseitige Infrastruktur wiederverwenden, die eingerichtet wurde: Sie können beispielsweise kostenlos Cache- und Proxy-Dienste erhalten.

Dies öffnet schließlich die Tür für andere Entwickler, die Ihre Anwendung Plattformen aussetzen, die Sie selbst nicht warten konnten, und letztendlich zum Vorteil Ihres Unternehmens spielen.

25
dasblinkenlight

Es wird eine Abstraktionsebene zwischen der App und der Datenbank eingefügt. Dies bietet Ihnen viele Vorteile wie:

  • Beschränken des Zugriffs auf die Datenbank auf nur die Teile, die die App benötigt. Dies vereinfacht den Code der App und schützt Ihre Datenbank.
  • Beeinträchtigt die innere Funktionsweise der Datenbank. Wenn Sie sich später dazu entschließen, Ihr Schema, Ihre Abfragen oder sogar Ihre gesamte Datenbank zu ändern, wird die Verknüpfung zu Ihrer App nicht unterbrochen, solange Sie die mittlere Ebene korrekt pflegen.
  • Sie können damit Funktionen hinzufügen, die außerhalb des Bereichs einer Datenbank liegen. Zwischenspeichern von Daten, die beispielsweise ziemlich konstant sind. Geschäftsregeln sind ein weiterer Teil, der sollte von der DB getrennt sein soll.
13
System Down

Ein weiterer Grund, die DB nicht direkt verfügbar zu machen - Transport. Die meisten relationalen Datenbanken, mit denen man mit JDBC spricht, sind im Allgemeinen nicht für das öffentliche Internet konzipiert. Drahtloses Internet ist ein schrecklich unzuverlässiges Ende des öffentlichen Internets. Die Behandlung von Ausnahmen wäre ein Albtraum, und Sie würden wahrscheinlich die Rückseite der Webdienstschicht in Ihre App schreiben, um zu vermeiden, dass Transaktionen verloren gehen.

Es gibt einige neuere Arten von Datenbanken, die HTTP sprechen und möglicherweise für diese Art von Dingen geeignet sind. Sie bieten auch Möglichkeiten, Anwendungscode in die Datenbank aufzunehmen. Vielleicht möchten Sie auf CouchDb oder RavenDb achten - beide sind Dokument-Datenbank mit Map/Reduce-Funktionen, die über json und http funktionieren, ähnlich wie viele moderne Webdienste.

4
Wyatt Barnett