Web Services + Anwendungsintegration

der jaf

Grünschnabel
hallo,

ich habe da mal ne frage zu web services: das konzept verspricht ja eine (einfache?) anwendungsintegration und interoperabilität.
das wollte ich jetzt beides anhand einer anwendung testen - allerdings hat sich da eine frage ergeben. zunächst einmal was ich vorhabe:

ich möchte einen Web Service in PHP schreiben, den ich als "baustein" in verschiedene Client-Umgebungen integrieren möchte. um gleichzeitig das thema Interoperabilität abzuarbeiten, sollen Web Service und Client unterschiedliche technologien verwenden.
Der Web Service ist wie gesagt eine PHP-Anwendung, die einen Terminkalender realisiert.
Der kalender ist wiederum mit einer mySQL datenbank gekoppelt. wenn ich im kalender einen tag anklicke, so bekomme ich zu diesem tag meine termine zurück (also zunächst nur mal lesender zugriff)

Diesen Kalender möchte ich nun z.B. in einen JSP-Client integrieren...nur wie geht das genau?
in der literatur und im web finde ich überall nur "hello world"-mässige beispiel...da werden einfache funktionen als web service bereitgestellt - das hab ich auch schon alles durchgespielt und funktioniert wunderbar - aber wie ist das, wenn ich jetzt nicht nur eine Funktion getEvent(Date) als PHP web service bereitstellen möchte...sondern den ganzen kalender?

wie geht man da vor?
mir fällt da spontan nur die möglichkeit ein, den php kalender in die JSP seite einzubinden, also als frame - oder include (falls das geht, das man in einer datei php und jsp gleichzeitig verwendet - hab ich noch nie ausprobiert)

oder denk ich viel zu kpmpliziert und kann den gesammten kalender einfach als web service bereitstellen - über ein wsdl anbieten und dann jsp-seitig mit wsdl2java und axis alles automatisch generieren lassen? was würde dabei rauskommen?

fragen über fragen

kann mir jemand helfen :)
 
der jaf hat gesagt.:
oder denk ich viel zu kpmpliziert und kann den gesammten kalender einfach als web service bereitstellen - über ein wsdl anbieten und dann jsp-seitig mit wsdl2java und axis alles automatisch generieren lassen? was würde dabei rauskommen?

Genau ;-) Sinnvoller wäre aber vielleicht eine Anbindung in der Art: aktuelle rMonat, Woche, tag etc. Die Datenstruktur beschreibt das WSDL deines Webservices und kann dann durch Axis entsprechend implementiert werden. Dazu gibts bei Axis auch Samples.
 
ok, ich werd ich mal genauer anschaun...aber mir ist noch was anderes durch den kopf gegangen...

was wäre wenn ich insgesammt 2 web services habe

1. Web Service: eine Funktion, die mir den PHP Kalender zurückgibt
damit kann ich per JSP diese Funktion callen, die mir dann den Kalender aufbaut (das würde ich dann gleich beim laden der jsp seite machen);
andere und wahrscheinlich bessere variante: den php-kalender als SOAP-Attachment rüberschicken und dann in die JSP Seite includen
Ist halt die frage, ob man in eienr datei jsp und php gleichzeitig verwenden kann - hab ich noch nie probiert - schätze aber schon, dass das geht, da php und jsp blöcke innerhalb html ja verschieden gekennzeichnet sind...

2. Web Service: die Funktion holeVeranstaltung(Datum) die dann gecalled wird, wenn ich im kalender ein Datum anklicke

also wenn das so funktioniert, wie ich das hier beschrieben habe - wäre ich voll und ganz zufrieden und es wäre genau das was ich wollte und wie ich mir web services eigentlich vorstelle - einmal eine funktionalität entwickeln (hier: Kalender und holeVeranstaltung Funktion) und dann immer nur noch mit Client aufrufen - fertig
 
Zuletzt bearbeitet:
Also ich fände es sinnvoller, einen eigenen Kalender zu bauen und nur die Termine abzuholen. Damit wärest Du auch in der Lage, andere Terminkalender in Deinen Kalender zu einzubinden.
 
cham hat gesagt.:
Also ich fände es sinnvoller, einen eigenen Kalender zu bauen und nur die Termine abzuholen. Damit wärest Du auch in der Lage, andere Terminkalender in Deinen Kalender zu einzubinden.

ja das würde ich auch machen, wenn ich "nur" den JSP-Client bauen wollte.
Da ich aber evtl. auch noch weitere Clients (.NET, PHP, ...) einsetzen möchte, um eben die Interoperabilität möglichst weitläufig zu testen (im rahmen einer Diplomarbeit :)), möchte ich nicht für jeden Client einen Kalender extra implementieren.
Deswegen wäre es halt praktisch, wenn man möglichst wenig programmieraufwand beim client hat.
Ich werde das jetzt mal so testen, wie ich es mir vorstelle - da ich ja nicht beliebig viel zeit habe...werde ich, falls das nicht so gut oder schnell klappt am ende eh nur den einen JSP-Client einsetzen und dafür dann einen eigenen Kalender benutzen und nur die Termine abholen :)

Aber da Web Services ja nicht nur Interoperabilität, sondern auch Anwendungsintegration versprechen, wäre der Ganze Kalender und nicht nur die Funktion Termine holen in diesem Sinne eher die "Anwendungsintegration" --> ich integriere eben einen ganzen Terminkalender und nicht nur die Funktion, sodass ich den Kalender dann doch wieder selber erst erstellen muß
 
Hallo!

In welcher Granularität willst du denn den Kalendar über Web Services zugänglich machen? Allgemein wird bei Webservices nämlich empfohlen die Operationen auf einen "groben" Level zu halten um Aufwand und Performanceeinbußen zu sparen.
Ich würde beispielsweise bei einer verteilten Kalendar Anwendung nur Methoden wie etwa:

... createAppointment(String title, String cuase, String place, Date time, List participants);
... getAppointmentsFor(String participant, Date date);
... removeAppointment(...)
... moveAppointment(...)

usw.

Gruß Tom
 
Thomas Darimont hat gesagt.:
Hallo!

In welcher Granularität willst du denn den Kalendar über Web Services zugänglich machen? Allgemein wird bei Webservices nämlich empfohlen die Operationen auf einen "groben" Level zu halten um Aufwand und Performanceeinbußen zu sparen.
Ich würde beispielsweise bei einer verteilten Kalendar Anwendung nur Methoden wie etwa:

... createAppointment(String title, String cuase, String place, Date time, List participants);
... getAppointmentsFor(String participant, Date date);
... removeAppointment(...)
... moveAppointment(...)

usw.

Gruß Tom

hallo,
das mit aufwand und performance ist sicherlich auch ein entscheidender und nicht zu vernachläßigender faktor!

von den Methoden die du vorschlägst benötige ich allerdings nur getAppointmentsFor(Date date);

es soll rein ein lesender zugriff sein!
Mein Problem ist aber, dass ich das Datum über den Client "benutzerfreundlich" übergeben will, d.h. auch über einen Kalender bei dem man das Datum nur anklicken braucht.
Die Frage ist, ob ich jetzt einen extra Kalender für den Client bereitstelle, damit der Benutzer dort das Datum auswählt zu dem er die Events sehen möchte...oder ob ich nicht einfach schon den fertigen Kalender vom Server als Web Service anbieten kann (und nicht nur die eine Methode); in diesem Kontext als Anwendungsintegration = integriere den Veranstaltungskalender einfach im Client...
Und da der Client in verschiedenen technologien (JSP, PHP, .NET, ...) erstellt werden soll um die Interoperabilität möglichst breitflächig zu zeigen, wäre das viel praktischer, als für jeden Client einen Kalender zu schreiben, nur damit das Datum komfortabel angeklickt werden kann...

Ein weiterer Vorteil wenn ich den bestehenden PHP-Kalender im Client integrieren könnte, wäre der, dass man bei dem kalender stattfindende Events bereits sieht...wenn an einem Tag ein event ist, dann ist dieser Tag im Kalender farblich hervorgehoben...lauter funktionalitäten, die ich sonst beim Client erneut implementieren müsste...

Die Frage ist also, wie ich das am besten lösen kann, mit möglichst wenig redundanter Funktionalität; mir fält da wie gesagt nur die möglichkeit ein, den Kalender per SOAP-Attachment zum Client zu schicken und dort als iframe einzubinden - klingt aber auch recht "aufwendig" - aber was anderes fällt mir momentan nicht ein
 
Zurück