Meine Hauptaufgabe besteht darin, HTML-Anwendungen zu erstellen. Damit meine ich intern verwendete CRUD-artige Anwendungen mit vielen bearbeitbaren Rasteransichten, Textfeldern, Dropdowns usw. Derzeit verwenden wir ASP.NET-Webformulare, mit denen die Arbeit erledigt wird, die Leistung ist jedoch meistens schlecht, und häufig auch Sie müssen durch Reifen springen, um zu bekommen, was Sie brauchen. Reifen, die an der Decke hängen und in Flammen aufgehen.
Ich frage mich also, ob es vielleicht eine gute Idee wäre, die gesamte Benutzeroberfläche auf die JavaScript-Seite zu verschieben. Entwickeln Sie eine Reihe von wiederverwendbaren Steuerelementen, die speziell auf unsere Bedürfnisse zugeschnitten sind, und tauschen Sie nur Daten mit dem Server aus. Ja, ich mag das "Kontroll" -Paradigma (auch "Widget" genannt), das für solche Anwendungen recht gut geeignet ist. Auf der Serverseite hätten wir also immer noch ein grundlegendes Layout, das unserem aktuellen ASPX-Markup ähnelt, das dann aber nur einmal an den Client gesendet wird, und der JavaScript-Teil würde sich um alle nachfolgenden Benutzeroberflächenaktualisierungen kümmern.
Das Problem ist, dass ich das noch nie zuvor gemacht habe und auch noch nie jemanden gesehen habe, also weiß ich nicht, was die Probleme sein würden. Insbesondere mache ich mir Sorgen um:
- Leistung noch. Das Benchmarking zeigt, dass die Hauptverzögerung derzeit auf der Clientseite liegt, wenn der Browser nach einem AJAX-Update versucht, den größten Teil der Seite neu zu rendern. Durch ASP.NET-Webformulare generiertes Markup verleiht dem Wort "Web" eine neue Bedeutung, und die umfangreichen Devexpress-Steuerelemente fügen darüber hinaus eine eigene Schicht von Javascript-Komplexität hinzu. Aber wäre es schneller, alle notwendigen Änderungen auf der Javascript-Seite neu zu berechnen und dann nur das zu aktualisieren, was aktualisiert werden muss? Beachten Sie, dass ich von Formularen spreche, die mehrere bearbeitbare Rasteransichten, viele Textfelder, viele Dropdown-Listen mit jeweils einer halben Million filterbarer Elemente usw. enthalten.
- Einfache Entwicklung . Es würde jetzt viel mehr Javascript geben und es würde sich wahrscheinlich mit dem HTML-Markup der Seite mischen. Das oder eine Art neue View-Engine müsste produziert werden. Intellisense für Javascript ist auch viel schlechter als für C # -Code, und aufgrund der dynamischen Natur von Javascript ist nicht zu erwarten, dass es viel besser wird. Coding-Praktiken können es ein wenig verbessern, aber nicht viel. Die meisten unserer Entwickler sind in erster Linie C # -Entwickler, daher kann es zu Lernschwierigkeiten und anfänglichen Fehlern kommen.
- Sicherheit . Viele Sicherheitsüberprüfungen müssen zweimal durchgeführt werden (serverseitig und auf der Benutzeroberfläche), und die Datenverarbeitungsserverseite muss viel mehr davon enthalten. Wenn Sie ein Textfeld derzeit auf der Serverseite als schreibgeschützt festlegen, können Sie davon ausgehen, dass sich der Wert während des Client-Roundtrips nicht ändert. Das Framework verfügt bereits über genügend Code, um dies sicherzustellen (durch ViewState-Verschlüsselung). Mit dem Nur-Daten-Ansatz wird es schwieriger, da Sie alles manuell überprüfen müssen. Andererseits sind Sicherheitslücken möglicherweise leichter zu erkennen, da Sie nur Daten haben, über die Sie sich Sorgen machen müssen.
Wird dies unsere Probleme lösen oder verschlimmern? Hat dies jemals jemand versucht und was waren die Ergebnisse? Gibt es da draußen irgendwelche Rahmenbedingungen, die bei dieser Art von Bestrebungen helfen (jQuery und moralische Äquivalente beiseite)?
So on the server side we would still have a basic layout simliar to our current ASPX markup, but that then would get sent to the client only once, and the Javascript part would take care of all the subsequent UI updates.
Sie beschreiben genau, was ASP.NET ist, was bedeutet, dass Sie es wahrscheinlich nicht richtig verwenden. :) Wenn Sie in Ihren ASP.NET-Anwendungen Komponenten in Aktualisierungsanzeigen platzieren, führt die ASP.NET-JavaScript-Bibliothek asynchrone Postbacks auf der Serverseite durch und rendert nur die von Ihnen angegebenen Komponenten neu.