Laden...

Wie Daten zum Client pushen mit WebForms?

Erstellt von Net.Dev vor 3 Jahren Letzter Beitrag vor 3 Jahren 453 Views
N
Net.Dev Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren
Wie Daten zum Client pushen mit WebForms?

Hi,

ich habe gerade ein kleines Problem.

Auf einer aspx-Seite erstelle ich beim Button-Click eine Instanz einer Klasse und speichere diese in der Session ab.
Daraufhin erfolgt ein PageLoad und ich lese die gespeicherte Instanz aus der Session aus und weise diese einer Variablen zu.

Bis hier hin alles soweit ok und es läuft.

In der Instanz wird ein Event zur Verfügung gestellt, welches ich hier im PageLoad dann abonniere. Das Event wird von außerhalb aus einer DLL, gesteuert und soll beim Ausführen ein JavaScript-Alert angezeigen.
Dies passiert jedoch nicht, so als ob das Event nicht aufgerufen wird.

Jetzt meine Frage: Ist das so überhaupt möglich, das Event zu abonnieren oder sollte/muss ein anderer Weg gewählt werden?

Vielen Dank für eure Hilfe

16.807 Beiträge seit 2008
vor 3 Jahren

So funktionieren leider Webseiten nicht; so funktioniert weder ASP.NET noch HTTP.

HTTP ist ein verbindungsloses Protokoll.
Das heisst, dass nach dem Laden der Webseite keine Verbindung mehr zwischen Server und Client existiert.

Wenn Du also irgendwas auf dem Server wirfst, dann bekommt das der Client einfach nicht mit - und wird es auf diese Weise auch nie.

Die Lösung an dieser Stelle sind WebSockets, die eine dauerhafte Verbindung zwischen Server und Client (Browser) halten und Du darüber Informationen verschicken kannst (Psuh an den Client).
In der Microsoft-Welt gibt es dazu SignalR.

Leider verwendest Du aber WebForms (aspx), eine fast 20 Jahre alte Technologie, die fast 10 Jahre abgekündigt ist.
Hier ein Event-basiertes System einzubringen ist leider gar nicht so einfach wie in die modernere Struktur von ASP.NET MVC (ebenfalls End of Life) und ASP.NET Core (aktuelle Variante).
Das Problem ist hier der ViewState von WebForms, den Du auf Client-Seite nicht so einfach anpassen kannst (zB durch ein WebSocket-Event), da er ansonsten ungültig werden könnte.
WebForms ist im Endeffekt gar nicht für solche Dinge konzipiert; gab es aber auch vor 20 Jahren einfach nicht.

Edit: Titel so angepasst, dass ersichtlich ist, was das Thema ist.

N
Net.Dev Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren

Hallo Abt,

vielen Dank für deine schnelle Antwort 👍

WebForms ist vorgegeben und ich muss mich in diesem Rahmen bewegen.
Würde hier SignalR funktionieren bzw. performant sein oder gibt es hier, wegen des Alters, etwas besonderes zu beachten?

16.807 Beiträge seit 2008
vor 3 Jahren

Also unperformanter als WebForms kann es nicht sein; WebForms galt und gilt durchweg als extrem unperformant im Vergleich zu allem anderen, was es so in der Microsoft-Welt gibt.

Das neue SignalR funktioniert auf keinen Fall mit der alten ASP.NET Welt;
die ältere Variante vermutlich schon.
Google einfach mal nach WebForms und SignalR; wirst bestimmt paar Beispiele finden.

N
Net.Dev Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren

Super. Vielen Dank.

Ich komme eigentlich nicht aus der Welt der Web-Entwicklung (sondern von WPF) und merke, dass da einiges anders läuft und oft andere Ansätze gebraucht werden.

Dann werde ich mal die Suchergebnisse zu SignalR durcharbeiten und schauen was ich machen kann.

Vielen Dank nochmal 🙂

16.807 Beiträge seit 2008
vor 3 Jahren

Das Paradigma von WebForms hat mit eigentlichen Webanwendungen nichts zutun; man programmiert sie fast wie Desktop-Anwendungen.

Das ist leider auch der größte Nachteil des Ganzen, sodass dies ein großer Grund war, wieso WebForms vor 10 Jahren auch keine Zukunft mehr hatte.
Das Konzept von WebForms ist mit heutigen Anforderungen völlig überfordert und kann diese nicht im Ansatz erfüllen.