Zum Inhalt springen

fth

Mitglieder
  • Gesamte Inhalte

    3
  • Benutzer seit

  • Letzter Besuch

  1. Moin. Was ich meine hängt auch mit dem 2. Punkt zusammen. Wenn ich CRUD bereitstellen will auf den einzelnen Datenobjekten (sprich: Datenbanktabellen), dann muss ich dem Anwender eine Möglichkeit geben, ein bestimmtes Auswählen zu können. Stichwort: Vergleichsmerkmal. Beim Objekt vom Typ Person wäre das also entweder: public Person getPerson(long id) { return Container.getPersonById(id); } oder public Person getPerson(String personalId) { return Container.getPersonByPersonalId(personalId); } oder public Person getPerson(String name, String vorname, String personalId) { return Container.getPerson(new Person(name, vorname, personalId)); } wobei public class Container { public Person getPerson(Person p) { for (Person item : personList) { if (item.equals(p)) return item; } return null; } } } D.h. in Container wird equals benutzt. Mit equals definiere ich wann ein Objekt vom Typ Person gleich ist. Dabei habe ich aber eine Alt-Datenbank, auf die ich aufsetzen muss. Also, ich beschreib mal kurz die Systemumgebung: Wir haben zwei Systeme LS (lokales System) und FS (fremdes System). Es gibt jeweils zwei Datenbanken mit unterschiedlicher Logik in LS und FS. Am LS wollen wir die Möglichkeit schaffen, dass das FS über eine Art 3. Logik (das stellt eben die Web Service Schnittstelle dar) mit unserem System Daten austauschen kann. Dabei gibt es Gemeinsamkeiten und Unterschiede. Beispiel: Im FS werden Daten gehalten, die Beschreiben, dass eine PRIVATPERSON in einem SUPERMARKT OBST kauft. Im LS wird beschrieben, dass eine HÄNDLER in einem ELEKTROGESCHÄFT ELEKTROGERÄTE kauft. (Ich lasse jetzt mal Spezialisierungen weg, dass der Händler Rabatt bekommt, oder so was). Also schaffen wir eine Schnittstelle, die von der Logik her beschreibt, dass eine PERSON an einem ORT ETWAS kauft. Einfach Abstraktion... Eigentlich gibts da erstmal ein Abbildungsproblem zwischen diesen 3 Logiken, das zu klären ist. Zurück zur Ausgangsfrage: Wenn ich jetzt in diese Schnittstellenlogik die spezifischen Primärschlüssel (id) als Vergleichsmerkmal einbringe, dann erscheint mir das zu genau. Du würdest so etwas als WS-Operation vorschlagen wollen: public long[] getPersonIds(); Um alle id's der PERSON zurückzubekommen? Irgendwie gefällt mir das nicht so richtig. Ach ich weiß nicht. Muss nochmal drüber nachdenken... Fred
  2. Wobei eine Anpassung der Komplexklasse ja auch wieder eine Änderung bei dem Client, der die Schnittstelle des Web Service importiert hervorruft. Aber klar, so ändert sich die eigentliche Schnittstellenbeschreibung nicht. Stimmt. 1. Der Hintergedanke war eigentlich der, was der Implementierer des Clients machen müsste. Er muss ja dann auch Komplexobjekte vom Typ (hier Person) erzeugen und verwenden. Das ist mit Axis2 recht simpel und funktioniert ganz gut, indem man einfach die importierten Stubs anwendet. Aber klappt das auch so einfach bei anderen Implementierungen für andere Progsprachen? gSOAP++, Java WS und was es noch so gibt, etwa in der .NET Welt. Das durchschaue ich jetzt nicht so sehr, denn ich bin frisch in der WS-Welt und im Moment ein bisschen Java (Axis2) zentriert. 2. Ich fühle mich auch etwas unwohl dabei, CRUD-Funktionen mit einem WS zu implementieren. Ich habe so etwas noch nicht gesehen bisher in Beispielen. Eigentlich werden ja WS immer für holeMirMalDieUndDieInformationen(ParamTyp param) Funktionen geschrieben- also Dienste, die die Logik schön kapseln. Aber eine andere Lösung sehe ich nicht. 3. Die ID's und equals. Wenn ich eine id als Parameter verlange (im Komplexobjekt oder auch als Parameter in der Schnittstelle), dann zwinge ich den Anwender ja dazu eine ID zu erzeugen und die IDs bei sich zu führen. Ich würde diese ID wohl als Primärschlüssel anwenden in der Datenbank. Dann kann darüber gesucht werden. Oder wie sollte readPerson() aussehen? public Person readPerson(long id); public String[] readPerson(String personalID); Es muss doch einen common sense bei diesen Fragen geben, damit man nicht später über Fragen stolpert, die man jetzt durch etwas mehr Denken/Forschen beseitigen kann.
  3. Hallo, mein erster Beitrag, gleich mit einer Frage. Ich möchte einen Web Service schreiben, der zum Einen CRUD-Funktionen auf relevanten Daten unserer Datenbank realisiert und zum anderen bestimmte Operationen der Logik erfüllt. Wie dem auch sei... Ich möchte wissen, ob man bei der Parameterübergabe eher Komplex-Objekte verlangt oder besser die einzelnen Komponenten des Komplex-Objekts. Sprich: Person besteht aus id, name, vorname, personalnr. Ist es besser für eine Schnittstelle: public String createPerson(Person person); oder public String createPerson(long id, String name, String vorname, String personalNr); zu definieren? Gibts da Meinungen? Fred

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...