Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dostęp do bazy danych GWT bez RPC

Istnieje 2.5 powodów, dla których nie możesz użyć gwt do bezpośredniego dostępu do MySQL.

Powód #1.GWT jest kompilowany do JavaScript. Musisz otworzyć gniazdo do serwera bazy danych. GWT nie pozwala na otwarcie gniazda. W rzeczywistości żadna nierozszerzona przeglądarka (przed pojawieniem się html5) nie jest w stanie otworzyć gniazda. Ale możesz otworzyć gniazdo za pomocą Flash ActionScript lub HTML5 javascript.

Powód #2.OK, załóżmy, że użyłeś gniazd HTML5. Spędziłeś 6 miesięcy pisząc w JavaScript połączenie JDBC. Ale twój websocket nadal musiałby zaadresować serwlet na serwerze, który pomógłby twojemu websocketowi nawiązać trwałe połączenie - a mysql nie jest w stanie wykonać takiego zestawienia.

Powód #3.SLD — ograniczenie SOP:(Polityka drugiego poziomu domeny tego samego pochodzenia)Standardowa przeglądarka ogranicza swoje strony, aby móc żądać i uwzględniać tylko treści z tej samej domeny drugiego poziomu (SLD), co serwer, który podał tę stronę przeglądarce. Domeny najwyższego poziomu (i półtora najwyższego poziomu) to takie jak .com, .org, .net, .me.us lub .co.uk. Tak więc nazwy domen, takie jak google.com, fbi.gov, mit.edu, są domenami drugiego poziomu. Natomiast mail.google.com byłaby domeną trzeciego poziomu. Dlatego GWT działałoby tylko w ramach SLD. Twój serwer sieciowy musi być również dostępny w tym samym SLD, co serwer mysql.

SLD-SOP i wymogiem tunelowania jest zamknięcie luki w zabezpieczeniach, która mogła pozwolić każdemu tom-rick-lub-mary na zalogowanie się do twojego systemu przez przeglądarkę. Tunelowanie jest zawsze wymagane, aby przeglądarka mogła połączyć się z serwerem innym niż serwer http. Tunelowanie ma miejsce, gdy przeglądarka wykorzystuje serwer sieciowy jako yenta (jid.:zajęty/przechodni/dopasowujący), aby dostać się na inny serwer.

Nie masz wyboru, musisz użyć GWT-RPC. Być może nie chcesz używać RPC, możesz użyć RequestBuilder, Script-Include lub RequestFactory. Ale wszystkie są wciąż różnymi sposobami tunelowania. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Jest jeden powód, dla którego możesz połączyć się z serwerem bazy danych za pomocą klienta gwt:Twój serwer bazy danych musi mieć uruchomiony mechanizm połączeń httpd. Oznacza to, że Twoja aplikacja gwt będzie miała dostęp do serwera db przez http. Nie wiem, która relacyjna baza danych ma dostęp http. Najprawdopodobniej musiałbyś wykonać zapytanie thro xml lub json.

Jednak firma, dla której pracowałem, stworzyła własną usługę http, aby umożliwić „bezpośredni” dostęp klienta. „bezpośrednie” jest mylące, ponieważ używaliśmy kocura. To wciąż tunelowanie. Każda firma bazodanowa oferująca „bezpośredni” dostęp http nadal tuneluje. Tunelowanie - nie ma przed nim ucieczki.

Możesz rozszerzyć przeglądarkę o Flash i napisać aplikację Flash zamiast używać GWT. Jeśli bezpośredni dostęp jest dla Ciebie tak ważny, musiałbyś zrezygnować z GWT i tworzyć we Flashu oraz uruchomić silnik httpd dla swojego serwera bazy danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AttributeError:moduł „mysql” nie ma atrybutu „łącznik”

  2. Jak sprawdzić wyciek połączenia z bazą danych w aplikacji Java EE?

  3. Wstawka bazy danych php nie działa zgodnie z planem

  4. Konkatenacja ciągów NHibernate / MySQL

  5. Mysql Count(*) jako suma GDZIE suma?