Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wspólne zasoby dla różnych stron, SOAP?
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Jak w temacie -

potrzebuje wspólnej bazy z pewnymi kodami i chciałbym, żeby była ona dostępna dla kilku serwisów (czasami zupełnie różne serwery).

Zastanawiam się czy nie byłoby ciekawym pomysłem napisać serwer SOAP i pobierać to za pomocą API.
O ile napisać klienta, w oparciu o dokumentacje umiem, bo jest to proste, to już o serwerach w praktyce wiem 0.

Ma ktoś jakiś link do ciekawych przykładów?
Czy to bezpieczne rozwiązanie (autoryzacja bez logowania, jedynie na podstawie jakiegoś ciągu, pinu)?
Czy ogólnie to trudne (głównie ten wsdl mnie przeraża)?

Może ktoś pisał niedawno jakiś serwer, będę wdzięczny za jakiś szkielecik, o który będę się mógł oprzeć.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A zwykła baza danych nie wystarczy? Skonfigurowanie jej tak aby przyjmowała połączenia z zewnątrz.


--------------------
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


No właśnie tak czy siak nie mam pojęcia jak to skonfigurować i czy na ten moment mam do takich konfiguracji prawa.
API tak czy siak kiedyś dosięgnie, a to byłby świetny trening.
W sumie nie chodzi o wspólne zasoby wyłącznie ale wspólne funkcje tj. "sprawdź czy kod x istnieje", "podaj kod", "oznacz jako".
Nie musiałbym dublować każdorazowo tych funkcji.


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wtedy to faktycznie ma sens. SOAP nie byłby głupim rozwiązaniem (jest jeszcze XMLRPC).
Jeżeli mogę polecić to zrezygnuj z NUSOAP i zainteresuj się SoapServer, standardowym dla PHP http://php.net/manual/pl/class.soapserver.php
Niestety tutoriali do niego nie znam ale jak dobrze poszukasz to coś się znajdzie.
Jedynym największym problemem jest wygenerowanie WSDL-a, którego NUSOAP ma "dość" dobrze zrobione natomiast standardowa biblioteka SOAP w ogóle takiej opcji nie ma (i słusznie).


--------------------
Go to the top of the page
+Quote Post
markonix
post
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


W sumie zanim napisałeś to właśnie mniej więcej taką ścieżkę przeszedłem.

Najpierw nuSOAP bo miałem z nim styczność przy pewnej prezentacji.
Potem pomyślałem, że żadne API, z którego dotąd korzystałem nie korzysta z zewnętrznych bibliotek tylko z czystego SOAP.

Tak więc jakiś listing znalazłem i nawet działa.
Działa bez WSDL, czy to coś zmienia? bo jak na razie to widzę tylko plus że nikt nie podejrzy metod, które udostępniam.

Na razie też nie wiem jak zabezpieczyć bazę kodów jakby ktoś przypadkiem poznał adres api i nazwę metody.
Na razie rozwiązałem to "PINem" jako pierwszy argument każdej funkcji wymagającej autoryzacji, trochę infantylne.


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




SOAP nie działa bez wsdl smile.gif
WSDL nadal jest widoczny.
Co do zabezpieczeń to np pin może być trochę dłuższym kluczem MD5 i po problemie smile.gif
Drugą opcją może być akceptowanie połączeń tylko od określonych IP, ale zabezpieczenie z md5 jest wystarczające.


--------------------
Go to the top of the page
+Quote Post
markonix
post
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


  1.  
  2. $soap = new SoapServer(null, array('uri' => ''));
  3. $soap -> addFunction('remoteToUpper');
  4. $soap -> addFunction('remoteToLower');
  5.  
  6. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  7. $soap->handle();
  8. }


To wszystko co mam w serwerze (poza funkcjami).
Działa zmienianie liter na większe, mniejsze.

W kliencie przy wsdl daje null.

Wydaje mi się, że działam na usłudze non-WSDL (mod).


--------------------
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A to bardzo przepraszam smile.gif


--------------------
Go to the top of the page
+Quote Post
markonix
post
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Luzik tylko zastanawiam się po co więc ten wsdl gdy daje rade i bez niego smile.gif


--------------------
Go to the top of the page
+Quote Post
slightyboy
post
Post #10





Grupa: Zarejestrowani
Postów: 52
Pomógł: 12
Dołączył: 12.07.2007

Ostrzeżenie: (0%)
-----


Wydaje mi się, że WSDL to po prostu opis dostępnych usług sieciowych. Przydatny w momencie kiedy nie znamy konkretnego API i chcemy dowiedzieć się jakie argumenty przyjmuje dana funkcja i co zwraca. Jeśli serwer i klient jest pisany przez jedną osobę (API niepubliczne, takie jakie chce stworzyć autor wątku) WSDL wydaje się być opcjonalny (znamy funkcje udostępniane przez serwer, ich strukturę i sposób działania, nie musimy więc udostępniać takich informacji poprzez WSDL). Rozszerzenie SOAP w PHP działa zarówno w trybie WSDL jak i non-WSDL. smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:02