Deutsch
Prüfhalde

aHttpDw: asynchrones Senden und Laden per HTTP

 
aHttpDw: Asynchrones* Senden und Laden per HTTP

*(im Ggs. zum synchonen Laden ohne, dass das XProfan-Programm wartet, bis die Operation beendet ist)

Beim Weiterentwickeln vom Gonzo-Chat [...]  war mir schnell klar, dass trotz Optimierung des prozesssynchonen HTTP-Datenbeziehens (z.B. über einfaches [...]  ), mich störende Auszeiten der UI nicht verhindert werden können.

Ein (im Bezug zum XProfan-Thread welcher die Oberfläche und Interaktionen darstellt) asynchrones Beziehen der Daten musste her. Der XProfaner hat hier im Prinzip folgende Möglichkeiten, da XProfan von Haus aus nicht ermöglicht, über weitere Threads innerhalb des selben Prozesses weitere XProfanablaufstränge abzuarbeiten:

A) Zweiprozess-Variante: Ein Prozess stellt die UI bereit und ein zweiter Prozess die synchone Datenkommunikation. Beide Prozesse kommunizieren asynchron miteinander (z.B. über diese Pipes: [...]  )

B) Einprozess-Mehrthread-Variante: Der XProfanprozess läuft wie gehabt und läd eine DLL (kann auch per Inline-ASM erzeugt werden) und die DLL erzeugt selbständig verwaltend Nebenthreads. DLL muss eine Schnittstelle für den XProfan-Prozess bieten, Daten asynchron zu beziehen und zu senden.

Variante A hat gegenüber Variante B den Nachteil, dass diese Speicher- und Performance-lastiger ist, aber den Vorteil, dass diese deutlich einfacher programmiert werden kann.

Variante B benötigt keinen eigenen/weiteren Prozess sondern nur Threads. Diese Variante habe ich gestern für/wegen Gonzo programmiert, die aHttpDw.Inc war geschaffen.

Die aHttpDw.Inc beinhaltet die aHttpDw.DLL welche speziell für die aHttpDw.Inc programmiert ist, ein Betreiben der aHttpDw.Dll ohne die Include ist nicht möglich da die Include Methoden für die DLL bereitstellt.

Tatsächlich kann mit der Include aber nicht nur heruntergeladen werden, ohne das dass XProfanprogramm "stoppt", sondern es können "zeitgleich" beliebig viele Downloads in Auftrag gegeben werden, welche alle "zeitgleich" abgearbeitet werden. Wenn man so will, dann könnte man es als "Downloadmanager" verkennen.

Die Include stellt im Grunde Zwei wichtige Möglichkeiten bereit:

aHttpDw(string url)

Legt auf den Abarbeitungsstapel die URL url und beginnt sofort die Daten zu laden. Zurückgegeben wird die Nummer des nächst-freien SLOT (Handle) welcher später benutzt wird, wenn die Daten vollständig empfangen wurden. Es können hierüber beliebig viele Sende/Lade-Aufträge abgesetzt werden.

und

aHttpDw.frame()

Wenn eine Datei vollständig heruntergeladen wurde, bzw. die Antwort des Server vollständig empfangen wurde, dann gibt aHttpDw.frame den SLOT zurück, andernfalls null. Über die Slotnummer kommt man dann einfach an die Antwort. (Binary-Safe)

Mit aHttpDw(url) vergibt man also den Auftrag, und über aHttpDw.frame() kann man asynchron/unregelmässig nachschauen, ob vielleicht bereits eine Datei vollständig geladen wurde.

Die Daten stehen also dann zur Verfügung, wenn man danach fragt (asynchron) und die Downloads beeinflussen den Hauptthread des XProfan nicht.

Ich werde aber zunächst zur Include (auch hier) ein paar Testprogramme posten. Eines davon wird eben auch Gonzo sein.
 
24.10.2008  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.290 Betrachtungen

Unbenanntvor 0 min.
H.Brill19.02.2023
Joachim Fourmont07.02.2022
iF03.01.2016
GDL12.09.2015
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie