Mehr von Jürgen Gutsch

Mehr von Jürgen Gutsch

Empfehlungen von Jürgen Gutsch

Blog-Empfehlungen von Jürgen Gutsch

Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

Jürgen Gutsch

ASP.NET und mehr...
Was ist eigentlich ASP.NET?

Nach dem letzten Treffen des .NET-Stammtisch Konstanz-Kreuzlingen standen Peter, Thomas Huber und ich noch eine Weile zusammen und überlegten uns tatsächlich, was denn ASP.NET genau ist, bzw. was ASP.NET nun ausmacht.

Der Grund für die Diskussion war eine Bemerkung die Michael Schwarz während seines Vortrages über jQuery mehrfach fallengelassen habe. Genauer sagte er, er habe die ASP.NET MVP Auszeichnung komischerweise verliehen bekommen, ohne dass er mit ASP.NET arbeiten würde.

Ist das nun wirklich so oder war das nur eine provokante Äußerung gegen – aus seiner Sicht – einschränkende Features wie Web Server Controls, ViewState, UpdatePanels  und Co.?

Je nachdem was nun ASP.NET ausmacht, kann die Frage so oder so beantwortet werden…

Uns dreien war bei der Überlegung klar, das es sich lediglich um eine provokante Bemerkung gehandelt hat. Nur wieso? Michael verzichtet – wie er sagt – auf serverseitiges, dynamisches rendern von HTML, genauso wie auf die typische Features von WebForms wie PostBack und ViewState. Alles dynamische HTML wird clientseitig per JavaScript erzeugt. Dynamische Daten werden per AJAX vom Server geholt und per JavaScript angezeigt.

Ist das dann noch ASP.NET? Die Seite, welche das JavaScript und das HTML-Grundgerüst bereitstellt, könnte dann auch eine einfache HTML-Seite sein, da sich an dieser Stelle keine serverseitige Logik verbirgt. Wo versteckt sich dann aber das ASP.NET?

Mir waren bisher vier Konzepte bekannt, wie ASP.NET genutzt wird. Schaut man sich diese Konzepte genauer an, haben sie eines gemeinsam:

  • Web Forms: Dieses ist das ursprüngliche Konzept, wie es von Anfang an vorgesehen war. Die ASPX Seite bildet ein (Web) Form, welches mit Controls aller Art bestückt werden kann. Die Abarbeitung der Seite erfolgt in der Regel von einem Event zum nächsten.
  • Web Services: Die klassischen XML Web Services wurden zur gleichen Zeit wie die Web Forms vom Framework bereitgestellt. Auch Web Services funktionieren nach dem klassischen “Client-Server”-Prinzip: Der Client sendet eine Anfrage (Web Method Aufruf) an den Server und erhält eine Antwort. Statt HTML wird aber XML übertragen.
  • ASP.NET MVC: MVC ist das neueste Konzept um dynamische Webseiten zu erzeugen. Es werden nicht mehr hauptsächlich Events abgearbeitet, sondern Controller Aktionen versorgen die Views (ASPX-Dateien) mit Informationen (Models) die dann in den Views angezeigt werden oder zur ANzeigesteuerung genutzt werden. PostBack und ViewState gibt es nicht mehr. Ein PostBack ist nur noch ein klassischer POST der selber verarbeitet werden muss.
  • sharpcms-Konzept: (Ein richtiger Name fällt mir dazu im Moment nicht ein) Hierbei handelt es sich um ein komplett anderes Konzept. Die Ausgabe der Daten die im XML-Format vorliegen wird per XSLT gesteuert. Die Ausgabe ist daher flexibel und kann von HTML, über WordML bis hin zu PostScript reichen. Das einzige was hier ASP.NET ist, ist der HttpHandler der die Anfragen verarbeitet, die XML-Daten transformiert und das Resultat an den Client sendet

Die Gemeinsamkeit aller vier Konzepte ist das Interface IHttpHandler. Alle Anfragen werden also über einen HttpHandler verarbeitet. Handelt es sich also dann um ASP.NET wenn eine Anfrage vom Client, am Server über einen HttpHandler verarbeitet wird? Es scheint fast so.

Mehr zu HttpHandlern:
Daten mit ASP.NET zum Client schicken, oder: Wieso eigentlich HttpHandler?
HttpHandler der besonderen Art - Page Handler
Exemplarische Vorgehensweise: Erstellen eines synchronen HTTP-Handlers

Schaut man sich das Konzept von Michael genauer an, kann es tatsächlich unabhängig von ASP.NET funktionieren. Wichtig ist nur, dass irgendwie per Ajax Daten vom Server geholt werden können. Dabei ist es eigentlich egal, wie und mit welcher Technik die Daten serverseitig bereitgestellt werden.

