Mysql
 sql >> Datenbank >  >> RDS >> Mysql

GWT-Datenbankzugriff ohne RPC

Es gibt 2,5 Gründe, warum Sie gwt nicht verwenden können, um direkt auf MySQL zuzugreifen.

Grund #1.GWT ist in Javascript kompiliert. Sie müssen einen Socket zum Datenbankserver öffnen. GWT erlaubt Ihnen nicht, einen Socket zu öffnen. Tatsächlich ist kein nicht erweiterter Browser (vor dem Aufkommen von HTML5) in der Lage, einen Socket zu öffnen. Sie können einen Socket jedoch mit Flash-Actionscript oder HTML 5-Javascript öffnen.

Grund #2.OK, nehmen wir an, Sie haben HTML5-Sockets verwendet. Und Sie haben 6 Monate damit verbracht, in Javascript eine JDBC-Konnektivität zu schreiben. Aber Ihr Websocket müsste immer noch ein Servlet auf dem Server adressieren, das Ihrem Websocket helfen würde, eine dauerhafte Verbindung aufzubauen – und mysql ist nicht in der Lage, eine solche Einrichtung durchzuführen.

Grund Nr. 3. SLD – SOP-Einschränkung:(Second Level Domain Same Origin Policy) Der Standardbrowser beschränkt seine Seiten so, dass er nur Inhalte aus derselben Second-Level-Domain (SLD) wie der Server anfordern und aufnehmen kann stellte diese Seite dem Browser zur Verfügung. Top-Level-Domains (und anderthalb Top-Level-Domains) sind beispielsweise .com, .org, .net, .me.us oder .co.uk. Domainnamen wie google.com, fbi.gov, mit.edu sind also Second-Level-Domains. Während mail.google.com eine Third-Level-Domain wäre. Daher würde GWT nur innerhalb der Grenzen eines SLD funktionieren. Ihr Webserver muss auch über dieselbe SLD wie Ihr MySQL-Server erreichbar sein.

SLD-SOP und Tunneling-Anforderung besteht darin, eine Sicherheitslücke zu schließen, die es jedem Tom-Rick-or-Mary hätte ermöglichen können, sich über Ihren Browser in Ihr System einzuloggen. Tunneling ist immer erforderlich, damit ein Browser eine Verbindung zu einem anderen Server als einem HTTP-Server herstellen kann. Tunneling ist, wenn ein Browser den Webserver als Yenta (jiddisch für Busy-body/go-between/match-maker) ausnutzt, um zu einem anderen Server zu gelangen.

Sie haben keine andere Wahl, als GWT-RPC zu verwenden. Vielleicht möchten Sie RPC nicht verwenden, dann könnten Sie RequestBuilder oder Script-Include oder RequestFactory verwenden. Aber sie alle sind immer noch verschiedene Mittel des Tunnelbaus. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Es gibt einen Grund, warum Sie sich von Ihrem gwt-Client aus mit Ihrem Datenbankserver verbinden können:Ihr Datenbankserver muss die httpd-Verbindungs-Engine ausführen. Das heißt, Ihre gwt-App würde über http auf den DB-Server zugreifen. Mir ist nicht bekannt, welche relationale Datenbank einen HTTP-Zugang zur Verfügung hat. Höchstwahrscheinlich müssten Sie über xml oder json abfragen.

Eine Firma, für die ich gearbeitet hatte, erstellte jedoch unseren eigenen http-Dienst, um den "direkten" Clientzugriff zu ermöglichen. "direkt" ist eine falsche Bezeichnung, weil wir Tomcat verwendet haben. Es wird immer noch getunnelt. Jede Datenbankfirma, die "direkten" HTTP-Zugriff anbietet, tunnelt immer noch. Tunnelbau - kein Entrinnen.

Sie könnten den Browser mit Flash erweitern und eine Flash-Anwendung schreiben, anstatt GWT zu verwenden. Wenn der direkte Zugriff für Sie so wichtig ist, müssten Sie GWT aufgeben und in Flash entwickeln und eine httpd-Engine für Ihren Datenbankserver ausführen.