ASP.NET Webforms sind auch OK

Ich bin kein Experte, ja ich bin nicht mal Softwareentwickler. Viele die das Lesen werden vor dem Kopf gestoßen werden und mich verurteilen. Sie werden Fehler im meiner Argumentation suchen um mich als Idioten da stehen zu lassen. Der Konsum dieses Artikels kann Ärgerlichkeit hervorrufen!

Zu meinen Anfängen habe ich mit ASP auf IIS 4 Web Frontends entwickelt. Ich habe mir damals auch PHP angesehen und war wegen der nähe des Technologie Stacks zu Microsoft von ASP mehr angetan. Visual InterDev. Kenner werden verstehen. Gelernt habe ich das damals von der Website learnasp, die von einem wunderbaren Charles Carroll betrieben wurde. Er war der Erfinder von vielen Community relevanten Aktivitäten die wir heute im Web Umfeld als selbstverständlich ansehen. Ich hab Charles auch auf eine unserer ASP Konferenzen eingeladen. Menschlich ein nicht leichter Charakter, der es sich damals mit Microsoft schwer verscherzt hat.

Ein weiterer Meilenstein war, das ich Scott Guthrie kennen gelernt habe, zu der Zeit als das Projekt noch ASP+ hieß (analog zu COM+ und noch so ein paar  Plus Dingen). Ich durfte in einer von ihm persönlich gehaltenen mehrtägigen Schulung teilnehmen (superkleiner Kreis) und wir die Teilnehmer sollten Feedback abgeben. Das war ein Wahnsinn.

Der Clou war das das müßige tippen von VB Syntax mitten in den HTML Code ersetzt wurde durch Platzhalter die man in einer extra Code Datei anprogrammieren konnte. Später genannt ASP.NET Controls. Durch die deklarative Syntax kann man auch im Code eine abstrahierungsebene höher Einfluss nehmen.

Das Grundkonzept Logik und Visualisierung in eine Black Box zu stecken so das Designer und Coder was davon haben fand ich sehr sexy seit ich mit VC 1.52 Windows 3.1 Programme geschrieben hatte. Erst später brachte die MFC Erleichterung.

Mit den Steuerelementen verbinden viele die strickten Begrenzungen von VB6. Was an Funktion nicht drin war musst man entweder dem Kunden wegdiskutieren oder mit gigantischen Aufwand implementieren.

Mit Silverlight (auch ein bisschen WPF) wurden die Limitierungen der “Black Box” Steuerelement aufgebrochen. Bei VB6 und später auch Winforms war ein Datagrid mehr oder weniger durch seine Attribute und Events limitiert. Silverlight brachte Behaviors, View States, Design Templates und noch ein wenig mehr. Designer kann Button auf den das “Formular” ziehen und Developer kann coden. Wenn es einen neue Button Funktionalität gibt durch Updaten auch gut ( meist jedenfalls). Den großen Vorwurf den sich nun HTML (auch 5) im Vergleich zu XAML machen lassen muss ist, das die Entwurfsziele auch eine großartige Designer Unterstützung beinhalten. Bis hin zu den großartigen Design Time Daten.

Faktisch gibt es heute keinen (bitte verbessert mich) perfekten HTML WYSIWYG Designer. Die Kenner sowohl von der Designer als auch Entwickler Seite schreiben prinzipiell den HTML Code selber und finden das auch gut. Wenn man's beherrscht sicher möglich und wirkt auch elitär.

In der Lebensrealitiät abseits von OOP arbeitet man auch mit Controls, weil es Komplexität vor dem Benutzer verbirgt. Dort wird auch nicht geerbt oder erst selbst eine Library implementiert, sondern genommen was da ist. Weil es fertig werden muss und man eine halbwegs definierten Qualitätslevel erreicht.

Also Controls sind gut und nützlich. Meiner Meinung nach findet das auch die Mehrheit der Developer im Markt. Nicht umsonst laufen Firmen wir Telerik und Infragistics so hervorragend.

Nun kommt aber das Problem. Seit ASP..NET 2.0 hat sich kaum was wesentliches an den Funktion der Controls geändert. Eben deswegen kaufen Kunden Drittanbieter Produkte.

Der erste Schritt vieler Webanwendungen wird ein Menü sein. Statt LI und UL zu tippen, kann man ein Control aufs Formular ziehen. So mit Wizard Unterstützung und preview im Designer. Selbst Design Templates kann man zuweisen.

 image

