- ASP.NET
-
ASP.NET Basisdaten Entwickler Microsoft Aktuelle Version 4 Betriebssystem ab Windows 2000 Kategorie Web-Entwicklung Lizenz Proprietäre Software Deutschsprachig ja www.asp.net/de ASP.NET (Active Server Pages .NET) ist eine serverseitige Technologie von Microsoft zum Erstellen dynamischer Webseiten, Webanwendungen und Webservices auf Basis des Microsoft-.NET-Frameworks. Seit 2002 ist ASP.NET der Nachfolger der ursprünglichen Webtechnologie ASP (Active Server Pages).
Mit ASP.NET können Webanwendungen in von .NET unterstützten Sprachen (theoretisch alle CLR-kompatiblen Sprachen) erstellt werden, gebräuchlich sind nahezu ausschließlich objektorientierte Sprachen wie C# und VB.NET. Eingeschränkt wird die Sprachwahl meistens nur von der jeweiligen Entwicklungsumgebung. ASP.NET ist somit keine Programmiersprache, sondern eine Bündelung von Techniken. ASP.NET-Sprachen werden nicht interpretiert, sondern (in CIL) übersetzt.
Inhaltsverzeichnis
Charakteristika
ASP-Seiten
ASP.NET-Webseiten nennt Microsoft offiziell Web Forms[1]. Die Web Forms bilden den Grundbaustein der Entwicklung von Webinhalten mit ASP.NET in seiner klassischen Form. Web Forms sind in Dateien mit der Dateiendung ".aspx" enthalten. Die .aspx-Dateien enthalten typischerweise statisches (X)HTML Markup sowie die sogenannten Web Controls und User Controls, die gemäß der serverseitig hinterlegten Logik auf dem Webserver verarbeitet und als dynamischer (X)HTML-Code ausgegeben werden. Beispiele für Web Controls, die Microsoft standardmäßig mitliefert, sind ein Kalendercontrol oder die Gridview (Tabellenansicht von Daten).
Zusätzlich können dynamische Code-Inhalte, die vom Server ausgeführt werden sollen, innerhalb einer .aspx-Datei in der Form
<% -- dynamic code -- %>
hinterlegt werden. Diese Art der Einbettung ähnelt stark den Konstrukten anderer Web-Programmiersprachen wie PHP, JSP und ASP. Allerdings sollte der Entwickler möglichst auf im HTML-Code verschachtelten Programmcode verzichten, da der Compiler diesen Code erst bei Ausführung auf dem Webserver überprüft. Der Code separat verfasster Code-Behind-Dateien (siehe unten) wird dagegen vom Compiler vollständig überprüft, was eine höhere Laufzeitsicherheit erzielt.Mit dem ASP.NET Framework 2.0 veröffentlichte Microsoft den neuartigen Ansatz des Code-Behind-Modells. Dabei verbleiben statische Inhalte in der .aspx-Datei, während der dynamische Code in eine Datei des Typs .aspx.vb oder .aspx.cs respektive .aspx.fs ausgelagert wird[2]. Der Dateityp ist dabei von der verwendeten .NET-Sprache abhängig. Entwickler, die nicht mit dem Code-Behind-Ansatz arbeiten möchten, können die Funktion Render überschreiben, und sich hier (vollkommen unabhängig von der Design-Ansicht) die HTML komplett selbst erzeugen.
Code-Behind-Modell
Microsoft empfiehlt die Nutzung des Code-Behind-Ansatzes für die dynamischen Code-Anteile. Die Code-behind-Dateien tragen üblicherweise die Dateiendung .aspx.cs oder .aspx.vb. Der Dateiname der .aspx entspricht dabei stets genau dem Namen der Code-Behind-Datei, unterschiedlich sind nur die Dateiendungen. Microsoft Visual Studio und andere IDEs geben diese Art der Entwicklung standardmäßig vor. Der Code einer solchen Code-Behind-Datei wird bereits vor Aufruf der entsprechenden Seite kompiliert. Dies senkt die Fehlerrate gegenüber Interpretersprachen, bei denen die Überprüfung auf Fehler erst zur Laufzeit stattfindet. In der Code-Behind-Datei hat der Entwickler die Möglichkeit, auf unterschiedlichste Events im Lebenszyklus einer ASP-Web Forms-Seite zu reagieren, darunter nicht nur z.B. das Laden der Webseite, sondern auch Ereignisse, die sich aus Benutzerinteraktionen mit Web-Formular-Inhalten ergeben, so etwa der Klick auf eine Schaltfläche.
Das Programmmodell (mit Events, die von Controls ausgelöst werden) ist dem von .NET-Applikationen sehr ähnlich, somit ist für Entwickler, die schon Applikationen für das .NET-Framework geschrieben haben, die Nutzung von ASP.NET (und C#/VB.NET) leicht möglich. Meist können für Windows-Applikationen programmierte Funktionen oder Klassen sogar ohne Änderung in ASP.NET weiterverwendet werden.
Mit diesem Ansatz unterscheidet sich ASP.NET deutlich vom klassischen ASP. Eine erste Trennung von Code zur Darstellung und den Inhalten wird dadurch erreicht. Ähnlich der Trennung zwischen View und Controller im MVC-Muster erlaubt diese Trennung eine bessere arbeitsteilige Entwicklung z.B. durch eine Aufteilung zwischen Webdesigner, der die aspx bearbeitet, und Programmierer, der die Code-Behind-Datei erstellt. Das neuere Plugin ASP.NET MVC betont konzeptionell in noch viel stärkerer Form diese Art des Separation of Concerns.
Directives
Mit Directives ist es möglich, in einer ASPX-Datei zu deklarieren, wie ASP.NET diese Seite verarbeiten soll[3]. Die am Häufigsten genutzte Directive ist <%@ Page %>. Hiermit lassen sich diverse Einstellungen vornehmen, allen voran die Angabe, in welcher Programmiersprache der dynamische Inhalt programmiert ist. Beispielsweise beinhalte das Code-Beispiel in diesem Artikel die <%@ Page %> Directive in der ersten Zeile.
User Controls
Die sogenannten User Controls kapseln bestimmte Abschnitte aus Seiten in einer eigenen Datei mit der Endung .ascx. Diese .ascx-Dateien werden innerhalb des ASP.NET-Projekts registriert und können auf ASPX-Seiten genauso verwendet werden wie die vordefinierten Web Controls. Die .ascx-Datein enthalten typischerweise (X)HTML Markup sowie serverseitige Controls. Ein User Control wird kompiliert, wenn die Seite, auf der das Control eingebunden wird, aufgerufen wird. Das User Control wird für mögliche nachfolgende Anfragen im Speicher gehalten. User Controls bringen ihre eigenen Events mit sich, die ebenfalls vom Entwickler individuell behandelt werden können. Alle User Controls sind daran gebunden, von einer ASPX-Seite aufgerufen zu werden. Der direkte Aufruf eines User Controls im Browser ist nicht möglich.
Individualisierte Controls
Programmierer können custom controls in ihren ASP.NET Webanwendungen definieren. Im Gegensatz zu User Controls werden Custom Controls nicht in einer ASCX-Datei definiert, sondern ihr Code wird in eine Dynamic Link Library-Datei (DLL) kompiliert. Hat er solche Custom Controls einmal definiert, kann der Entwickler diese in unterschiedlichen Webanwendungen und Visual Studio-Projekten nutzen.
Diese Möglichkeiten, eigene Controls für ASP.NET zu entwickeln, bilden die Grundlage für eine Vielzahl an Controls von Drittanbietern, die frei oder kostenpflichtig zur Verfügung stehen. Es existiert ein mittlerweile sehr umfangreicher Markt, über den eine Vielzahl von wiederverwendbaren Controls frei oder kommerziell erhältlich sind. Komplexe Anforderungen müssen daher häufig nicht selbst entwickelt werden.
View State
ASP.NET unterstützt mit der ViewState-Technik eine erweiterte Möglichkeit, Speicherinhalte zwischen einzelnen Seitenaufrufen zu erhalten. Während mit der Session-State-Technik bei Active-Server-Pages bisher nur eine von den Seitenaufrufen losgelöste Speicherverwaltung existierte, hat der Entwickler bei ASP.NET die Möglichkeit, Speicherinhalte in einer ViewState-Collection abzulegen, um beim nächsten Seitenaufruf darauf zuzugreifen. Im Gegensatz zum Session-State wird der ViewState nicht auf dem Server, sondern in der zurückgegebenen Seite gespeichert.
Mit der von ASP.NET unterstützten ViewState-Technik erhalten Controls ihren Status auch über aufeinander folgende Seitenaufrufe hinweg. Das nimmt Entwicklern die Arbeit ab, dies selbst umsetzen zu müssen. Ein ähnliches Konzept verfolgt Sun mit den JavaServer Faces (JSF).
WebParts
Zusätzlich bietet ASP.NET das Konzept der WebParts. Mit diesen können Intranets erstellt werden, in denen jeder Benutzer selbst konfiguriert, was er an welcher Stelle der Seite sehen will.
Code-Beispiel
ASPX-Datei
Der nachfolgende Beispielcode erzeugt bei Ausführung auf dem mitgelieferten Webserver von Visual Studio eine grundlegende Ausgabe am Bildschirm; diese folgt den Standardinhalten, die Microsoft beim Anlegen einer neuen ASPX-Seite (in ASP.NET 4) generiert.
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ASP.NET_Beispiel._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> </source> <source lang="XML"> <h2> Welcome to ASP.NET! </h2> <p> To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>. </p> <p> You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409" title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>. </p>
</asp:Content>
Code-Behind-Datei
Zu dem gezeigten ASP-Code gehört der nachfolgend zitierte Quellcode, der in der Code-Behind-Datei gespeichert ist. In diesem Fall kommt die Programmiersprache C# zum Einsatz, VB.NET ist dazu wie beschrieben eine gängige Alternative.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ASP.NET_Beispiel { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } } }
Autogenerierte ".designer.cs"-Datei:Ebenfalls erzeugt wird eine
Default.aspx.designer.cs
, die stets autogeneriert wird anhand der ASPX-Vorlage. Da der Programmierer an dieser Datei nichts ändert (bzw. seine Änderungen überschrieben würden), ist deren Quelltext hier nicht aufgezeigt.Entwicklungsumgebungen
Tool unterstützte ASP.NET Version Lizenz Plattform Microsoft Visual Studio 2010 2.0, 3.5, 4.0 kommerziell Windows Microsoft Visual Studio 2008 2.0, 3.5 kommerziell Windows Microsoft Visual Studio 2005 2.0 kommerziell Windows Visual Web Developer Express 2010 4.0 kostenlos Windows Visual Web Developer Express 2008 2.0, 3.5 kostenlos Windows SharpDevelop 1.1, 2.0 open-source Windows MonoDevelop 1.1, 2.0 open-source Windows, hauptsächlich Linux, BSD Embarcadero Delphi kommerziell Windows Borland C# Builder kommerziell Windows Microsoft WebMatrix kostenlos Windows Nur noch von historischem Interesse ist das von Microsoft unterstützte Community-Projekt ASP.NET Web Matrix, eine Entwicklungsumgebung für ASP.NET 1.0 und 1.1. Für neuere ASP.NET-Versionen empfiehlt Microsoft stattdessen den Einsatz von Visual Web Developer Express als kostenloser Entwicklungsumgebung oder das für Einsteiger geeignete Microsoft WebMatrix.[4][5]
Ergänzende Technologien
Das ASP.NET SOAP Extension Framework ermöglicht es ASP.NET Komponenten, SOAP-Nachrichten zu verarbeiten.
Mono
Im Zusammenhang mit Linux ist das Mono-Projekt hervorzuheben, das ASP.NET (bzw. das .NET-Framework ganz allgemein) plattformunabhängig macht. Derzeit sind ASP.NET 2.0, ASP.NET MVC und ASP.NET AJAX implementiert.[6]
Silverlight als Ergänzungsoption
In Ergänzung zu den etablierten Webtechnologien, auf die ASP.NET zurückgreift - also HTML, CSS und JavaScript - hat Microsoft die Technologie Silverlight entwickelt.
Silverlight (vormals WPF/E) ist ähnlich Flash ein Browserplugin, das die Restriktionen von HTML zu umgehen versucht. Im Gegensatz zu Flash wird allerdings der Inhalt (Oberfläche, Animation oder Skript) des Applets in XML zum Browser geschickt (WPF, Windows Presentation Foundation). Dies hat zur Folge, dass solche Seiten auch problemlos mit serverseitigem Code generiert werden können, wenngleich hierfür Tools (Expression Blend) verwendet werden.
Wie bei ASP.NET ist auch die Silverlight-Entwicklung im SDK Microsoft Visual Studio die von Microsoft empfohlene Art der Programmierung.
Moonlight ist die Entsprechung von Silverlight im Mono-Projekt.
MVC-Plugin
Microsoft bietet zu ASP.NET ein MVC-Plugin an, mit dessen Hilfe dynamische Webseiten besonders klar in die drei Bereiche Model (Datenmodell), View (Ansicht) und Controller (Steuerung) gegliedert werden. Dies wird durch die zugrunde liegende Architektur eingefordert und ermöglicht klares Separation of Concerns. MVC unterstützt darüber hinaus auch in besonderer Weise den Ansatz der testgetriebenen Entwicklung, da mit dem MVC Plugin für die Unit Tests kein Webserver nötig wird (im Gegensatz zur Situation bei WebForms)[7].
Webserver
- Microsoft Visual Studio .NET und Visual WebDeveloper Express enthalten ab der Version 2005 einen eigenen Webserver, weshalb zum Entwickeln mit diesen Produkten kein IIS mehr benötigt wird.
- Internet Information Services (IIS 5.0/6.0/7.0) ab Windows 2000 (für Windows NT 4 und älter, sowie für Windows 9x gibt es keine Unterstützung). Im Gegensatz zu den IIS der Version 5 ist ASP.NET unter IIS 6 ab Windows Server 2003 direkt implementiert, wodurch deutliche Performance-Verbesserungen erreicht werden konnten. Die IIS sind – in eingeschränkter Form – auch in manchen Consumer-Versionen von Windows enthalten (Windows XP Professional, Vista ab Edition Home Premium).
- XSP-Webserver (Teil des Mono-Projektes). Dieser Server steht für Windows und Linux zur Verfügung und kann über das Apache-Modul mod_mono an den Apache Webserver angebunden werden. XSP ist in C# geschrieben, steht unter einer Open Source-Lizenz und unterstützt ASP.NET 2.0 (ohne Webparts).
- Cassini-Webserver. Dieser Webserver wurde von Microsoft als schlankes Beispielprogramm zur Verfügung gestellt und soll Entwicklern Einblicke in die Funktionsweise des ASP.NET Hosting geben. Cassini ist in C# implementiert und steht unter einer Shared-Source-Lizenz.
Vorteile
- Da das .NET-Framework selbst viele Funktionen zur Verfügung stellt, sind viele Anforderungen (wie etwa Bildbearbeitung oder XML-Verarbeitung) im Gegensatz zu beispielsweise PHP ohne Installation von zusätzlichen Libraries möglich.
- Durch die Abstraktion der auf einer Webseite verwendeten Funktionalitäten (von Textbox über Buttons bis kompletten Kalendercontrol) in Servercontrols können browserunabhängige Webseiten erstellt werden. Zusätzlich kann mit den CSS Friendly Adaptors auf den generierten HTML-Code (auch browserspezifisch) von Standardcontrols Einfluss genommen werden, so dass diese standardkonformes HTML erzeugen, das etwa keine Tabellen zur Layoutgestaltung verwendet. Durch die Abstraktion kann zum Beispiel eine komplette Rechteverwaltung (User/Roles) – mitsamt Login, „Passwort vergessen“, und ähnlichem – fast ohne selbstgeschrieben Code, zumindest aber mit vorgefertigten Klassen in die eigene Seite implementiert werden. Auch ein Schutz von Dateien kann damit implementiert werden.
Nachteile
- Da ASP.NET in vielen Bereichen andere Konzepte als verbreitete Skriptsprachen verfolgt, stellt die Einarbeitung für Entwickler, die von anderen Skriptsprachen kommen, zusätzlichen Aufwand dar.
- Mit ASP.NET ist man de facto an einen unter Betriebssystemen der Firma Microsoft laufenden Server gebunden. Es gibt zwar freie .NET (und ASP.NET)-Implementierungen, diese sind aber (noch) nicht hundertprozentig kompatibel, und hinken daher neuen .NET-Versionen immer zumindest einige Monate hinterher. Weil jedoch PHP mit Abstand die meistverwendete Skriptsprache für Webprogrammierung ist, haben sich viele Webhoster, speziell im Bereich Shared Hosting, eher auf PHP/MySQL-Hosting auf Linux-Plattformen konzentriert. Dies schränkt die Wahlfreiheit beim Hosting ein.
- Da es sich um proprietäre Technologien handelt, werden in aller Regel Lizenzgebühren für das Serverbetriebssystem fällig. Für die Entwicklungsumgebung gilt dies auch, sofern sich der Programmierer nicht auf die funktionsreduzierten freien Versionen von Visual Studio beschränken möchte.
Versionsgeschichte
ASP.NET trat 2002 mit der ersten Version die Nachfolge des in die Jahre gekommenen ASP (Active Server Pages) an, hat aber heute außer dem Namen nicht mehr viel mit der alten Technologie zu tun. ASP.NET ist seit 2002 in der Version 1.0 „final“. Seit 28. Oktober 2005 gibt es die finale Version von ASP.NET 2.0. Mit ASP.NET 2.0 wird wesentlich weniger Code (laut Microsoft bis zu 70 Prozent [8]) benötigt, um eine dynamische Web-Site zu erstellen. Mit Version 3.5 wurde ASP.NET um Unterstützung für AJAX und LINQ erweitert.
Version korrespondierende Visual Studio-Version Veröffentlichung 4.0 Microsoft Visual Studio 2010 April 2010 3.5 Microsoft Visual Studio 2008 November 2007 2.0 Microsoft Visual Studio 2005 November 2005 1.1 Microsoft Visual Studio .NET 2003 April 2003 1.0 Microsoft Visual Studio .NET Januar 2002 Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige VersionZukunft
Microsoft hat in den Jahren 2010 und 2011 die Entwicklung des MVC-Plugins vorangetrieben (Release 3) und ASP.NET 4.0 vorgestellt. Beim MVC-Plugin sind Einflüsse neuerer Web-Frameworks wie Ruby on Rails anhand von Ähnlichkeiten in den Paradigmen (z.B. Scaffolding) deutlich erkennbar.
Über Zukunftsausblicke betreffs ASP.NET schrieb Schwichtenberg in der Online-Ausgabe Heise Developer [9] im Rückblick auf die Microsoft Professional Developer Conference 2009 in Los Angeles:
- Scott Hunter aus dem Entwicklungsteam präsentierte für den Nachfolger von ASP.NET 4.0 einige Ideen. Dazu gehören die Unterstützung für HTML 5, CSS Sprites, Datenzugriff nach dem Active-Record-Prinzip sowie zahlreiche Hilfsklassen, die typische Aufgaben wie Hintergrundaufgaben und das Datei-Upload verbessern. Immer noch nicht gezeigt wurden die seit Langem erwarteten Client-Steuerelemente, die mit JavaScript genauso arbeiten wie die Server-Steuerelemente mit .NET-Code.
Einzelnachweise
- ↑ Staff: Overview of ASP.NET and Web Forms, Microsoft. 2001. Abgerufen am 5. Juni 2011.
- ↑ Code Behind vs. Code Inline. Microsoft .NET Framework. Microsoft. Abgerufen am 22. November 2010.
- ↑ ASP.NET Web Page Syntax Overview. Microsoft .NET Framework. Microsoft. Abgerufen am 22. November 2010.
- ↑ http://www.asp.net/downloads/archived/web-matrix/
- ↑ http://www.microsoft.com/web/webmatrix/
- ↑ http://www.mono-project.com/ASP.NET www.mono-project.com/ASP.NET
- ↑ http://msdn.microsoft.com/en-us/library/gg416511(VS.98).aspx
- ↑ http://www.microsoft.com/germany/windowsserver2003/uebersicht/webplatform.mspx
- ↑ http://heise.de/-868240
Literatur
- Holger Schwichtenberg: Microsoft ASP.NET 4.0 mit Visual C# 2010. Microsoft Press Deutschland, Unterschleißheim 2011, ISBN 978-3866455306
- Jana Frank, Patrick A. Lorenz: ASP.NET 3.5 mit AJAX. Carl Hanser Verlag, München 2008, ISBN 3-446-41199-2
- Chris Hart, John Kauffman, Dave Sussman and Chris Ullman: Beginning ASP.NET 2.0. Wiley Publishing, Inc., 2006, ISBN 0-7645-8850-8 (eng.)
- Hannes Preishuber: ASP.NET 2.0 Crash Kurs. Microsoft Press, 2006, ISBN 3-86063-988-9
- Holger Schwichtenberg: ASP.NET 2.0 – Das Entwicklerbuch. Microsoft Press, 2006, ISBN 3-86063-544-1 (VB) und ISBN 3-86063-546-8 (C#)
- Christian Wenz, Andreas Kordwig, Christian Trennhaus: Jetzt lerne ich ASP.NET. Markt und Technik, Oktober 2004, ISBN 3-8272-6813-3
Weblinks
-
Wikibooks: Webentwicklung mit ASP.NET – Lern- und Lehrmaterialien
- Offizielle Website von Microsoft für ASP.NET
- MSDN Developer Center für Entwickler
- Einstieg in ASP.NET, kostenloses Online-Buch
- Seite zum Verständnis der ViewState-Technik (englisch)
- Tutorial: ASP.NET MVC3 Projekt erstellen (erster Einstieg, englisch)
- Microsofts kostenloses Visual Webdeveloper Express (englisch)
Wikimedia Foundation.