phpbar.de logo

Mailinglisten-Archive

[php] Schnittstelle zwischen Servern

[php] Schnittstelle zwischen Servern

Peter Webel zc.job at gmx.net
Fre Aug 11 08:22:24 CEST 2006


morgen ringo,

ich würde eine requestbasierte schnittstelle entwerfen (wsdl soap).
wsdl (web service description language)

in einem webservice werden immer zwei messages zu den funktionen 
definiert:
eine request message und eine response message:

in deinem beispiel:

Am 11 Aug 2006 um 0:06 hat Ringo Großer geschrieben:
> Beispiel einer Benutzerregistrierung über die Applikation auf
> dem fremden Server. Dabei sollen die Methoden der Klasse
> auf meinem Server zur Anwendung kommen und der Account
> schließlich in der Datenbank auf meinem Server abgelegt
> werden. Das würde bislang etwa so aussehen:
> 

> $reg = new Registration;
> if ( !$reg->validate($account) ) {
>     $errors = $reg->getErrors();
>     print_r($errors);
> }
> else {
>     $reg->saveAccount($account);
> }

dazu müsstest du im wsdl file ein funtion definieren zbsp.: 
NewRegistration die erhält als request parameter all die
Account Informationen die du benötigst.

dein Webservice-Server (zbsp: server.php) erhält all diese daten,
du mußt die funktion oder klasse Registration ausprogrammieren und
dem client ein ok (Response-Message) oder error (SOAP Fault ) zurück 
senden.

am besten und liest mal das manuel zur soap-extension genau durch.
darin findest du alle benötigen informationen.

ein webservice beschreibt dir funktionen und datentypen die von
einem client aufgerufen werden können. dabei übernimmt die soap 
extension den datentransfer vom client zum server und zurück als soap-
messages.

der server wird so programmiert das eine klasse (die an den server 
gebunden ist) all die benötigen funktionen beinhaltet die das 
webservice anbietet und naturlich auch noch weitere.

natürlich kann man auch methoden von fremdklassen in der eigentlichen
serverklasse benutzen (fremdklasse::methode();).

bezüglich security:
du kannst wahlweise über client certs gehen oder eine proxy - 
authorisierung ausprogrammieren.

performanz:
das stimmt natürlich das webservices eine menge daten übertragen,
abzuwegen welche und vieviele daten zu übertragen sind (performanz 
test durchführen socket vs. soap), zusätzlich würde ich den 
gesichtpunkt der erweiterbarkeit eines webservcie nicht ausser acht 
lassen: eine neue funktion definiert die der server klasse 
hinzugefügt und fertig.

sockets:

sind natürlich auch eine möglichkeit, nur frage ich mich in wie weit 
du die daten schickst (per POST logisch) wenn du diese in ein xml-
file einbindest kannst du gleich ein webservice schreiben.

hab auch erst vor 1 monat mit einem umfangreichen webservice 
begonnen. (client authentifizierung mittels client cert) 
benutzerverwaltung, logs,....
bin von die einfachheit und erweiterbarkeit von webservices 
begeistert. ich mach das alles mit php5 und das ding läuft 
einwandfrei und schnell. hab auch schon viel mit socket verbindungen
gearbeitet dort ist jedoch der aufwand ein vielfaches.

so long, peter

php::bar PHP Wiki   -   Listenarchive