Laden...

ASP.NET MVC Konzept für RIA

Erstellt von seeba vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.978 Views
S
seeba Themenstarter:in
74 Beiträge seit 2005
vor 12 Jahren
ASP.NET MVC Konzept für RIA

Hallo,
derzeit spiele ich etwas mit jQuery und diversen Plugins. So habe ich mir einen Windows-/WPF-ähnlichen Look mit Splittern/Panels aufgebaut. Eigentlich ändert sich immer nur der Inhalt im Center-Panel. Jetzt ergeben sich mir zwei Möglichkeiten dies zu tun.

1: Austausch des Inhaltes mit Javascript. Bereitstellung der CENTER-Inhalte über Views ohne Overhead (HTML-Header, Skripte, CSS)

2: Immer komplett neu laden. Definition der anderen Panels im SharedView.

Anzumerken ist, dass je nach Benutzer im linken Panel ein Treeview ist, der mit bis zu 500 Knoten bei Variante 2 immer neu geladen werden müsste.

Was meint ihr?

Viele Grüße!

16.807 Beiträge seit 2008
vor 12 Jahren

Ganz klar Variante 1. In diese Richtung geht auch das Konzept von MVC.

S
seeba Themenstarter:in
74 Beiträge seit 2005
vor 12 Jahren

Voelen Dank, noch jemand ein paar Tipps zur Umsetzung?

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo seeba,

je nachdem, was genau du umsetzen möchtest, könnte SignalR zur Echtzeit-Unterstützung hilfreich sein; siehe dazu den Blogpost Use SignalR with Knockout for real-time UX updates in ASP.NET MVC 3.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

S
seeba Themenstarter:in
74 Beiträge seit 2005
vor 12 Jahren

Super, da ich teilweise Echtzeitdaten aus der Produktion anzeigen muss, brauche ich auch genau das. Super und danke!

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo seeba,

freut mich, dass dir das weiterhilft. Dann verweise ich dich an dieser Stelle auch noch auf learn.knockoutjs.com, wenn du dir Knockout aneignen möchtest. Sehr schöne interaktive Tutorials vom Projektautor ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

16.807 Beiträge seit 2008
vor 12 Jahren

Echtzeit und HTTP stehen nicht im Einklang. Es bleibt weiterhin eine asynchrone Anwendung, die mit Sicherheit nicht in Echtzeit irgendwelche Daten anzeigen kann.

Zum Thema Umsetzung weiß ich nicht was Du genau nun erwartest. Wenn Du MVC kennst, und das Prinzip von jQuery verstanden hast, dann wirst Du eigentlich selbst drauf kommen, wie das ganze sauber im Einklang funktioniert.
Du hast eben Areas und Controllers in denen Du die Requests behandelst. Ob das nun volle Views sind, oder nur Teilansichten aufgrund von jQuery-Aktualisierungen, das behandelst Du in den Actions.

1.002 Beiträge seit 2007
vor 12 Jahren

Hallo Abt,

WebSockets kommen dem schon recht nahe. Klassiche HTTP-Requests via AJAX ist in SignalR ja nur als Fallback-Lösung gedacht, wenn WebSockets nicht unterstützt werden.

Guck dir mal das Video in diesem Blogpost an: KsigDo Task Pad – Real-Time UI View Model syncing across users with ASP.NET, SignalR, Knockout MVVM and EF

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

16.807 Beiträge seit 2008
vor 12 Jahren

Guten Morgen,

Okay. Ich hab mir das nun nicht genau angeschaut, aber auch wenn das über WebSockets läuft ist und bleibt es noch eine Webanwendung. Hier spielt auch der IIS und das Betriebssystem eine Rolle. Und hier gibt es eben Threads mit unterschiedlichen Prioritäten. Gerade bei Webanwendungen ist eben jeder Request ein eigener Thread.

Der Vorteil von WebSockets ist ganz klar die direkte Aktualisierung. Aber die Seite "Server" kannst Du hier nicht so ohne weiteres beeinflussen. Facebook nutzt was ähnliches, wenn auch mit rund einer Sekunde Vezögerung.
Man muss aber bei Windows Betriebssystemen sehr vorsichtig sein, wenn man das Wort "Echtzeit" nutzt. Und bei Web-Anwendungen gehört das aus meiner Ansicht überhaupt nicht in den Sprachgebrauch.

Aber wenn es "annähernd" das Ziel erreicht, ist es für seeba ja eventuell eine Lösung.

S
seeba Themenstarter:in
74 Beiträge seit 2005
vor 12 Jahren

Vielen Dank, es war mir schon klar, dass das kein richtiges Echtzeit ist. Es geht nur darum die Daten zeitnah (<10s) zu aktualisieren.

Wenn ich mit Ajax.ActionLink und dem "replacen" von Content arbeite: Wie kann ich mir eine Funktion ohne JavaScript erhalten? Die Views enthalten dann ja kein Rahmenwerk mehr (Navigation) und sind quasi ohne JS unbenutzbar. Braucht man das heutzutage überhaupt noch?

16.807 Beiträge seit 2008
vor 12 Jahren

Was ist "Ajax.ActionLink" ?

Kommt das von Microsoft.Mvc.js ? Wenn ja vergiss das. Das wird nicht mehr weiterentwickelt und von MS auch nicht mehr empfohlen.
Benutzt direkt die jQuery-Library und aktualisiere darüber den Content. Partial-Content kriegst Du ganz normal über eine Ajax-Abfrage.

Auf der Serverseite kannst Du mit Request.IsAjaxRequest abfragen, ob es sich dabei eben um eine Ajax-Abfrage handelt - sofern die Action beides unterstützen soll - und darüber den Content ausliefern.

S
seeba Themenstarter:in
74 Beiträge seit 2005
vor 12 Jahren

Das ist eine Helper Klasse. Siehe bspw. hier: http://code-inside.de/blog/2011/04/11/howto-ajax-actionlink-asp-net-mvc-3/

Sollte man das verwenden oder lieber selbst schreiben mit jQuery?

Vielen Dank, ihr habt mir auf jeden Fall einige Keywords und Ansätze geliefert, die mir sehr weiter helfen.

16.807 Beiträge seit 2008
vor 12 Jahren

Wie gesagt, weglassen und auf jQuery zurück greifen.

S
seeba Themenstarter:in
74 Beiträge seit 2005
vor 12 Jahren

Nochmal zu SignalR:
Habe jetzt etwas damit gespielt. Das Updates über Änderungen der anderen Clients funktioniert ja prima. Was aber, wenn ich etwas in der DB ändere. Wie kann ich dann die Clients aktualisieren?

16.807 Beiträge seit 2008
vor 12 Jahren

Du musst in einem Singleton (für Web-Anwendungen am besten einen "Nested Singleton") jeden Client merken, den Du anschließend anpushen kannst.