Don P: .NET/aspx-Erfahrung gesucht...

Hallo Leute,

Eine recht umfangreiche .Net-Anwendung für Intranet läuft unter Win XP Professional und ist in C# mit MS SQL-Server und IIS umgesetzt. Das Ganze funktioniert, aber die Anwender klagen über schlechte Performance/Usability.

Die Web-Oberfläche (aspx) soll jetzt umgebaut werden, weil es in der Praxis doch eine ziemliche Klickorgie bedeutet die Anwendung zu bedienen. Das liegt m.M.n. daran, dass gewisse Funktionen zu tief verschachtelt sind, jedenfalls zu tief, als dass man mal kurz wechseln könnte von einer Aufgabe zur anderen, ohne x Reloads des ganzen Bildschirms. Das würde ich gern ändern...

Die vielen Reloads kommen anscheinend daher, dass so ziemliche alle Bedienelemente – wie bei aspx üblich – in einer <form> liegen und mit runat="server" gekennzeichnez sind. Sogar die Menüleiste wird praktisch bei jedem Klick neu geladen, was eigentlich völlig unnötig ist, außer man will eine andere Sprache einstellen (man kann zwischen verschiedenen Sprachen für die Oberfläche wählen).

Dann ist es auch so, dass ein Tabellenlayout benutzt wird, d.h. so zeimlich alles ist in Tabellen angelegt, verschachtelte Tabellen noch dazu, und viele Servercontrols wie z.B. ein simples Input- oder Dropdownfeld mit Button daneben kommen auch als Tabelle beim Browser an... Angeblich deshalb, weil Tabellen am sichersten von allen Browsern umgesetzt werden – bei reiner CSS-Formatierung gebe es zu viele Unterschiede in der Darstellung bei versch. Browsern, hieß es...

