Mysql
 sql >> база данни >  >> RDS >> Mysql

GWT достъп до база данни без RPC

Има 2,5 причини да не можете да използвате gwt за директен достъп до MySQL.

Причина #1.GWT е компилиран в Javascript. Трябва да отворите сокет към сървъра на базата данни. GWT не ви позволява да отворите сокет. Всъщност нито един неувеличен браузър (преди появата на html5) не може да отвори сокет. Но можете да отворите сокет с помощта на Flash actionscript или HTML 5 javascript.

Причина #2.Добре, да приемем, че сте използвали HTML5 сокети. И сте прекарали 6 месеца в писане на JDBC връзка в Javascript. Но вашият уеб сокет все пак ще трябва да адресира сървлет на сървъра, който ще помогне на вашия уеб сокет да установи постоянна връзка - а mysql не може да извърши такова установяване.

Причина #3.SLD - ограничение на SOP:(Политика за домейн от второ ниво със същия произход)Стандартният браузър ограничава своите страници, за да може да изисква и включва съдържание само от същия домейн от второ ниво (SLD) като сървъра, който предостави тази страница на браузъра. Домейните от най-високо ниво (и най-високо ниво и половина) са като .com, .org, .net, .me.us или .co.uk. И така, имената на домейни като google.com, fbi.gov, mit.edu са домейни от второ ниво. Докато mail.google.com ще бъде домейн от трето ниво. Следователно GWT би работил само в рамките на SLD. Вашият уеб сървър също трябва да бъде достъпен на същия SLD като вашия mysql сървър.

SLD-SOP и изискването за тунелиране е да затворите дупка в сигурността, която би могла да позволи на всеки tom-rick-or-mary да влезе във вашата система през вашия браузър. Тунелирането винаги е необходимо, за да може браузър да се свърже със сървър, различен от http сървър. Тунелирането е, когато браузър експлоатира уеб сървъра като йента (идиш за заето тяло/посредник/сборник), за да стигне до друг сървър.

Нямате друг избор, освен да използвате GWT-RPC. Може би не искате да използвате RPC, тогава можете да използвате RequestBuilder, или Script-Include или RequestFactory. Но всички те все още са разнообразни средства за тунелиране. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Има една причина, поради която можете да се свържете с вашия сървър на база данни от вашия gwt клиент:Вашият сървър на база данни трябва да работи httpd машина за свързване. Тоест, вашето gwt приложение ще има достъп до db сървъра през http. Не съм запознат с коя релационна база данни има достъп до http. Най-вероятно ще трябва да направите заявка чрез xml или json.

Въпреки това, една компания, за която работих, създаде наша собствена http услуга, за да позволи „директен“ клиентски достъп. "директно" е погрешно наименование, защото използвахме tomcat. Все още се тунелира. Всяка компания за бази данни, която предлага "директен" http достъп, все още тунелира. Тунелиране - няма бягство от него.

Можете да разширите браузъра с Flash и да напишете Flash приложение, вместо да използвате GWT. Ако директният достъп е толкова важен за вас, ще трябва да изоставите GWT и да разработите във Flash и да стартирате httpd двигател за вашия сървър на база данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се използват множество/вложени MySQLi изрази?

  2. Mysqldump:създаване на имена на колони за вмъквания при архивиране

  3. Mysql резултати в PHP - масиви или обекти?

  4. Ехо специфични редове от mysql база данни

  5. MySQL UPDATE с SELECT SUM от различна таблица