O-Ton Peter Bucher:
Alle oben genannten Konzepte beruhen auf der Grundlage von ASP.NET, die beim Webserver, genauer dem ISAPI-Modul von ASP.NET anfangen.
Es besteht eine Applikation und Endpoints (Handler), die einfach verschieden genutzt werden.
WebForms implementiert einen IHttpHandler der sich „Page“ nennt und ermöglicht es mit intelligenten Konzepten eine Controlhierarchie, Events und vieles mehr zu haben.
Webservices stellen auch nur einen Entpoint mithilfe eines HttpHandlers zur Verfügung, die Daten in einem geeigneten Format an den Client schicken. Sie nutzen also die weiter oben gelegenen Features von WebForms nicht, macht ja auch keinen Sinn.
ASP.NET MVC hingegen setzt nutzt sehr viel vom Kern von ASP.NET, lässt hierbei aber die Klasse Page und die Controls aus dem Spiel, sowie die Konzepte die damit zusammenhängen (Events, View- Controlstate, etc...).
Es gibt einen Handler der alle Anfragen entgegen nimmt und dann intern einer Klasse / Methode zuweist. Intern besteht also ein anderes Konzept, dass allerdings – genau so wie mit Events – auch ein Einhängen in den Zyklus erlauben. Wenn auch auf eine viel simplere und transparentere Art und Weise (Actionfilter / AOP).
Um mehr zu erfahren was unter der Haube von ASP.NET abgeht, könnt ihr den Artikel von Rick Strahl lesen.

Programmiert man nun allerdings gerne mit C# und stellt man die Daten deswegen – der Einfachheit halber – per HttpHandler zur Verfügung, so basiert dieses Konzept – nach obiger Definition – ebenfalls auf ASP.NET. Genau so sah das Beispiel in Michaels Vortrag nämlich aus ;-)

Michael hat seine MVP Auszeichnung als somit zurecht ;-)

Update 23.04.2009:
Hier ist übrigens Michaels Beitrag zu dem Thema zu finden:
http://michael-schwarz.blogspot.com/2009/04/was-ist-eigentlich-aspnet.html

Posted: Freitag, 17. April 2009 14:27 von Jürgen Gutsch

Kommentare

Rene Drescher-Hackel sagte:

Ja ich sehe, du hast meine Anregung in euer Treffen mitgenommen - und - hoffentlich auch eine neue Erkenntnis daraus gewonnen [;-)]. ASP.NET - so wie es stellenweise verkauft wird, ist Klickibunti auf höchstem Niveau. ASP.NET wie man es nutzen kann, ist Client-Server-Kommunikation, an der man sehr viel Spaß haben kann. Man muss es so einsetzen, dass alle ihren Vorteil haben - der Entwickler und der Anwendungsnutzer gleichermaßen.

Nur dass ich alle HTML-Steuerelemente als Serversteuerelement ausführen kann und dass der Viewstate ordentlich die Seite aufbläht für ein Stückchen Service, der nur zum Bruchteil tatsächlich benötigt wird, das reicht für ASP.NET nicht aus - das zeigt dir auch der tägliche Blick in das ASP.NETZone-Forum.

Wenn man die Vorteile, die insbesondere AJAX.PRO im Zusammenspiel mit (ASP).NET mit sich bringt, nutzt, dann hat man eine Webapplikation, die schon eine ASP.NET Anwendung ist, aber das Potential da nutzt, wo es sinnvoll ist.

;-)

# April 17, 2009 20:05

Jürgen Gutsch sagte:

Hallo Rene,

danke für deinen Kommentar :-)

>> ... hoffentlich auch eine neue Erkenntnis daraus gewonnen

Leider nein, denn das ASP.NET nicht nur Klickibunti programmierung ist, ist mir (bzw. uns dreien) schon länger klar gewesen ;-)

Abgesehen davon, stimme ich dir auch hier in allen Punkten zu :-)

# April 17, 2009 21:24

Peter Bucher sagte:

Hallo Rene

Ja, natürlich wussten wir das schon.

Du darfst aber eins nicht vergessen Rene, man soll eine Lösung nehmen, die für alle Beteiligten und die Situation passt.

Ich will nur sagen, dass man es nicht mit Javascript und AJAX übertreiben soll, ausser die Situation rechtfertigt dies.

# April 17, 2009 23:10

Rene Drescher-Hackel sagte:

Hallo Peter,

