Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Asp.Net Aktualisieren eines Models ohne neu laden der Seite
aken0
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

Asp.Net Aktualisieren eines Models ohne neu laden der Seite

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2459
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
aken0
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2459
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Klar. Das wäre Polling. Javascript, Timer und deine API ansprechen. SignalR ist aber schöner. ;-)
private Nachricht | Beiträge des Benutzers
aken0
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Zitat von Coffeebean
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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15817
Herkunft: BW

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
aken0
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
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?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15817
Herkunft: BW

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
aken0
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Zitat von Abt
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.ä?
Zitat von Abt
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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15817
Herkunft: BW

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
aken0
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Okay vielen Dank dir. Jetzt habe ich es verstanden.


Grüße
private Nachricht | Beiträge des Benutzers