AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge REST Basics ... sind die Demos der Weisheit letzter Schluss?
Thema durchsuchen
Ansicht
Themen-Optionen

REST Basics ... sind die Demos der Weisheit letzter Schluss?

Ein Thema von Nimral · begonnen am 22. Okt 2014 · letzter Beitrag vom 23. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#1

REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 22. Okt 2014, 19:31
Hi allseits,

ich habe ein wenig mit den REST Demos von Marco Cantu und Mat deLong in Delphi RAD Studio XE5 gespielt. Was mir daran nicht gefällt: im Prinzip wird die ganze Arbeit (login, was danach kommt) von einer einzigen Webseite abgewickelt. Je nachdem was die JSON Calls zum Server ergeben, werden verschiedene div's an- und aus geknipst.

Ich finde den Lösungsansatz aus mehreren Gründen unpraktisch:

- die Webseite verrät für meinen Geschmack viel zu viel an User, die noch nicht einmal angemeldet sind
- die vor- und zurück Buttons der Browser werden bedeutungslos
- je komplexer die Appliation wird, umso unübersichtlicher wird die html Seite

Ich bin jetzt unsicher, ob dieses Verhalten ein Teil des REST Konzepts ist (das Lesen der Dissertation von Roy Fielding fand ich eher verwirrend als erhellend), oder ob die Embarcadero Mannen sich einfach entschieden haben, ihre Demos so aufzubauen.

Wer kann dazu etwas sagen?

Thx

Armin.

Geändert von Nimral (22. Okt 2014 um 19:33 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 22. Okt 2014, 19:53
Wie sich die Kommunikation mit einem REST-Server gestaltet, hängt individuell vom jeweiligen Server ab bzw. den Vorstellungen des jeweiligen Anbieters: Facebook beispielsweise verlangt ein Login über einen Web-View bei nativen Anwendungen. Das ist dort der offizielle Weg, er auch in den Demos gezeigt wird.
Andere Server verlangen vielleicht nur eine einfache Authentifizierung und oftmals gibt es auch mehrere Wege zum Ziel.

Die REST-Demos, die XE5 und folgenden Versionen beiliegen, dienen auch eher zur Demonstration der REST-Komponenten als einen vollständigen Überblick über REST zu geben.

Mit der Dissertation - ich habe sie gelesen - hast Du aber eigentlich ein gutes Dokment and er Hand, welches die Ideen hinter REST erläutert. Wenn Du konkrete Fragen hast, können wir diese hier gern erörtern.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 22. Okt 2014, 20:02
Alternativen giebt es auch im OpenSource-Bereich, welche DataSnap und dem ganzen Gedöhns in jeder Hinsicht das Wasser reichen und in Sachen Performance WEIT WEIT schneller sind:

http://synopse.info/fossil/wiki/Synopse+OpenSource

Das Projekt selbst hat auch schon die Aufmerksamkeit von Marco Cantu persönlich erreicht, da mORMot mit fast der Hälfte das Speichers und unglaublicher Performance brilliert...
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 06:18
Ich befasse mich auch grade mit den REST-Komponenten aus Delphi. Allerdings nur als Konsument von REST-Schnittstellen.
Bisher ist mir nichts aufgefallen, was mich an den Komponenten stören würde. Sie machen was sie sollen. Wenn richtig gemacht, landen die Daten direkt im ClientDataSet. Und andersrum, auch POST-Anfragen laufen hier bisher problemlos.

Das einzige, was mich wirklich stört, ist die Dokumentation (da nicht vorhanden). Da ist Nachholbedarf vorhanden.
Jens
  Mit Zitat antworten Zitat
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#5

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 07:40
Hi Daniel,

Die REST-Demos, die XE5 und folgenden Versionen beiliegen, dienen auch eher zur Demonstration der REST-Komponenten als einen vollständigen Überblick über REST zu geben.

Mit der Dissertation - ich habe sie gelesen - hast Du aber eigentlich ein gutes Dokment and er Hand, welches die Ideen hinter REST erläutert. Wenn Du konkrete Fragen hast, können wir diese hier gern erörtern.
danke für das Angebot, das nehme ich gerne an. Die Dis erläutert also die Ideen, die Demos zeigen eine Implementierungsmöglichkeit, aber die Mitte zwischen den beiden ist hohl: die Dis schlägt keine konkreten Implementierungsen vor, die Demos zeigen außer bei der Bezeichnung REST an keiner Stelle, inwiefern sich ihre Wege mit der Dissertation vertragen und inwiefern man einfach eine JSON gestützte Applikation geschrieben hat, die man dann unter dem Buzzword "REST" in die Welt setzt.

Beginnen wir mal mit der meiner Meinung nach ärgsten Grauzone: REST verlangt statelessness (5.1.3). Die Delphi Implementierung des TDSSessionManager Singleton macht genau das nicht.

Gruss Armin.

Geändert von Nimral (23. Okt 2014 um 07:57 Uhr)
  Mit Zitat antworten Zitat
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#6

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 07:53
Hi ...

Ich befasse mich auch grade mit den REST-Komponenten aus Delphi. Allerdings nur als Konsument von REST-Schnittstellen.
Bisher ist mir nichts aufgefallen, was mich an den Komponenten stören würde. Sie machen was sie sollen. Wenn richtig gemacht, landen die Daten direkt im ClientDataSet. Und andersrum, auch POST-Anfragen laufen hier bisher problemlos.

Das einzige, was mich wirklich stört, ist die Dokumentation (da nicht vorhanden). Da ist Nachholbedarf vorhanden.
Ich bin dan nicht ganz so glimpflich davongekommen. Meine Applikation lief anfangs, als sie noch sehr simpel aufgebaut war, ganz nett. Erste Brüche bekam der Glanz, als ich versucht habe, die Kommunikationsvorgänge unter der Haube zu ergründen. Das Implementieren der diversen OnEvent und OnTrace Methoden brachte praktisch keine Resultate, sie scheinen fast alle nicht implementiert zu sein. Oder man müsste das noch irgendwie aktivieren - und dan kommen wir zur völlig fehlenden Dokumentation. Ich konnte es nicht glauben. Ein bisschen was findet sich dann im Indy Projekt, aber das ist nicht viel, und noch ein bisschen was in der regulären XE Hilfe, die ich meinem XE5 aber erst aufzwingen musste, die reguläre Installation hat das irgendwie vergammelt.

Ein Konzept, von dem man überzeugt ist, und das man an die Welt verkaufen will, sieht anders aus, und die Stunden rinnen nur so dahin, ohne dass ich entscheidend weiterkomme bei meinem Hauptproblem: das Framework verliert immer wieder ohne ersichtlichen Grund seine Session - weit vor dem Timeout. Die nächste User-Aktivität baut wieder eine neue (mit Datenverlust auf der Serverseite), oder, was ich noch seltsamer finde, es wird für den selben Client und Browser eine zweite und sogar dritte Session eröffnet. Dabei dürfte man nach der reinen Lehre von REST ja gar keine Sessions brauchen - wobei das Konzept mit keiner Zeile darauf eingeht wie man ohne eine Session zu verwalten eine vernünftige Netzwerkapplikation schreiben kann, und die REST Demos ganz offenbar dieses Muss-Constraint auch einfach unter den Tisch fallen lassen.

Gruss Armin.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 08:39
Ja das mit dem REST und einem ClientDataSet ist schon eine zauberhafte Sache.

Ich bekomme als Response 215.700 Bytes geliefert und das geht dann über den RestResponseDataSetAdapter in das ClientDataSet.
Beim Schließen der Anwendung kommt nach einer langen Verschnaufpause (und Auslastung eines Kerns):
Code:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:

1 - 12 bytes: TMoveArrayManager<System.JSON.TJSONValue> x 2, TMoveArrayManager<System.JSON.TJSONPair> x 6014
13 - 20 bytes: TJSONArray x 2, TJSONNumber x 6014, TJSONPair x 12028, TJSONObject x 6014, TJSONString x 18042, TStringBuilder x 24056
29 - 36 bytes: TList<System.JSON.TJSONValue> x 2, TList<System.JSON.TJSONPair> x 6014
37 - 44 bytes: Unknown x 18042
53 - 60 bytes: Unknown x 6014
117 - 124 bytes: Unknown x 6014

The sizes of unexpected leaked medium and large blocks are: 16428, 16428

---------------------------
OK  
---------------------------

Ohne den RestResponseDataSetAdapter gibt es diese Leaks nicht, somit ist die direkte Anbindung an ein DataSet nur euf den ARC Plattformen zu gebrauchen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#8

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 08:48
Ja das mit dem REST und einem ClientDataSet ist schon eine zauberhafte Sache.

...

Hi Sir,

ohne dass ich jetzt Deine persönliche Meinungsfreiheit einschränken will ... das hat mit meiner Frage nichts zu tun. Ich interessiere michfür - und habe Probleme mit - der grundlegenden Kommunikation und dem Session-Management, das es laut REST gar nicht geben darf. Nicht dass ich nicht auch mit Datenbanken arbeite, aber dieser Teil des Codes macht mir bisher keine Kopfschmerzen.

Nicht dass ich euren Input nicht schätze - vielleicht wäre er ein anderes Mal nützlich für mich - aber bitte bleibt in meinem Thread on Topic, oder macht einen eigenen.

Gruss Armin.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#9

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 11:01
Naja.. das Thema ist halt ein Zweischneidiges Schwert.

Das REST (als Schnittstelle) Stateless ist heisst eigentlich auch, das ein Server, der über eine Stateless-Schnittstelle angesprochen wird, sich keine Informationen von woanders als vom Client holen darf, die gerade relevant sind.

Üblicherweise läuft Authentication nach dem Lehrbuch so ab:
Ein bestimmter REST-Service bekommt credentials (username, passwort) und erzeugt als Antwort ein Access-Token. In diesem Token sind alle informationen zum User und seinen Rechten verschlüsselt.
Andere Services, die eine Authorisierung benötigen, erwarten als einen Parameter ein solches Token.
Jeder dieser Service-Calls überprüft dann, ob der Token (noch) valide ist, und liest die anderen benötigten Informationen aus.
Es braucht hierbei keine Session, da der Client alle Informationen (verschlüsselt und damit nicht manipulierbar) verwaltet.


Das wird aber genau zu dem Zeitpunkt unpraktikabel, wenn sich z.B. Berechtigungen im laufenden System ändern können, und eine solche Berechtigungsänderung vor dem Ablauf des Tokens auch berücksichtigt werden muss.

In diesem Falle würde man in der Praxis schon eine Auswertung der Rechte auf dem Server implementieren (anhand der UserId im Token), und hätte hiermit schon zumindest offiziell keine REST-Schnittstelle mehr. Dann ist aber auch der Schritt nicht weit, an einem Token im Hintergrund auch noch andere Session-Informationen fest zu machen, die der Service nutzen kann.

Will heissen, die Theorie von REST ist da sehr klar und eindeutig, in der Praxis wirst Du jedoch kaum echtes REST nach dem Lehrbuch finden.
Irgend einen Server state wird es doch häufiger geben, insbesondere in Zusammenhang mit Authorization. Der Trick ist dann dabei eigentlich nur, da so gut abzukaspeln, das man das dem Service von aussen nicht mehr ansieht, und es für die Nutzung des Services auch nicht wirklich relevant ist.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Nimral

Registriert seit: 21. Sep 2005
18 Beiträge
 
#10

AW: REST Basics ... sind die Demos der Weisheit letzter Schluss?

  Alt 23. Okt 2014, 11:10
Naja.. das Thema ist halt ein Zweischneidiges Schwert.

...

Will heissen, die Theorie von REST ist da sehr klar und eindeutig, in der Praxis wirst Du jedoch kaum echtes REST nach dem Lehrbuch finden.
Irgend einen Server state wird es doch häufiger geben, insbesondere in Zusammenhang mit Authorization. Der Trick ist dann dabei eigentlich nur, da so gut abzukaspeln, das man das dem Service von aussen nicht mehr ansieht, und es für die Nutzung des Services auch nicht wirklich relevant ist.
Hi Phoenix,

meine Überlegungen gingen in die Richtung, ob das Design der REST Demos - alles in einer html Seite halten und mit der Sichtbarkeit von Abschnitten (div) arbeiten, was mich aus einigen Gründen (s.o.) stört, nicht genau da seine Ursache hat.

Ich möchte davon wenn möglich weg, aber die Frage ist, wenn ich beginne so gegen das REST Framework von Cantu, DeLong usw. zu arbeiten, ob das Framework mir dann überhaupt noch mehr nützt als schadet. Erfahrungssache: beginne gegen Dein Tool zu arbeiten, und Du hast einen mächtigen Feind

Im Kern scheint mir sowieso, dass das ganze REST Framework in Delphi in erster Linie mehr eine Luftnummer bzw. der Versuch, auf einem Buzzword Trittbrett zu fahren, ist. Was ich nützlich finde, ist der JSON Kommunikationskern, der bringt mich vorwärts. Der Rest ist mir eher lästig, und noch dazu ausgesprochen undurchsichtig (fehlende Doku waurde ja schon mehrmals erwähnt).

Gruss Armin.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13: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