sicher sollte man beim Einsatz von Javascript immer auf dem Teppich bleiben. Aber: ASP.NET setzt gewissermaßen Javascript voraus. Zum anderen sind viele Dinge einfacher zu handhaben, wenn man Javascript auch nutzt. In meiner täglichen Arbeit sehe ich auch, wieviel Verantwortungsbewusstsein, der Einsatz von Javascript mit sich zieht. Schnell baut man sich hier Fehler ein, die u.U. die Businesslogik beeinflussen. In unserem Team haben wir daher klar die Aufgaben verteilt. Und so achtet einer immer darauf, dass beim Einsatz von Javascript das Konzept der Businesslogik nicht verletzt wird. Wir haben mit dieser Vorgehensweise eine Webanwendung am Markt platziert, die MVC praktiziert weit bevor MS dies in der Beta-Version auf den Markt gebracht hat - allein mit .NET, Javascript und AJAX.PRO.

Auch sehen wir derzeit, dass das Updatepanel zwar gute Seiten hat, aber eben auch sehr viele Probleme bereitet, der Balast ist einfach zu hoch, so dass wir das Updatepanel wieder ausbauen werden.

# April 18, 2009 12:41

Jürgen Gutsch sagte:

Hallo Rene,

>> Aber: ASP.NET setzt gewissermaßen Javascript voraus.

wir reden hier aneinander vorbei oder du hast meinen Beitrag nicht verstanden: ASP.NET setzt nur einen HttpHandler voraus. ASP.NET setzt auf keinen Fall JavaScript voraus, sondern deine Anwendung setzt JavaScript voraus ;-)

Was haben denn z. B: ASP.NET Webservices mit JavaScript zu tun? Eben: garnichts!

Oder anders gesagt: Was du am Client machst ist kein ASP.NET ;-)

# April 18, 2009 13:26

Peter Bucher sagte:

Salute

>> ASP.NET setzt gewissermaßen Javascript voraus.

Ein weit weitverbreiteter Irrglaube.

Für WebForms mag das stimmen, wenn man nichts explizit ändert, damit das nicht mehr so ist.

Für ASP.NET an sich jedoch nicht.

>> Zum anderen sind viele Dinge einfacher zu handhaben, wenn man Javascript auch nutzt.

Sorry das ist für mich kein Argument.

Es muss Sinn machen, für den Benutzer sowie den Anwendungszweck. Ob du etwas einfacher entwickeln kannst, interessiert niemanden wenn die Lösung suboptimal ist.

# April 18, 2009 18:24

Rene Drescher-Hackel sagte:

Hallo ihr zwei,

sicher stimme ich euch zu, insoweit war es etwas missverständlich von mir formuliert. Setzt ASP allgemein nicht den HttpHandler voraus - wie ist das denn beim Classic-ASP? ASP.NET Webservice - Javascript, nun sicher nicht direkt aber indirekt, sofern der Client der Consument ist - oder?.

Aber es ist auf jeden Fall ein Thema, dass so, wie es Jürgen formuliert hat durchaus zum Nachdenken anregt. ;-)

# April 18, 2009 20:26

Golo Roden sagte:

Hallo,

ich habe mal bei Microsoft selbst nachgeschaut, wie sie den Begriff "ASP.NET" definieren:

"Microsoft ASP.NET is a free technology that allows programmers to create dynamic web applications. ASP.NET can be used to create anything from small, personal websites through to large, enterprise-class web applications." (von http://www.asp.net/get-started/)

Für meinen Geschmack sehr schwammig, da gefällt mir Eure Definition wesentlich besser (wenn sie auch für oben genannte Seite wohl zu technisch wäre).

Ich persönlich würde die Definition allerdings anders fassen, denn die Abhängigkeit von IHttpHandler ist mir zu stark code-gebunden.

Ich für meinen Teil würde ASP.NET als all das definieren, was nicht im Default-CLR-Host läuft, sondern im Rahmen eines Webservers wie dem IIS, XSP oder Apache mit mod_mono.

Denn auch WCF-Dienste, die auf den IIS deployed werden, nutzen ASP.NET-Konzepte (nämlich die .svc-Datei!), auch wenn dort ansonsten von "klassischem" ASP.NET nichts zu sehen ist.

Viele Grüße,

Golo

# April 20, 2009 09:58

Jürgen Gutsch sagte:

Hallo Golo,

danke für deinen Kommentar. :-) Ja, MS geht da IMHO nur von den klassischen Web Forms aus.

Deine Definition ist ebenfalls passend, gefällt mir. Allerdings habe ich die Webserver als Gemeinsamkeit mit Absicht nicht erwähnt (sagt ich auch bereits dem Peter) da ASP.NET im Prinzip auch in einer Windows Anwendung gehostet werden kann. Aber das ist eine andere Geschichte :-)

# April 20, 2009 11:41
Anonyme Kommentare sind nicht zugelassen