Laden...

Asp.Net Aktualisieren eines Models ohne neu laden der Seite

Erstellt von aken0 vor 8 Jahren Letzter Beitrag vor 8 Jahren 4.426 Views
A
aken0 Themenstarter:in
8 Beiträge seit 2014
vor 8 Jahren
Asp.Net Aktualisieren eines Models ohne neu laden der Seite

Hey,

derzeit bin ich dabei, mich ein wenig in asp.net einzuarbeiten. Einfache Dinge konnte ich bisher auch lösen. Nun brauche ich aber einen Ansatz, wie ich es schaffe ein Model in der View zu aktualisieren, ohne die eigentliche Seite neu laden zu müssen.
Was ich mir konkret darunter vorstelle, wäre z.B.:
In eine View starte ich einen bestimmten Prozess, welcher in einen eigenem Thread arbeitet. Der Controller gibt der View zurück, dass der Prozess erfolgreich gestartet wurde. Nun möchte ich den Fortschritt dieses Prozesses live begutachten, z.B.: in Form von Prozenten. Das ganze könnte ich lösen, in dem ich jedes mal die Seite neu laden. Ich möchte jedoch, dass dieser Prozentwert automatisch auf der View aktualisiert wird, ohne dabei die Seite neu laden zu müssen.
Wie am besten könnte man sowas machen?

Grüße

M
402 Beiträge seit 2005
vor 8 Jahren

Hi...

entweder der Client holt sich diese Info im Hintergrund periodisch vom Server ab => Ajax

oder der Server informiert den Client bei einer Statusänderung => Websockets

lg

2.207 Beiträge seit 2011
vor 8 Jahren

Hallo aken0,

wenn der Server den Client informiert benutze SignalR. Das nutzt zwar in erster Linie die bereits genannten WebSockets, unterstützt jedoch noch Fallbacks.

Beachte, dass Asp.Net MVC eine serverseitige Technologie ist, falls du das nutzt.

Gruss

Coffeebean

A
aken0 Themenstarter:in
8 Beiträge seit 2014
vor 8 Jahren

Okay, SignalR werde ich mir mal anschauen.
Gibt es noch andere Möglichkeiten, wie z.B.: das über Angular im Hintergrund zu laden?

Grüße

2.207 Beiträge seit 2011
vor 8 Jahren

Klar. Das wäre Polling. Javascript, Timer und deine API ansprechen. SignalR ist aber schöner. 😉

A
aken0 Themenstarter:in
8 Beiträge seit 2014
vor 8 Jahren

Klar. Das wäre Polling. Javascript, Timer und deine API ansprechen. SignalR ist aber schöner. 😉

Schön überzeigt, ich werde mir mal SignalR anschauen, danke euch.

Grüße

16.792 Beiträge seit 2008
vor 8 Jahren

Wenn Du in der Action einen Prozess gestartet hast, dann sollte diese dem Client eine ID zurück geben.
Der Client verwendet nun diese ID um sich auf einen SignalR Channel/Hub zu hängen (subscription).
Der Server pusht alles neue über die ID an den Channel der ID.

Bedenke, dass Du beim ersten Laden der Statusseite direkt die ersten Elemente (Logeinträge) sowie den Status mit gibst.
Wird nämlich während dem Laden der Statusseite der Prozess beendet, dann ist SignalR noch gar nicht im Client geladen und dieser bekommt gar nichts über den Statuswechsel mit.

PS: wenn Du schon mit Angular arbeitest; wieso dann noch mit ASP.NET Views arbeiten?

A
aken0 Themenstarter:in
8 Beiträge seit 2014
vor 8 Jahren

PS: wenn Du schon mit Angular arbeitest; wieso dann noch mit ASP.NET Views arbeiten?

Hat es denn ein Vorteil, meine Software komplett als Service bereitzustellen und mit einem "Angular"-Client die Inhalte darzustellen, anstelle der Views von ASP.Net?

16.792 Beiträge seit 2008
vor 8 Jahren

Natürlich.
Du hast so keine Technologie-Trennung mehr und der Client muss nicht ständig vom Server alles laden.
Sowas nennt man Single Page Application.

Die Last wird auch auf den Client verlagert und die Server-Ressourcen werden massiv vermindert.
Ist ein allgemeiner Trend, den Facebook und Twitter erst so richtig ins Rollen gebracht haben.
Jede moderne Webseite arbeitet mittlerweile so.

Nachteil ist nur, dass die Suchmaschinen-Optimierung etwas aufwändiger ist, falls das eine Rolle spielt.

A
aken0 Themenstarter:in
8 Beiträge seit 2014
vor 8 Jahren

Natürlich.
Du hast so keine Technologie-Trennung mehr und der Client muss nicht ständig vom Server alles laden.

Wahrscheinlich verstehe ich es nur falsch was du mir damit sagen möchtest, aber impliziere ich nicht gerade Technologie-Trennung, wenn ich als Backend C# nutze und als Frotend Angular,Javascript (Typescript) o.ä?

Sowas nennt man Single Page Application.

Die Last wird auch auf den Client verlagert und die Server-Ressourcen werden massiv vermindert.
Ist ein allgemeiner Trend, den Facebook und Twitter erst so richtig ins Rollen gebracht haben.
Jede moderne Webseite arbeitet mittlerweile so.

Okay, interessant. Also sollte ich zukünfitg versuchen, nicht mehr auf ASP.Net (Views) zu setzen, sondern meine Webanwendungen mit einer Rest-Api und einem Javascript/Html Teil aufzubauen.

Wo genau liegt denn dann der Vorteil an ASP.Net, beziehungsweiße der kommenden ASP vNext, wenn der Trend laut meiner Interpretation davon abweicht?

Grüße

16.792 Beiträge seit 2008
vor 8 Jahren

Vermutlich fehlt Dir da noch etwas das tiefere Wissen; denn vNext hat damit erst mal relativ wenig zutun.

Im Prinzip vermischt Du die Welt von vor 2-3 Jahren (ASP.NET MVC) mit der aktuellsten Welt (Angular, TypeScript).
Das, was Du da derzeit mit Views in ASP.NET abbildest macht man in Angular normalerweise mit States.
MVC ist heute auch noch modern; aber halt nicht für Single Page Applications.
MVC ist zB super als Forensoftware aber enorm schlecht Echtzeitanwendungen mit Push und Co.

Es macht eigentlich keinen Sinn, dass man Angular in einer ASP.NET MVC Anwendung laufen lässt, dafür dass es eigentlich nur Views ausliefert und das Routing übernimmt: das kann alles Angular von Haus aus und ist dabei schneller und sparsamer.
(Es gibt ein paar Sachen, wo es zwingend erforderlich ist, aber das ist sehr sehr selten, zB Manifest-Delivery).

Im Prinzip spricht Angular nur mit der WebAPI und MVC braucht man gar nicht mehr.
vNext hat seine Daseinsberechtigung aber letzten Endes ist es eine Serverseitige Technologie und nicht wie Angular eine Clients-seitige.

A
aken0 Themenstarter:in
8 Beiträge seit 2014
vor 8 Jahren

Okay vielen Dank dir. Jetzt habe ich es verstanden.

Grüße