AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Webservice

Ein Thema von InschenierSB · begonnen am 25. Apr 2018 · letzter Beitrag vom 17. Mai 2018
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#41

AW: Webservice

  Alt 2. Mai 2018, 15:31
Hallo,
Zitat:
und soll jetzt das bestehende System an einen Webserver anbinden.
Hier könnte man dann auch über eine DLL in einer neueren Delphi-Version nachdenken,
die in die Delphi6-Exe eingebunden wird.
Servus hoika,
du hattest letzte Woche in deinem Beitrag über die Einbindung einer DLL von einer neueren Version (Delph2010) in eine alte Delphi6-exe gesprochen. Wie funktioniert so etwas (kurze Beschreibung)?
Der Hintergrund ist folgender:
Mein Webservice funktioniert nur in der Delphi 2010er Version.
Das Projekt, in welches der Webservice eingebunden werden soll, ist allerdings in Delphi6 erstellt. Die Idee war es hoch zu konvertieren, aber da sehe ich schwarz. Es müssten etwa 5 Packages installiert werden. Die kann ich schon gar nicht installieren, welche ich aber in Delphi 6 ohne Problem installieren kann.
Grüße
Sebastian
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#42

AW: Webservice

  Alt 3. Mai 2018, 07:55
Erst mal dieses Tutorial durcharbeiten, dann werden wir konkret:
https://www.delphi-treff.de/tutorial...ctpascal/dlls/
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#43

AW: Webservice

  Alt 3. Mai 2018, 08:01
Hallo,
die Dll wird mit D2010 gebaut und exportiert diverse Funktionen.
In D6 wird eine dieser Funktionen aufgerufen (LoadLibrary/GetProcAdress usw.), in der Dll wird die (Indy?)-Komponente erzeugt,
ruft den Webservice auf, gibt das Ergebnis an D6 zurück und gibt die Komponente wieder frei.

2 virtuelle Maschinen, eine mit D6, eine mit D2010, ev. auf der gleichen Maschine mit dem RemoteDebugger.

Der Dll-Code sollte so gebaut ein, das man ihn in eine Test-Exe einbauen kann für einfaches Debuggen.
Heiko
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#44

AW: Webservice

  Alt 3. Mai 2018, 08:55
Hallo,
Zitat:
und soll jetzt das bestehende System an einen Webserver anbinden.
Hier könnte man dann auch über eine DLL in einer neueren Delphi-Version nachdenken,
die in die Delphi6-Exe eingebunden wird.
Servus hoika,
du hattest letzte Woche in deinem Beitrag über die Einbindung einer DLL von einer neueren Version (Delph2010) in eine alte Delphi6-exe gesprochen. Wie funktioniert so etwas (kurze Beschreibung)?
Der Hintergrund ist folgender:
Mein Webservice funktioniert nur in der Delphi 2010er Version.
Das Projekt, in welches der Webservice eingebunden werden soll, ist allerdings in Delphi6 erstellt. Die Idee war es hoch zu konvertieren, aber da sehe ich schwarz. Es müssten etwa 5 Packages installiert werden. Die kann ich schon gar nicht installieren, welche ich aber in Delphi 6 ohne Problem installieren kann.
Grüße
Sebastian
Ich vermute das bei diesen Ansatz die ganze Unterstützung von Delphi bezüglich Webservices verloren geht. Den wozu lässt man sich einen Client erzeugen aus der WSDL, um natürlich schöneren und wartbaren Quelltext zu schreiben. Wird der Client jetzt in eine DLL gepackt, was hat man dann am Ende davon? Dein Delphi 6 Programm hat keine Kenntnis über die verwendeten Klassen, also müsste man alles erneut nachbauen. An diesen Punkt kann man sich aber ernsthaft Fragen warum man nicht einfach direkt aus Delphi6 den Webservice anspricht?
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#45

AW: Webservice

  Alt 3. Mai 2018, 13:54
Ich vermute das bei diesen Ansatz die ganze Unterstützung von Delphi bezüglich Webservices verloren geht. Den wozu lässt man sich einen Client erzeugen aus der WSDL, um natürlich schöneren und wartbaren Quelltext zu schreiben. Wird der Client jetzt in eine DLL gepackt, was hat man dann am Ende davon? Dein Delphi 6 Programm hat keine Kenntnis über die verwendeten Klassen, also müsste man alles erneut nachbauen. An diesen Punkt kann man sich aber ernsthaft Fragen warum man nicht einfach direkt aus Delphi6 den Webservice anspricht?
Das Problem an der ganzen Sache ist dass das Delphi 6 beim Importieren der WSDL-Datei nicht den gleichen Quell-Code erzeugt als wie wenn ich die selbe WSDL-Datei ins Delphi 2010 importiere, sprich da sieht der Quell-Code komplett anders aus --> ist ca. 30 Seiten länger, etc. Für mich sieht es so aus, als fehlen irgendwelche Komponenten im Delphi 6, deshalb kann es die Unit nicht in der Form erzeugen wie es in Delphi 2010 geschieht.
Fest steht dass der Server im Delphi 2010 mit den entsprechenden Requests antwortet, was er aber im Delphi 6 nicht macht, da gibt er nur irgendwelche lustigen Fehlermeldungen raus.
Der Gedanke war jetzt unter anderem das gesamte Projekt ins Delphi 2010 hoch zu konvertieren, aber da scheitert es schon am ersten Tool-Package. Es gibt da viele eigens erstellte Packages.... Ich denke es braucht da einige Zeit an Erfahrung um das zu bewerkstelligen.
Deswegen die Option mit der DLL...
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#46

AW: Webservice

  Alt 3. Mai 2018, 15:17
Erst mal dieses Tutorial durcharbeiten, dann werden wir konkret:
https://www.delphi-treff.de/tutorial...ctpascal/dlls/

Also das Tutorial habe ich durch und auch mit dem entsprechenden Beispiel, das ist ja garnicht soooo anpruchsvoll. Aber ich glaube "lustig" wird es erst den Webservice und das WSDL-Dokument einzubinden...
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#47

AW: Webservice

  Alt 3. Mai 2018, 15:32
Das Problem an der ganzen Sache ist dass das Delphi 6 beim Importieren der WSDL-Datei nicht den gleichen Quell-Code erzeugt als wie wenn ich die selbe WSDL-Datei ins Delphi 2010 importiere, sprich da sieht der Quell-Code komplett anders aus --> ist ca. 30 Seiten länger, etc. Für mich sieht es so aus, als fehlen irgendwelche Komponenten im Delphi 6, deshalb kann es die Unit nicht in der Form erzeugen wie es in Delphi 2010 geschieht.
Fest steht dass der Server im Delphi 2010 mit den entsprechenden Requests antwortet, was er aber im Delphi 6 nicht macht, da gibt er nur irgendwelche lustigen Fehlermeldungen raus.
Der Gedanke war jetzt unter anderem das gesamte Projekt ins Delphi 2010 hoch zu konvertieren, aber da scheitert es schon am ersten Tool-Package. Es gibt da viele eigens erstellte Packages.... Ich denke es braucht da einige Zeit an Erfahrung um das zu bewerkstelligen.
Deswegen die Option mit der DLL...
Mir ist nicht ganz klar was du mit diesen Ansatz erreichen willst, du hast einen Client mit Delphi 2010 automatisch erzeugt und jetzt möchtest du die meisten bzw. alle Methoden mit einer DDL durchreichen? Um vernünftig auf der anderen Seite (Delphi 6) zu arbeiten müsstest du jetzt alle benötigten Typen nachbauen und beim Aufruf gibt es auch einiges zu beachten (z.B. welche string Kodierung genau). Bei dieser Konstellation frage ich mich warum nicht gleich über http direkt mit den Webservice in Delphi 6 kommunizieren? Soweit ich weiß verwendet Delphi nativ eh die Windows-Api, damit läuft es am Ende mit jeder Delphiversion auf das gleiche hinaus.

Wenn der Webservice recht komplex ist und die Typen stark verschachtelt (würde sich das auch bei der DLL Methode bemerkbar machen), könnte man auch über einen eigenen kleinen Anfrage<>XML Parser nachdenken (natürlich wäre eine Projektmigration zum neuen Delphi die bessere Lösung).
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#48

AW: Webservice

  Alt 3. Mai 2018, 15:42
Das Problem an der ganzen Sache ist dass das Delphi 6 beim Importieren der WSDL-Datei nicht den gleichen Quell-Code erzeugt als wie wenn ich die selbe WSDL-Datei ins Delphi 2010 importiere, sprich da sieht der Quell-Code komplett anders aus --> ist ca. 30 Seiten länger, etc. Für mich sieht es so aus, als fehlen irgendwelche Komponenten im Delphi 6, deshalb kann es die Unit nicht in der Form erzeugen wie es in Delphi 2010 geschieht.
Fest steht dass der Server im Delphi 2010 mit den entsprechenden Requests antwortet, was er aber im Delphi 6 nicht macht, da gibt er nur irgendwelche lustigen Fehlermeldungen raus.
Der Gedanke war jetzt unter anderem das gesamte Projekt ins Delphi 2010 hoch zu konvertieren, aber da scheitert es schon am ersten Tool-Package. Es gibt da viele eigens erstellte Packages.... Ich denke es braucht da einige Zeit an Erfahrung um das zu bewerkstelligen.
Deswegen die Option mit der DLL...
Mir ist nicht ganz klar was du mit diesen Ansatz erreichen willst, du hast einen Client mit Delphi 2010 automatisch erzeugt und jetzt möchtest du die meisten bzw. alle Methoden mit einer DDL durchreichen? Um vernünftig auf der anderen Seite (Delphi 6) zu arbeiten müsstest du jetzt alle benötigten Typen nachbauen und beim Aufruf gibt es auch einiges zu beachten (z.B. welche string Kodierung genau). Bei dieser Konstellation frage ich mich warum nicht gleich über http direkt mit den Webservice in Delphi 6 kommunizieren? Soweit ich weiß verwendet Delphi nativ eh die Windows-Api, damit läuft es am Ende mit jeder Delphiversion auf das gleiche hinaus.

Wenn der Webservice recht komplex ist und die Typen stark verschachtelt (würde sich das auch bei der DLL Methode bemerkbar machen), könnte man auch über einen eigenen kleinen Anfrage<>XML Parser nachdenken (natürlich wäre eine Projektmigration zum neuen Delphi die bessere Lösung).
Ich habe eine Maschine mit einer in Delphi 6 erstellten GUI, die ziemlich komplex und umfangreich ist. Diese Maschine soll jetzt über einen Webservice bestimmten Daten erhalten. D.h. ich muss den Webservice in das vorhandene Delphi 6 Projekt implementieren. Da mir dies aber nicht gelungen ist habe ich es mit Delphi 2010 versucht und war erfolgreich.
Alles was ich vom Kunden habe ist das WSDL-Dokument. XML-Parser usw. kenne ich mich nicht wirklich aus.
Viele Grüße
Sebastian
  Mit Zitat antworten Zitat
Elrond

Registriert seit: 29. Sep 2014
71 Beiträge
 
#49

AW: Webservice

  Alt 3. Mai 2018, 17:32
Ich habe eine Maschine mit einer in Delphi 6 erstellten GUI, die ziemlich komplex und umfangreich ist. Diese Maschine soll jetzt über einen Webservice bestimmten Daten erhalten. D.h. ich muss den Webservice in das vorhandene Delphi 6 Projekt implementieren. Da mir dies aber nicht gelungen ist habe ich es mit Delphi 2010 versucht und war erfolgreich.
Alles was ich vom Kunden habe ist das WSDL-Dokument. XML-Parser usw. kenne ich mich nicht wirklich aus.
Viele Grüße
Sebastian
Mal anders gefragt, weißt du was ein Webservice (insbesondere einer der auf SOAP basiert) ist und wie auch die Kommunikation zu einen Webservice erfolgt? Du musst in Delphi keine WSDL importieren oder irgendwelche Klassen erzeugen um einen Webservice zu nutzen. Delphi erstellt basierend auf der WSDL einfach nur eine Abstraktionsschicht zum Webservice, weil es (wenn es klappt) komfortabler ist, mehr steckt nicht dahinter. Die Methoden und ihre Parameter werden einfach ins XML serialisiert(das siehst man schön bei SoapUI) und via http verschickt. Du könntest sogar einfach mit cURL eine Anfrage an den Webservice schicken, kurz alles was über http kommunizieren kann, kann auch den Webservice nutzen.

