AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TSocketConnection vs. TIdTCPClient

TSocketConnection vs. TIdTCPClient

Offene Frage von "Zwirbel"
Ein Thema von Zwirbel · begonnen am 5. Apr 2018 · letzter Beitrag vom 6. Apr 2018
Antwort Antwort
Zwirbel

Registriert seit: 17. Aug 2009
57 Beiträge
 
Delphi 10 Seattle Ultimate
 
#1

TSocketConnection vs. TIdTCPClient

  Alt 5. Apr 2018, 13:16
Hallo,

die Aufgabenstellung ist über eine TCP-Adresse und Port eine Abfrage (per XML-codiertem Telegramm) an eine Daten-Schnittstelle zu stellen und dann als Antwort XML-Daten zurück zu erhalten. Die Daten-Schnittstelle (der Server sozusagen) wird also von einer Fremdfirma betrieben. Meine Aufgabe ist nun den Client zu entwickeln der die Daten abfragt.

In einer alten Delphi Applikation haben wir dafür die ICS-Komponenten (konkret TWSocket / http://www.overbyte.eu/frame_index.html) verwendet. Nun soll mit Delphi 10 Seattle eine neue Schnittstelle entwickelt werden und ich würde gerne ohne unnötige dritte Komponenten auskommen, auch wenn sie kostelos sind wie ICS. Durch Recherche bin ich nun auf die Komponenten TSocketConnection und TIdTCPClient gestossen. Welche der beiden sollte man verwenden oder sind beide nicht geeignet? Zusätzlich ist mein Problem, dass ich die Schnittstelle nicht auf meinem Entwicklungs-Rechner ansprechen kann. Die Schnittstelle steht ausschließlich auf einem Server unseres Kunden zur Verfügung. Ich kann also im Prinzip nur durch trial and error überhaupt an die Schnittstelle andocken, mal eben schnell im object inspector von Delphi ein paar properties setzen und bereits konkrete Abfragen generieren ist also nicht drin. Das einzige was ich vom Kunden zur Verfügung gestellt bekommen habe ist eine XSD-Datei mit dem XML-Schema der Datei. Daraus habe ich mir in Delphi mit dem "Experte für XML-Datenanbindung" eine entsprechende PAS mit der XML-Datenbindung erstellen lassen, das sind fast 30.000 Zeilen Code.

Auch nach stundenlanger Suche im Internet habe ich keine Beispiele gefunden die ein mehr oder weniger aussagekräftiges Beispiel für die Komponenten TSocketConnection oder TIdTCPClient zeigen. Wenn ich es richtig sehe, dann macht es Sinn im Zusammenhang mit TSocketConnection auch die Komponenten TXMLTransformClient und TXMLTransformProvider zu verwenden. Nur, wie "verknubbelt" man dann die entsprechenden properties und events dieser drei Komponenten?

Die Deluxe-Lösung wäre natürlich ich könnte durch die zurück gelieferten XML-Daten in einem ClientDataSet durch laufen, um Datensatz für Datensatz abzuarbeiten.

Konkrete Fragen zusammengefasst:

1) Welche der Komponenten TSocketConnection oder TIdTCPClient (kombiniert mit TXMLTransformClient und TXMLTransformProvider) ist für die Aufgabestellung besser geeignet? Gibt es dazu Beispiele?
2) Welche Komponenten benötigt man, um durch die zurück gelieferten Daten in einem ClientDataSet zu laufen? Gibt es dazu Beispiele?

Vielen Dank im Voraus.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.672 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TSocketConnection vs. TIdTCPClient

  Alt 5. Apr 2018, 13:27
TIdTCPClient ist gut geeignet wenn man sich ein eigenes Protokoll oder ein nicht bei Indy standardmäßig enthaltenes realisieren will.

Für XML / Web Services ist allerdings meist HTTP(S) im Einsatz. Es wäre daher zu prüfen ob der Kunde HTTP(S) einsetzt, dann kann man die Indy Komponente TIdHTTP einsetzen.
Damait spart man die Neuimplementierung dieses Protokolls.

p.s. falls es nicht HTTP(S) ist, dann ist der Aufruf mit TIdTCPClient trivial - es gibt darin Methoden um die Daten entweder mit vorangestellter Längenangabe oder mit einem Terminator (z.B. ein Nullbyte) zu senden und zu empfangen.
Michael Justin

Geändert von mjustin ( 5. Apr 2018 um 13:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.250 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TSocketConnection vs. TIdTCPClient

  Alt 5. Apr 2018, 13:29
1) TIdTCPClient ist auch nur eine Drittkomponente, auch wenn sie mitgeliefert wird.
1a) solltest Du die verwenden wollen, kommt etwas/einiges an Umgewöhnung auf Dich zu.
2) TSocketConnection hat laut OH etwas mit DataSnap zu tun und dürfte am Ende auch Indy sein. Dann lieber direkt TIdTCPClient verwenden.
3) Die größte Zeitersparnis dürfte sein, bei den ICS zu bleiben. Daran ist nichts anrüchiges zu finden.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Zwirbel

Registriert seit: 17. Aug 2009
57 Beiträge
 
Delphi 10 Seattle Ultimate
 
#4

AW: TSocketConnection vs. TIdTCPClient

  Alt 6. Apr 2018, 07:59
1) TIdTCPClient ist auch nur eine Drittkomponente, auch wenn sie mitgeliefert wird.
1a) solltest Du die verwenden wollen, kommt etwas/einiges an Umgewöhnung auf Dich zu.
2) TSocketConnection hat laut OH etwas mit DataSnap zu tun und dürfte am Ende auch Indy sein. Dann lieber direkt TIdTCPClient verwenden.
3) Die größte Zeitersparnis dürfte sein, bei den ICS zu bleiben. Daran ist nichts anrüchiges zu finden.
Sherlock
Dann versuche ich es in der Tat doch erst mal mit ICS. Da kann ich auf Code zurück greifen der funktioniert. Danke für die Hinweise.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf