sql >> Database >  >> RDS >> Mysql

GWT-databasetoegang zonder RPC

Er zijn 2,5 redenen waarom u gwt niet kunt gebruiken om rechtstreeks toegang te krijgen tot MySQL.

Reden #1.GWT is gecompileerd in Javascript. U moet een socket openen naar de databaseserver. GWT staat niet toe dat je een socket opent. In feite is geen enkele browser (vóór de komst van html5) in staat om een ​​socket te openen. Maar je kunt een socket openen met Flash actionscript of HTML 5 javascript.

Reden #2.OK, laten we zeggen dat je HTML5-sockets hebt gebruikt. En je hebt 6 maanden in Javascript een JDBC-connectiviteit geschreven. Maar uw websocket zou nog steeds een servlet op de server moeten adresseren die uw websocket zou helpen een blijvende verbinding tot stand te brengen - en mysql kan een dergelijke instelling niet uitvoeren.

Reden #3.SLD - SOP-beperking:(Second Level Domain Same Origin Policy) Standaardbrowser beperkt zijn pagina's om alleen inhoud op te kunnen vragen en op te nemen van binnen hetzelfde second-level domein (SLD) als de server die die pagina aan de browser heeft verstrekt. Topleveldomeinen (en anderhalve topleveldomeinen) zijn zoals .com, .org, .net, .me.us of .co.uk. Domeinnamen zoals google.com, fbi.gov, mit.edu zijn dus domeinen van het tweede niveau. Terwijl mail.google.com een ​​domein op het derde niveau zou zijn. Daarom zou GWT alleen werken binnen de grenzen van een SLD. Uw webserver moet ook toegankelijk zijn op dezelfde SLD als uw mysql-server.

SLD-SOP en tunneling-vereiste is om een ​​beveiligingslek te dichten waardoor Tom-rick-or-mary via uw browser op uw systeem had kunnen inloggen. Tunneling is altijd vereist voor een browser om verbinding te maken met een andere server dan een http-server. Tunneling is wanneer een browser de webserver misbruikt als een yenta (jiddisch voor bezig-lichaam/tussenpersoon/match-maker) om naar een andere server te gaan.

U hebt geen andere keuze dan GWT-RPC te gebruiken. Misschien wilt u geen RPC gebruiken, dan kunt u RequestBuilder, of Script-Include of RequestFactory gebruiken. Maar het zijn allemaal nog steeds verschillende manieren om te tunnelen. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Er is één reden waarom je verbinding kunt maken met je databaseserver vanaf je gwt-client:je databaseserver moet de httpd-verbindingsengine draaien. Dat wil zeggen, uw gwt-app zou toegang krijgen tot de db-server via http. Ik ben niet bekend met welke relationele database een http-toegang beschikbaar heeft. Hoogstwaarschijnlijk zou u een query moeten uitvoeren via xml of json.

Een bedrijf waar ik voor had gewerkt, creëerde echter onze eigen http-service om "directe" clienttoegang mogelijk te maken. "direct" is een verkeerde benaming omdat we Tomcat gebruikten. Het is nog steeds aan het tunnelen. Elk databasebedrijf dat "directe" http-toegang biedt, is nog steeds aan het tunnelen. Tunnelen - er is geen ontkomen aan.

U kunt de browser uitbreiden met Flash en een Flash-toepassing schrijven in plaats van GWT te gebruiken. Als directe toegang zo essentieel voor je is, zou je GWT moeten verlaten en in Flash moeten ontwikkelen en een httpd-engine voor je databaseserver moeten draaien.



  1. Optimistische gelijktijdigheid:IsConcurrencyToken en RowVersion

  2. Waarom verbetert STRAIGHT_JOIN deze zoekopdracht zo drastisch, en wat betekent het als het achter het SELECT-sleutelwoord wordt geschreven?

  3. MySQL-geval/als/dan

  4. mysql begrijpen leg uit