Wenn es dir jetzt also nur um paar Methoden geht, dann kannst du wie gesagt es einfach nativ über Delphi 6 verschicken, bzw. dir das Indy Package installieren. Ist dein Webservice jedoch sehr umfangreich und enthält stark verschachtelte Typen, kannst du dich natürlich selber darum kümmern die Anfragen/Antworten automatisch ins XML umzuwandeln oder du kaufst dir die Funktionalität ein (z.B. http://www.clevercomponents.com/products/inetsuite/ die decken auch große Teile des WS-* Stacks ab). Du könntest auch eine eigene DDL verwenden, bedenke jedoch das die mit der Größe/Komplexität des Webservices skaliert.
  Mit Zitat antworten Zitat
InschenierSB

Registriert seit: 25. Apr 2018
Ort: Regensburg
39 Beiträge
 
#50

AW: Webservice

  Alt 4. Mai 2018, 08:05
Ich habe eine Maschine mit einer in Delphi 6 erstellten GUI, die ziemlich komplex und umfangreich ist. Diese Maschine soll jetzt über einen Webservice bestimmten Daten erhalten. D.h. ich muss den Webservice in das vorhandene Delphi 6 Projekt implementieren. Da mir dies aber nicht gelungen ist habe ich es mit Delphi 2010 versucht und war erfolgreich.
Alles was ich vom Kunden habe ist das WSDL-Dokument. XML-Parser usw. kenne ich mich nicht wirklich aus.
Viele Grüße
Sebastian
Mal anders gefragt, weißt du was ein Webservice (insbesondere einer der auf SOAP basiert) ist und wie auch die Kommunikation zu einen Webservice erfolgt? Du musst in Delphi keine WSDL importieren oder irgendwelche Klassen erzeugen um einen Webservice zu nutzen. Delphi erstellt basierend auf der WSDL einfach nur eine Abstraktionsschicht zum Webservice, weil es (wenn es klappt) komfortabler ist, mehr steckt nicht dahinter. Die Methoden und ihre Parameter werden einfach ins XML serialisiert(das siehst man schön bei SoapUI) und via http verschickt. Du könntest sogar einfach mit cURL eine Anfrage an den Webservice schicken, kurz alles was über http kommunizieren kann, kann auch den Webservice nutzen.

Wenn es dir jetzt also nur um paar Methoden geht, dann kannst du wie gesagt es einfach nativ über Delphi 6 verschicken, bzw. dir das Indy Package installieren. Ist dein Webservice jedoch sehr umfangreich und enthält stark verschachtelte Typen, kannst du dich natürlich selber darum kümmern die Anfragen/Antworten automatisch ins XML umzuwandeln oder du kaufst dir die Funktionalität ein (z.B. http://www.clevercomponents.com/products/inetsuite/ die decken auch große Teile des WS-* Stacks ab). Du könntest auch eine eigene DDL verwenden, bedenke jedoch das die mit der Größe/Komplexität des Webservices skaliert.
Guten Morgen,
im Prinzip weiß ich schon was ein Webservice ist, jedoch klar bin ich auf dem ganzen Gebiet was jetzt Delphi betrifft ziemlich unerfahren. Man muss sich erst langsam einarbeiten.
Du meinst ich könnte es z.B. mit einem IdHTTP1 in Delphi 6 realisieren. Weiß zwar auch noch nicht so genau wie ich das aufbauen soll aber da finde ich bestimmt Tutorials.
Was auch Fakt ist das ich den Service über SOAP-UI wunderbar ansprechen kann. Hier sehe ich auch wie der Header aufgebaut ist, ja?!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz