Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Basiert TRESTClient WIRKLICH auf Indy? (https://www.delphipraxis.net/198379-basiert-trestclient-wirklich-auf-indy.html)

Codehunter 29. Okt 2018 12:03

Basiert TRESTClient WIRKLICH auf Indy?
 
Hallo!

Ich bin seit einiger Zeit über eine Aussage in der Emba-Doku zu den REST-Komponenten verwirrt:
Zitat:

TRESTClient ist so konzipiert, dass alle HTTP-bezogenen Exceptions so lange verborgen werden, wie die Exception durch HTTP-Standardcode dargestellt werden kann. Der Client löst nur "harte" Exceptions aus, wie z. B. fehlende Clientbibliotheken bei einer TLS/SSL-Verbindung, Verbindungsfehler usw. Das Framework arbeitet mit den bekannten Komponenten von Indy (Internet Direct). Unter Sichern von Indy-Netzwerkverbindungen, Voraussetzungen finden Sie Anweisungen zur Installation der Clientbibliotheken für TLS/SSL-Verbindungen.
Wenn ich aber in die entsprechenden Units schaue (REST.Client, REST.HTTPClient) so sehe ich dort nichts von Indy. Irritierend auch, dass man zur Konfiguration bestimmter SSL/TLS-Parameter sich der Winapi direkt bedienen muss(te, vor Tokyo) und eben nicht über Properties wie bei
Delphi-Quellcode:
TIdSSLIOHandlerSocketOpenSSL
. Das wäre dann ja nicht plattformunabhängig, doch compilerabhängige Uses sehe ich auch nirgends. Vielleicht könnte mich ja mal jemand erleuchten.

Grüße
Cody

Daniel 29. Okt 2018 12:13

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Nicht mehr.
Die REST-Komponenten in XE5 bis XE7 basierten auf den INDY-Komponenten, beinhalteten damals aber schon eine Abstraktionsschicht dazwischen, um die Komponenten tauschen zu können. Mittlerweile hängen die Net-Komponenten dazwischen, die dann auf den jeweiligen Plattformen nativ arbeiten.

KodeZwerg 29. Okt 2018 12:16

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Emba überlässt es Dir wie Du eine verschlüßelte Verbindung aufbaust.
Da Indy integeriert ist, bietet es sich dafür an.

Hier ein mini Beispiel (ohne Indy & ohne SSL) *klick mich*

Daniel 29. Okt 2018 12:20

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Nein, deine Antwort ist inhaltlich falsch.
Die REST-Komponenten basierten entweder auf den INDY-Komponenten (früher) oder auf den nativen Komponenten (jetzt). Entweder - oder. Eine Wahl hatte der Entwickler im Zusammenhang mit diesen Komponenten nie.

Codehunter 29. Okt 2018 12:34

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Also ist die Erklärung, dass das schlicht eine noch nicht korrigierte Altlast in der Emba-Doku in der deutschsprachigen Version ist. Jetzt wo ich drauf gestoßen wurde habe ich im englischen Bereich geschaut und siehe da, dort steht was anderes:
Zitat:

TRESTClient is built to hide any HTTP-related exceptions as long as the exception can be represented by a standard HTTP code. The client only throws 'hard' exceptions, connection failures, and so on. The framework operates on the newer TNetHTTPClient, which is based on system HTTP client sockets. This allows it to leverage the OS's ability to automatically resolve and deal with SSL/TLS/HTTPS.

Codehunter 29. Okt 2018 12:44

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Eine weitere Frage in dem Zusammenhang: Ich bin eigentlich ein Freund von den Indy-Komponenten, vor allem auch wegen der Flexibilität. Ist es zum jetzigen Zeitpunkt noch eine gute Idee, anstelle von TRestClient/TRESTRequest auf Indy und TJSONObject zu setzen?

Neutral General 29. Okt 2018 12:56

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Ehrlich gesagt sind wir bei uns von Indy jetzt komplett auf die nativen Komponenten umgestiegen.
Weniger Abhängigkeiten und ich persönlich finde sie besser und um einiges einfacher als die Indies.
Und für SSL braucht man dann auch nicht mehr die SSL-DLLs. Man übergibt eine url mit https statt http und es klappt.
Kein IOHandler, keine SSL-DLLs, etc.

Codehunter 29. Okt 2018 13:15

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Zitat:

Zitat von Neutral General (Beitrag 1417034)
Und für SSL braucht man dann auch nicht mehr die SSL-DLLs. Man übergibt eine url mit https statt http und es klappt.
Kein IOHandler, keine SSL-DLLs, etc.

Ja denkste, das war genau der Grund warum ich so viel suchen musste. Auf Windows 10 liefs wunderbar mit TRESTClient, auf Windows 7 nicht und keiner wusste warum. Bis ich dann mit dem Wireshark aufdröseln musste was eigentlich schief geht. Unter Win 7 sind per Default weder TLS 1.1 noch TLS 1.2 verfügbar und auch das Aushandeln der Stromchiffren ging vor den Baum. Und das rauszufinden ist bei verschlüsselten Verbindungen mit Wireshark ein einziger Krampf :evil: Ursache war zwar serverseitig, aber man hat ja trotzdem die Arbeit. Und das nur, weil mit der OS-nativen Inet-Kommunikation auch mehr Unwägbarkeiten ins Spiel kommen. Und, was man ja bedenken sollte: Sobald ein Windows aus dem Support fällt, werden dort auch keine neuen Stromchiffren oder TLS-Versionen mehr kommen. Bei den OpenSSL-DLLs dagegen schon (zumindest länger)

Vielleicht ist Indy mit mehr Einarbeitung verbunden, aber Debuggen geht IMHO einfacher. Wobei ich ergänzend sagen muss, dass ich schon ein funktionierendes REST-Framework mit Indy habe. Es ist also keine Frage des Implementierungsaufwandes sondern mehr eine Grundsatzfrage.

Sherlock 29. Okt 2018 13:21

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Ein aus dem Support gefallenes Windows sollte man aus reinem Selbsterhaltungstrieb nicht supporten.

Sherlock

Codehunter 29. Okt 2018 13:29

AW: Basiert TRESTClient WIRKLICH auf Indy?
 
Zitat:

Zitat von Sherlock (Beitrag 1417036)
Ein aus dem Support gefallenes Windows sollte man aus reinem Selbsterhaltungstrieb nicht supporten.

Das kann man nicht pauschalisieren. Jede Branche hat eine ganz eigene Clientel und manchmal sagt der Selbsterhaltungstrieb, auch ältere Windows noch zu unterstützen (supporten tun wir die nicht)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.
Seite 1 von 2  1 2      

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