phpbar.de logo

Mailinglisten-Archive

[php] Schnittstelle zwischen Servern

[php] Schnittstelle zwischen Servern

Ringo Großer swek at gmx.net
Fre Aug 11 00:06:20 CEST 2006


Hallo,

Peter Webel wrote:
> bau dir einfach ein wsdl file das deine dienste bschreibt.

Ich habe mich heute mal etwas zum Thema "WSDL" belesen.
Nach meinem bisherigen Einblick (ich total neu auf dem
Gebiet Webservices) stehe ich vor der ersten in meinen
Augen wichtigen Entscheidung:
Benötige ich eine request- oder eine socketbasierte Schnitt-
stelle?

Ein paar vergleichende Gedanken hab ich mir bereits gemacht,
das reicht mir aber noch nicht, um eine Entscheidung treffen
zu können.

1. Vorteile requestbasierte Schnittstelle (speziell WSDL):
+ zum Thema Webservices ist im Web fast immer von WSDL die
Rede, also wenns alle anderen nutzen, muss ja etwas dran sein
+ es ist angeblich leicht aufzusetzen

2. Nachteile requestbasierte Schnittstelle:
- Methoden in Klassen lassen sich meiner Meinung nach nicht 1:1
an die Schnittstelle verlängern, da methodenübergreifende
Eigenschaften in Klassen nicht innerhalb der Schnittstelle gehalten
werden können
- Overhead von SOAP, dadurch Performanceverlust

3. Vorteile socketbasierte Schnittstelle:
+ logische Verwendung aller Methoden in Klassen möglich,
weil mehrere aufeinander folgende Methodenaufrufe möglich sind,
solange die Verbindung zum Socket geöffnet ist
+ eigene optimierte Definition einer XML Formatierung

4. Nachteile socketbasierte Schnittstelle:
- das Serverscript muss dauerhaft am laufen gehalten werden, um
auf dem Socket nach eingehenden Verbindungen zu "horchen"
- auch sonst macht das auf mich noch einen eher "gebastelten"
Eindruck und nicht wie etwas Stabiles und dauerhaft Zuverlässiges

Und dann wurden irgendwo noch Schnittstellen auf Basis von RPC
(Remote Procedure Call) erwähnt. Dazu fehlen mir aber noch
Argumente, um dies einordnen zu können.

Kann jemand die obige Aufzählung der Vor- und Nachteile noch
ergänzen bzw weitere Entscheidungskriterien anführen, die ich
bislang nicht beachtet habe?

> mit hilfe von php5 und der soap extension kannst du das ganze
> ziemlich leihct umsetzten.

PHP5 ist momentan eher noch ein Argument gegen die Umsetzung
per WSDL, da es auf meinen Servern noch nicht verfügbar ist.
Auch gegen SOAP gibt es nicht von der Hand zu weisende Gegen-
argumente, nämlich der Overhead bei der Datenübertragung.
http://de.wikipedia.org/wiki/SOAP#Nachteile_von_SOAP

Um nochmal meinen aktuellen Anwendungsfall zu beschreiben:
Auf meinem Server laufen einige Klassen, welche public Methoden
zur Anbindung zur Verfügung stellen.
Auf einem weiteren Server sollen die Daten und Logiken von
meinem Server ebenfalls genutzt werden können. Die reine
Datenübertragung nach einem Request im XML Format ist dabei
nur eine Teilanforderung.
Vielmehr will ich hier zusätzlich die Logik mit betrachten.
Also auch Methoden aus meinen Klassen heraus in den
Webservice "verlängern", die nicht Daten zurückliefern, sondern
nur einen Bool. Hierfür möchte ich die Kommunikationszeiten
zwischen beiden Servern so gering wie möglich halten, um
annähernde Scriptzeiten zu erreichen, wie wenn ich auf dem
selben Server mit einem require oder include der Klasse
arbeiten würde und dann die Methoden direkt verwenden kann.

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);
}
Wie würde man diese Logik (insbesondere der if-case) über
einen Webservice abbilden?


regards, Ringo 


php::bar PHP Wiki   -   Listenarchive