Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Iwa lepsza od Ajax-u
Forum PHP.pl > Forum > XML, AJAX
Stron: 1, 2
060156
Swietne uwagi przedstawiles ...
Oczywiscie IWA ma obustronne SOAP adaptery ..
Mam dla Ciebie propozycje zapisz w Ajax i SOAP
przesylanie zalaczonych ponizej obiektow miedzy
Przegladarka a web serverem innym niz tym z ktorego
zaladowano strone. I prosze umiesc ja tutaj ...

  1. //
  2. // Przegladarka (Przyladowe JavaScript Objekty)
  3. //
  4. function _Button() {
  5.  this._name_ = "_button";
  6.  this.id     = "";
  7.  this.st     = "";
  8.  this.zi     = 16;
  9.  this.va     = "Button";
  10.  this.vl     = 0;
  11.  this.cn     = 1;
  12. }
  13. function _Label() {
  14.  this._name_ = "_label";
  15.  this.id     = "";
  16.  this.st     = "";
  17.  this.zi     = 17;
  18.  this.va     = "Label";
  19. }
  20. function _Url() {
  21.  this._name_ = "_url";
  22.  this.id     = "";
  23.  this.st     = "";
  24.  this.zi     = 17;
  25.  this.va     = "Url";
  26. }
  27. function _Link() {
  28.  this._name_ = "_link";
  29.  this.id     = "";
  30.  this.st     = "";
  31.  this.zi     = 17;
  32.  this.va     = "Link";
  33. }
  34.  
  35. var objects = new Array(new _Button(), new _Label(), new _Url(), new _Link());
  36.  
  37. top.MyService.service("MyLocalService.php?http://jakis_url/MyRemoteService.php","service",
  38.                                   [["sa,"objects",objects],
  39.                                    ["sr",response_function]]);
  40.     function response_function(boday, args, error) {
  41.     }


  1. <?php
  2.  
  3.  
  4. // MyLocalService.php
  5.  
  6.  $request = new Request();
  7.  $request->forward(); // wyslanie reqestu do http://jakis_url/MyRemoteService.php
  8.  $request->response();
  9.  
  10.  
  11. // MyRemoteService.php
  12.  
  13.  $request = new Request();
  14.  
  15.  switch($request->service()) {
  16.  
  17. case "service": 
  18. $objects = $request->arg("objects"); // odczytanie obiektow wyslanych z przegladarki
  19. forearch($objects as $object) { // iteracja przez liste obiektow
  20.  switch(get_class($object)) { // jaka jest klasa obiektu 
  21. case "_button":  
  22.  ....................
  23. }
  24.  } break; 
  25.  
  26. }
  27.  
  28.  $request->response();
  29.  
  30.  
  31. ?>



Prawda jest taka, ze czasami cos teoretycznie wyglada dobrze ale w
praktyce sie nieco komplikuje ..
Czekam z niecierpliwoscia na Twoj przyklad
i Pozdrawiam ..
bigZbig
Proponuje ten temat przeniesc do Hydeparku i nadac mu etykiete najdluzszego bezsensownego dowcipu ostatniej dekady. He he he
060156
Podzielam,
propozycje bowiem nie widze wiecej
sensu tlumaczyc o IWA i widzicie
tylko negatywne strony. A jak prosze
o przyklad porownawczy (zamiescilem dwa posty wyzej)
to nic nie jest prezentowane ....
Oczywiscie wiem, ze trudo sie zgodzic
ze jest cos innego, lepszego niz sie
dotychczas uzywalo ...
seaquest
060156: ktoś wcześniej już powiedział, że IWA to framework, a AJAX frameworkiem nie jest. To ty zaimplementowałeś metodę, która mapuje obiekty JS tak, żeby można je było odczytać w php.

Jeżeli to się napisze, to jaki masz problem przesłać to AJAX'em na serwer, a później dalej poprzez SOAP? Pójdę nawet dalej: AJAX może wywoływać strony poprzez protokół HTTP, więc nie trzeba będzie nawet pośrednika na lokalnym serwerze! A wtedy dane wysyłamy po prostu poprzez POST - ja nie widzę prostszej metody.

W IWA zanim serwer przekieruje wywołanie, odbierze wynik, zwróci go do przeglądarki, to minie znacznie więcej czasu.

Jak dla mnie AJAX(+SOAP) vs IWA -> n:1, gdzie n >> 1 (>> w fizyce: dużo większe niż)
060156
seaquest
Masz racje z tym jednym wyjatkiem
ze JavaScript ma Security Restrictions i
jedna z nich jest Same Origin Policy ..
Cytuje za orginalna dokumentacja:
" Script can only read properties of windows and documents that
were loaded from the same web server".
IWA ma taki mechanizm aby uwzglednic ta wlasnie restrykacje ...
splatch
Korzystając z wbudowanych obiektów do obsługi SOAP (w firefoxie) bądź kontrolek ActiveX pod IE (tutaj zapewne) można korzystać z SOAPu bez problemu. Problemem jest różne działanie tychże kontrolek.

Ciekawie opisane połączenie Ajax+SOAP: http://www-128.ibm.com/developerworks/webs...rary/ws-wsajax/
060156
Przejzalem powyzsze arykuly,
I sie tylko zastanawiam, ile trzeba sie napisac
nakombinowac aby zrealizowac w sumie
bardzo prosta interakcje miedzy przegladarka
a web serverami ..

splatch-a i pozostalych krytykow IWA zachecam
aby przedstawili na tym forum kod ktory pokaze jak
w Ajax i SOAP mozna rozwiazac problem, ktory
opisalem w post z dnia 2006-04-25 i potwierdza tym
samym swoje slowa.
Bo jak narazie to czytam raczej ich puste wypowiedzi
i czasami rozmijajace sie z prawda ..

Pozdrawiam i czekam z niecierpliwoscia na przyklady ..
mike
Twoje przykłady sa nic nie warte.
A wiesz czemu?

Bo pokazałeś tylko ładne wyołania funkcji.

Ale ani grama ich definicji. W moich oczach wszystko to co piszesz tutaj i mówisz to nic nie warte pierdoły, ponieważ nie chcesz pokazać kodu.

Cytat
Pozdrawiam i czekam z niecierpliwoscia na przyklady ..

My też czekamy. Bo to napisałeś do tej pory to jakieś pierdoły.
Owszem schematy i wywołania bardzo ładne, ale pokaż kod człowieku!!!
Jak nam udowodnisz że za plecami nie działa jakaś dziwna machin, która już nie jest taka piękna jak opowiadasz.
060156
Oczywiscie,

Z najmilsza checia zalaczam Service User Level IWA classes ..

  1. // Przgladarka - Wywolanie service
  2.  
  3. function MyService(url, service) {
  4.  
  5.   this._req = new Request(url,  service); // implementuje service request (post),
  6.                                                            // encode, decode JSON
  7.                                                            // uzywa iframe, frame
  8.                                                            // lub moze pewnie uzyc Ajax
  9.  
  10.   this.arg = function(name, value) { this._req.arg(name, value); }
  11.  
  12.   this.body = function(object) { this._req.body(object); }
  13.  
  14.  
  15.   this.submit = function(response) {       // wyslanie requestu do servera
  16.      this._req.response(respone);           // ustawienie response fun na wywolanie
  17.      this._req.submit();
  18.    }
  19.  
  20.   this.log = function(log) { this._req.log(log); }
  21.  
  22. }
  23.  
  24. MyService.service = function(url, service, cmds) {
  25.       var srv = new MyService(url,  service);
  26.            for(var i = 0; i < cmds.length; i++) {
  27.              cmd = cmds[i];
  28.              switch(cmd[0]) {
  29.                case "sl": srv.log(cmd[1]);  break;    // set log
  30.               case "sa": srv.arg(cmd[1], cmd[2]);   // set arguments(name, value);
  31.               case "sb": srv.body(cmd[1]);             // set body(object);
  32.                case "st":  Request.trace(cmd[1]);     // set trace 0 - none , 1 - all,
  33.                                                                      // 2 - request, 3 - response
  34.                         break;
  35.               case "sr": srv.submit(cmd[1]);           // submit(response_function)
  36.                                                       break;
  37.           }
  38.    }
  39. }


  1. <?php
  2.  
  3.  
  4.  // Implementacja IWA Service
  5.  
  6.  class _Request { // request class
  7.  
  8.  function _Request() {
  9.  $this->_service = "service";
  10.  $this->_response = "response";
  11.  $this->_timestamp = 0;
  12.  $this->_id  = 1;
  13.  $this->_session  = "";
  14.  $this->_user  = "";
  15.  $this->_log  = 1;
  16.  $this->_arguments = array(array());
  17.  $this->_body = array();
  18. }
  19.  }
  20.  
  21.  class _Response { // response class
  22.  
  23.  function _Response() {
  24.  $this->_error  = "";
  25.  $this->_service = "";
  26.  $this->_id = 0;
  27.  $this->_uuid  = Request::uuid();
  28.  $this->_timestamp = 0;
  29.  $this->_session  = "";
  30.  $this->_user  = "";
  31.  $this->_arguments = array(array());
  32.  $this->_body = array();
  33.  }
  34. }
  35.  
  36.  
  37.  
  38. class Request {  // Processowanie request service z przegladarki
  39.  
  40. function Request() {
  41. $this->_request_args = array();
  42. $this->_response_args = array();
  43. $this->_response = new _Response();
  44. $this->_request = new _Request();
  45.  
  46. methods ...() // encode, decode JSON
  47.  // odczytywanie service request argumentow
  48.  // ustawianie service response argumentow
  49.  // pobranie nazwy service 
  50.  // przekierownaie requestu do innego web servera
  51.  / konwersja service na i z SOAP
  52.  // wyslanie dopowiedzi do przegladarki
  53. }
  54.  
  55. ?>


Nastepny poziom implementuje user level classes ...
mike
No chyba sobie jaja robisz.

Zamykam.
seaquest
Skorzystam z moich możliwości:

Chciałeś kod w AJAX + SOAP:


Korzystam tutaj z możliwości, jakie daje Prototype. Tu jest AJAX i mapowanie obiektu.
  1. <script type="text/javascript">
  2. function _Link() {
  3. this._name_ = "_link";
  4. this.id     = "";
  5. this.st     = "";
  6. this.zi     = 17;
  7. this.va     = "Link";
  8. }
  9.  
  10. function sendRequest()
  11. {
  12.    var h = $H(new _Link);
  13.  
  14.    var request = new Ajax.Request("WebService.php", { method: "post", parameters: "service=http://server/MyWebService.php&" + h.toQueryString(), onComplete: handleResponse });
  15.    // h.toQueryString() zwraca: _name_=_link&id=&st=&zi=17&va=Link najlepiej jest to opakowac tak, zeby nie bylo bezposrednio w wywolaniu, ale nie o to tu chodzi
  16. }
  17.  
  18. function handleResponse()
  19. {
  20.    // costam
  21. }
  22. </script>


  1. <?php
  2.  
  3. // WebService.php
  4.  
  5. // jakis kod, ktory obrabia $_SERVER['QUERY_STRING'], wyciaga z niego: _name_=_link&id=&st=&zi=17&va=Link i przerabia na klase php typu:
  6. class _Link {
  7. public $_name_ = "_link";
  8. public $id = null;
  9. public $st = null;
  10. public $zi = 17;
  11. public $va = "Link"
  12. }
  13.  
  14. $server = new SoapClient("links.wsdl", array('classmap' => array('link' => "_Link"))); // wywolanie serwisu soap, rownie dobrze moze byc do serwera www
  15. $client = new SoapClient("http://some-server/wsdl/somefile.wsdl",array("location" => $_POST['service'], 'classmap' => array('link' => "_Link"))); // bezposrednie wywolanie serwisu na innym serwerze
  16.  
  17.  
  18. // pelny opis soap masz na: http://pl2.php.net/manual/pl/function.soap-soapclient-construct.php
  19.  
  20. ?>


  1. <?php
  2.  
  3. // MyWebService.php
  4.  
  5. // obsluga wywolania soap, standard - czyli bezproblemowo na pewno
  6.  
  7. ?>


Przyznam szczerze, że nie znam SOAP za dobrze i nie wiem czy podany kod jest do końca poprawny, ale wiem, że będzie to działać.

A ty jak sam piszesz musisz konwertować wywołanie na SOAP i z powrotem. BEZ SENSU.

Uważam, że wystarczy już tego tematu. Ani my Ciebie nie przekonamy ani Ty nas.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.