Mitleser: POST an OData Service mit PHP Klasse

Beitrag lesen

Auch ich nix OData kennen...

Menschen lesen Sequenzen anders als Maschinen.
Menschenlesbar
Maschinenlesbar

Für den 2. Link habe ich lediglich den Content-Type: text/plain gesetzt, damit der Browser die Binary zeigen kann. Der 1. Link zeigt dieselbe Binary als Dump.

Du vergisst zu erwähnen, dass "Dein Binary" im zweiten Link nicht nur einen anderen Content-Type hat, sondern auch durch etwas magisches auf Deiner Seite gelaufen ist und danach durch Data::Dumper gejagt wurde.

Ein BOT schnappt sich die Binary in Bruchteilen von Sekunden und kann unmittelbar mit dem Empfang der ersten Bytes mit der Verarbeitung beginnen (z.B. HEAD-Requests auf jeden URL feuern).

Bei wirklich großen Datenmengen kann eine sequentielle Verarbeitung sinnvoll sein, ja. Das bedeutet noch lange nicht, dass das innerhalb des Austauschsformats passieren muss.

Einen Dump (ähnlich JSON) muss eine Maschine komplett in den Hautpspeicher laden, damit er geparst werden kann (gilt auch für XML).

Skizzier mal bitte Dein Szenario an einem konkreten Beispiel(ohne Bilder/Audio, siehe unten), Dein Dump umfasst aktuell ~ 6 Kilobyte. Bei 600 Kilobyte könnte man ansatzweise über einen Vorteil nachdenken.

Ich denke, dass eine Standardisierung in diese Richtung gehen sollte, nicht zeichenorientiert sondern byteorientiert und vom Übertragungsweg vollständig entkoppelt. Schließlich wollen wir auch Bilder, Video, Audio und nicht nur Texte.

Ich denke, dass man genau das nicht will. Wenn ich Deine Schnittstelle anzapfe und diese enthält in Ihrer Antwort Audio/Video, dann ist das doof. Bei jedem Aufruf wird massiver Overhead übertragen, denn ich gar nicht möchte / brauche. Wenn Du mir stattdessen einen Link und eine Prüfsümme für tatsächliche Binärdaten übertragen würdest, könnte ich auf meiner Seite überprüfen, ob ich diese überhaupt neu laden muss.

[...] Beim Publizieren einer Seite mit eingebauten Bildern, werden letztere gleich mit übertragen. Mit XML oder JSON ist sowas nicht zu machen.

Klar geht das: Base64. Man kann frei entscheiden, ob man den Overhead möchte oder lieber eine Lösung wie oben skizziert verfolgt.