sql >> Database teknologi >  >> RDS >> Mysql

GWT-database-adgang uden RPC

Der er 2,5 grunde til, at du ikke kan bruge gwt til at få direkte adgang til MySQL.

Årsag #1.GWT er kompileret til Javascript. Du skal åbne en socket til databaseserveren. GWT tillader ikke, at du åbner en stikkontakt. Faktisk er ingen ikke-forstærket browser (før fremkomsten af ​​html5) i stand til at åbne en socket. Men du kan åbne en socket ved hjælp af Flash actionscript eller HTML 5 javascript.

Årsag #2.OK, lad os sige, at du brugte HTML5-sockets. Og du brugte 6 måneder på at skrive en JDBC-forbindelse i Javascript. Men din websocket skal stadig adressere en servlet på serveren, som vil hjælpe din websocket med at etablere en vedvarende forbindelse - og mysql er ikke i stand til at udføre en sådan etablering.

Årsag #3.SLD - SOP-begrænsning:(Second Level Domain Same Origin Policy)Standardbrowser begrænser sine sider til kun at kunne anmode om og inkludere indhold fra det samme andet niveau domæne (SLD) som serveren, der givet denne side til browseren. Topdomæner (og halvandet topniveau) er såsom .com, .org, .net, .me.us eller .co.uk. Så domænenavne såsom google.com, fbi.gov, mit.edu er domæner på andet niveau. Selvom mail.google.com ville være et domæne på tredje niveau. Derfor ville GWT kun fungere inden for rammerne af en SLD. Din webserver skal også være tilgængelig på samme SLD som din mysql-server.

SLD-SOP og tunneling krav er at lukke et sikkerhedshul, der kunne have tilladt enhver tom-rick-or-mary at logge ind på dit system gennem din browser. Tunneling er altid påkrævet, for at en browser kan oprette forbindelse til en anden server end en http-server. Tunneling er, når en browser udnytter webserveren som en yenta (jiddisch for busy-body/go-between/match-maker) for at komme til en anden server.

Du har intet andet valg end at bruge GWT-RPC. Måske ønsker du ikke at bruge RPC, så kan du bruge RequestBuilder eller Script-Include eller RequestFactory. Men de er alle stadig forskellige måder at tunne på. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Der er én grund til, at du kan oprette forbindelse til din databaseserver fra din gwt-klient:Din databaseserver skal køre httpd-forbindelsesmotor. Det vil sige, at din gwt-app ville få adgang til db-serveren via http. Jeg er ikke bekendt med, hvilken relationsdatabase der har en http-adgang tilgængelig. Mest sandsynligt ville du skulle forespørge thro xml eller json.

Men et firma, jeg havde arbejdet for, skabte vores egen http-tjeneste for at tillade "direkte" klientadgang. "direkte" er en forkert betegnelse, fordi vi brugte tomcat. Det er stadig tunnelkørsel. Enhver databasevirksomhed, der tilbyder "direkte" http-adgang, tunnelerer stadig. Tunneling - ingen flugt fra det.

Du kan udvide browseren med Flash og skrive en Flash-applikation i stedet for at bruge GWT. Hvis direkte adgang er så vigtig for dig, bliver du nødt til at opgive GWT og udvikle i Flash og køre en httpd-motor til din databaseserver.



  1. Hvordan TIMESTAMP() virker i MariaDB

  2. Opdater aktivitetsdata fra tjenesten, når den er sat på pause

  3. sails-mysql skemadatatyper

  4. Hvordan fjerner du dubletter fra kommasepareret liste med regexp_replace i Oracle?