Italia
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. circa 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, circa 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. circa diese Pipes: [...]  )

B) Einprozess-Mehrthread-Variante: Der XProfanprozess corre 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 per den XProfan-Prozess bieten, Daten asynchron zu beziehen und zu senden.

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

Variante B necessario keinen eigenen/weiteren Prozess sondern nur Threads. Diese Variante habe ich gestern per/wegen Gonzo programmiert, die aHttpDw.Inc war geschaffen.

Die aHttpDw.Inc beinhaltet die aHttpDw.DLL welche speziell per die aHttpDw.Inc programmiert ist, ein Betreiben der aHttpDw.Dll ohne die Include ist nicht possibile da die Include Methoden per 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 potuto 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 File 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 circa aHttpDw.frame() kann man asynchron/unregelmässig nachschauen, ob vielleicht bereits eine File 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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.300 Views

Untitledvor 0 min.
H.Brill19.02.2023
Joachim Fourmont07.02.2022
iF03.01.2016
GDL12.09.2015
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

iF (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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