Viele Optionen bis hin zu einem Provider Konzept um die Menüpunkte aus einer Datenquelle zu laden sind vorhanden.

Der deklarative Teil ist allerdings nicht mehr ganz auf der Höhe der Zeit allerdings durchaus verständlich.

 

   1:   <asp:Menu ID="Menu1" runat="server" BackColor="#F7F6F3" DynamicHorizontalOffset="2" Font-Names="Verdana" 
   2:              Orientation="Horizontal"
   3:              Font-Size="0.8em" ForeColor="#7C6F57" StaticSubMenuIndent="10px">
   4:              <DynamicHoverStyle BackColor="#7C6F57" ForeColor="White" />
   5:              <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
   6:              <DynamicMenuStyle BackColor="#F7F6F3" />
   7:              <DynamicSelectedStyle BackColor="#5D7B9D" />
   8:              <Items>
   9:                  <asp:MenuItem Text="New Item" Value="New Item"></asp:MenuItem>
  10:                  <asp:MenuItem Text="New Item" Value="New Item"></asp:MenuItem>
  11:                  <asp:MenuItem Text="New Item" Value="New Item">
  12:                      <asp:MenuItem Text="New Item" Value="New Item">
  13:                          <asp:MenuItem Text="New Item" Value="New Item"></asp:MenuItem>
  14:                      </asp:MenuItem>
  15:                  </asp:MenuItem>
  16:                  <asp:MenuItem Text="New Item" Value="New Item"></asp:MenuItem>
  17:                  <asp:MenuItem Text="New Item" Value="New Item"></asp:MenuItem>
  18:                  <asp:MenuItem Text="New Item" Value="New Item"></asp:MenuItem>
  19:              </Items>
  20:              <StaticHoverStyle BackColor="#7C6F57" ForeColor="White" />
  21:              <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
  22:              <StaticSelectedStyle BackColor="#5D7B9D" />
  23:          </asp:Menu>

 

Auch im gerenderten HTML Code sieht man das es definitiv moderner geht, aber gar nicht so falsch ist.

   1:  <div id="Menu1">
   2:      <ul class="level1">
   3:          <li><a class="level1" href="#" onclick="__doPostBack(&#39;Menu1&#39;,&#39;New Item&#39;)">
New Item</a></li><li><a class="level1" href="#" onclick="__doPostBack(&#39;Menu1&#39;,&#39;New Item&#39;)">
New Item</a></li><li><a class="popout level1" href="#" onclick="__doPostBack(&#39;Menu1&#39;,&#39;New Item&#39;)">
New Item</a><ul

 

In Summe gesehen würde ich heute keine Menüs mehr mit diesem Control machen, weil es nicht aktuell ist und man in der Tat einfacher per HTML und CSS zu den Ergebnis kommt das auch  noch viel besser aussieht. Das heißt der Aufwand die Benutzung dieses Controls zu lernen und seine Klippen zu umschiffen ist relativ hoch.

Ist das die Schuld von Webforms. Nein ich denke das Team in Redmond ist entweder einfallslos oder hat keine Ressourcen. Über Jahre.

Ein häufiger Streitpunkt ist der Viewstate. Ein einfaches Hidden Field in das die Entwickler ob der Beschränkung des Webs den Client Status stecken. Vielen ist entgangen das man dies in der Page relativ leicht abschalten kann und dann nur mehr einen Bruchteil der Größe einnimmt. Microsoft hat hier vor längerer Zeit das Konzept leicht verändert, Stichwort Controlstate.

Eine eher peinliche Phase war der Ajax Ansatz von Microsoft. Hier ist Jquery wesentlich einfacher. Mein deutlicher Vorwurf ist, das man speziell JQuery und JQuery Mobile viel besser in die Controls und den Propertty Designer integrieren muss. Mit dem Update 2012.2 sehe ich auch das es weiter geht. Es gibt für Webforms einen Mobile Switcher und erste Änderungen im Detail Rendering der ASP.NET Server Controls.

Für mich ist ASP.NET Webforms noch immer eine RAD Web Technologie die ihre Einsatzszenarien hat. Wenn Microsoft hier wieder richtig Energie reinstecken würde, statt in Dinge wie WebMatrix, dann könnte das auch wieder wesentlich mehr Einsatz finden.

Kommentare sind geschlossen