Mailinglisten-Archive |
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