Da für mich fast alles Neuland ist – sowohl C# als auch aspx, und in CSS bin ich auch nicht gerade der Fuchs – würde ich gerne Tipps einfangen, wie ich am besten vorgehen soll, um möglichst schnell und ohne Umwege/Sackgassen zum Ziel zu kommen. Dazu folgende Fragen:

  1. Stimmt das mit den großen Browser-Unterschieden bei CSS-Formatierung, bzw. ist es allgemein ein großes Problem, ein Tabellenlayout so umzubauen, dass es auch ohne Tabellen "vernünfig" aussieht in verschiedenen Browsern?

  2. Kann oder sollte ich besser ein JS-Framework wie jQuery benutzen, um eventuelle Darstellungsprobleme versch. Browser zu umgehen. Wäre ein JS-Framework da überhaupt hilfreich und verträgt es sich mit aspx, das ja ziemlich exzessiv eigenes JavaScript produziert und überall im HTML verteilt :(

  3. Wie kann man am besten verhindern, dass .aspx-Seiten bei jedem Klick einen kompletten Reload der Seite auslösen? Mir fallen nur Frames, iFrames und AJAX ein, aber Frames sind ja auch sehr verpönt...

  4. Was sollte man sonst noch beachten bzw. bedenken?

Bin für jede Hilfe dankbar.

Gruß, Don P

  1. Hallo,

    Webanwendungen sind imho immer im Nachteil gegenüber Desktop-Anwendungen, da Webanwendungen für gewöhnlich auf einem Request-Response Prinzip basieren: Ohne Anfrage nach "Resourcen" keine Antwort. Ajax schafft da eine gewisse Abhilfe. Für ASP.Net gibt es bereits Ajax Frameworks, kommt darauf an, was du bisher für eine Version von .net im Einsatz hast.

    Wenn es eine reine InTRAnet Anwendung ist und du gewährleisten kannst, dass alle Benutzer bestimmte Komponenten installiert haben, dann könntest du z.b. Silverlight einsetzen, das ist ähnlich wie Flash nur programmierbar mit .Net. Damit lässt sich nochmal eine ganze Stange mehr machen als mit nur Ajax.

    Gruss, Frank

    1. Hey Frank!

      Wenn es eine reine InTRAnet Anwendung ist und du gewährleisten kannst, dass alle Benutzer bestimmte Komponenten installiert haben, dann könntest du z.b. Silverlight einsetzen, das ist ähnlich wie Flash nur programmierbar mit .Net. Damit lässt sich nochmal eine ganze Stange mehr machen als mit nur Ajax.

      Selbst wenn man gewisse Software vorraussetzen kann, würde ich doch von Silverlight abraten. Leider hab ich mich seiner Zeit nicht so intensiv damit beschäftigt, dass ich die Überlebensdauer von Silverlight einschätzen könnte aber bei propritären MS-Produkten stellen sich mir die Nackenhaare auf.

      Siehe Frontpage. Es wird einem zusammen mit dem Office-Paket immernoch untergejubelt obwohl wohl nur eine Hand voll Leute damit arbeiten. Und die sind vermutlich Angestellte bei MS ;)

      Die Vorteile gegenüber AJAX sind hingegen unbestritten, ich da Silverlight nicht schlechter machen als es ist.
      Zu erwähnen wär vielleicht noch das zusätzlich nötige Plugin im Browser.
      Ob das dann in Zukunft auch immer stabil läuft wär das nächste Problem.

      Grüße, Matze

      1. Hallo,

        Siehe Frontpage. Es wird einem zusammen mit dem Office-Paket immernoch untergejubelt

        nein. Natürlich nicht. Schon seit Jahren nicht mehr. Frontpage ist 2007 von Microsoft beerdigt worden.

        obwohl wohl nur eine Hand voll Leute damit arbeiten.

        So optimistisch wäre ich nicht ;-)

        Freundliche Grüße

        Vinzenz

        1. Hi!

          Frontpage ist 2007 von Microsoft beerdigt worden.

          Und der Nachfolger ist brauchbar!

          off:PP

          --
          "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
          1. Hallo Don P,

            es ist schon eine Weile her, dass ich mich mit 'reinem .aspx' befasst habe. Was die Performance angeht solltest Du mal in den Seitenquellcode schauen, da müsste ein 'hidden'-Input Element mit Namen _VIEWSTATE_ oder so sein. Darin werden die Stati der Seitensteuerelemente gehalten. Es kann vorkommen, dass der Wert dieses Steuerelements immens groß wird und Du damit sehr viel Traffic bekommst.
            Das mit dem Tabellen-Layout und überhaupt die HTML-Codeerzeugung läßt sich auch überschreiben, allerdings ist das eine ziemliche Friemelei.

            Ich war aus den gleichen Gründen wie Du auf der Suche nach einer Alternative mit C# und kann Dir das hier (http://www.asp.net/(S(d35rmemuuono1wvm1gsp2n45))/mvc/) wärmstens empfehlen. Das ist ein auf .Net aufgebautes Framework. MVC steht für Modell - View - Controller, das heisst, dass eine strikte Trennung zwischen HTML-, Programm-Code und Daten erfolgt. Der HTML-Code wird direkt bearbeitet, das ist am Anfang eine Umstellung, gibt Dir aber viel mehr Kontrolle. Solche Dinge wie 'Masterpages' und .ascx-Controls sind weiterhin nutzbar. Das Ganze wird von Microsoft unterstützt, ist aber kostenlos und frei verfügbar.

            Als Fazit würde ich sagen: "Du bekommst wesentlich mehr Kontrolle, musst Dich aber von der Klick-Programmiererei verabschieden".

      2. Hallo,

        Selbst wenn man gewisse Software vorraussetzen kann, würde ich doch von Silverlight abraten. Leider hab ich mich seiner Zeit nicht so intensiv damit beschäftigt, dass ich die Überlebensdauer von Silverlight einschätzen könnte aber bei propritären MS-Produkten stellen sich mir die Nackenhaare auf.

        Mir auch, und nicht nur das, auch die Zehennägel rollen sich auf ;)
        Aber was soll's, das ganze Ding ist nunmal mit MS-Produkten zusammengabaut, da kommt es auf eins mehr wohl auch nicht an. Werde mir Silverlight mal ansehen und abchecken, ob so ein Plugin akzeptiert wird.

        Ich denke, dass vieles, was bis jetzt auf dem Server läuft, besser per JS vom Client erledigt werden könnte, ohne ständiges Hin- und Hersenden von Formularen. Z.B. das Sorieren von Tabellen, wenn die Daten doch schon im Browser vorliegen.

        Ich muss allerdings zugeben, dass der aspx-Quellcode noch recht übersichtlich aussieht, aber was dann im Browser ankommt – OMFG! So ein "Validation-Control" z.B. zum Validieren einer Eingabe geht mit einer Unmenge an JavaScript einher, das von aspx produziert wird, und nur um neben dem Eingabefeld ggf. etwas auszugeben wie "die Zahl muss zwischen 0 und 100 liegen". Das würde ich mit mit einem zwei- oder Dreizeiler in JS erledigen...

        Gruß, Don P