ASP.NET (ActiveServerPages.NET) ist einWebframework vonMicrosoft zur Entwicklungdynamischer Webseiten,Webanwendungen undWebservices. ASP.NET ist Nachfolger vonActive Server Pages (ASP) und erschien 2002 in der ersten Version. ASP.NET ist Teil des klassischen.Net-Frameworks bis zur aktuellen Version 4.8. Parallel gibt es seit 2015ASP.NET Core, ein quelloffenes separates Framework, das auch offiziellGNU/Linux undmacOS unterstützt.[3][4] In .NET 5.0, das auf der.NET-Core-Technologie basiert, entfallen Teile des bisherigen ASP.NET (ASP.NET Webforms, ASP.NET Webservices).[5]
ASP.NET kommt auf ca. 7,6 % aller Websites als serverseitige Programmiersprache zum Einsatz und liegt damit nachPHP (77,4 %) und vor dem drittplatziertenRuby (5,7 %) auf dem zweiten Platz der am häufigsten verwendeten serverseitigen Sprachen zum Erstellen von Webseiten (Stand: 11. Oktober 2022).[6]
ASP.NET gehört zum.Net-Framework und stellt eine Methode dar, um .NET-Anwendungen inIIS oder anderen mit ASP.NET kompatiblen Webservern zu verwalten („hosting“). ASP.NET stellt hierbei Klassen zur Verfügung, die allen Webanwendungen gemeinsam sind, wie etwa dieAuthentifizierung undAutorisierung von Benutzern. Das wichtigste Element ist hierbei dieHTTP-Laufzeitumgebung, die HTTP-Anfragen bearbeitet.
Mit ASP.NET könnenWebanwendungen in von .NET unterstützten Sprachen (theoretisch alleCLR-kompatiblen Sprachen) erstellt werden, gebräuchlich sind nahezu ausschließlichobjektorientierte Sprachen wieC# undVB.NET. Eingeschränkt wird die Sprachwahl meistens nur von der jeweiligenEntwicklungsumgebung. ASP.NET ist somit keine Programmiersprache, sondern eine Bündelung von Techniken. ASP.NET-Sprachen werden nicht interpretiert, sondern inCIL übersetzt und kompiliert.
Auf die ASP.NET-Plattform setzen die jeweiligen Verfahren, wie ASP.NET WebForms, ASP.NET AJAX, ASP.NET MVC, ASP.NET Dynamic Data, ASP.NET WebAPI und ASP.NET SignalR auf, welche jeweils als HTTP-Handler implementiert sind.
DieWeb Forms[7] 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 „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 einKalendercontrol 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 wiePHP,JSP undASP. Allerdings sollte der Entwickler möglichst auf im HTML-Code verschachtelten Programmcode verzichten, da derCompiler 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.[8] 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 FunktionRender überschreiben und sich hier (vollkommen unabhängig von der Design-Ansicht) HTML selbst erzeugen.
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-Datei entspricht dabei stets genau dem Namen der „Code-Behind“-Datei, unterschiedlich sind nur dieDateinamenserweiterungen.Microsoft Visual Studio und andereIDEs 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überSkriptsprachen, bei denen die Überprüfung auf Fehler erst zur Laufzeit stattfindet. In der „Code-Behind“-Datei hat der Entwickler die Möglichkeit, auf unterschiedlichste Ereignisse („events“) im Lebenszyklus einer ASP-Web-Forms-Web-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 (mitEvents, 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“ imMVC-Muster erlaubt diese Trennung eine bessere arbeitsteilige Entwicklung zum Beispiel durch eine Aufteilung zwischen Webdesigner, der die ASPX-Datei bearbeitet, und Programmierer, der die „Code-Behind“-Datei erstellt. Die neuere KomponenteASP.NET MVC betont konzeptionell in noch viel stärkerer Form diese Art desSeparation of Concerns.
Mit Directives ist es möglich, in einer ASPX-Datei zu deklarieren, wie ASP.NET diese Seite verarbeiten soll.[9] 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 enthält das Code-Beispiel in diesem Artikel die<%@ Page %> Directive in der ersten Zeile.
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-Dateien enthalten typischerweise (X)HTML-Code 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 Ereignisse („events“) mit, 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“ imWebbrowser ist nicht möglich.
Programmierer können selbstdefinierte Controls („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 eineDLL-Datei 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 brauchen daher häufig nicht selbst entwickelt zu werden.
ASP.NET unterstützt mit derViewState-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ütztenViewState-Technik behalten Controls ihren Status auch über aufeinander folgende Seitenaufrufe hinweg. Das nimmt Entwicklern die Arbeit ab, dies selbst umzusetzen. Ein ähnliches Konzept verfolgt Sun mit denJakarta Faces (JSF).
Der nachfolgende Beispielcode erzeugt bei Ausführung auf dem mitgelieferten Webserver vonVisual Studio eine grundlegende Ausgabe am Bildschirm; diese folgt den Standardinhalten, die Visual Studio beim Anlegen einer neuen ASPX-Seite (in ASP.NET 4) generiert.
<%@PageTitle="HomePage"Language="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="ASP.NET_Beispiel._Default"%><asp:ContentID="HeaderContent"runat="server"ContentPlaceHolderID="HeadContent"></asp:Content><asp:ContentID="BodyContent"runat="server"ContentPlaceHolderID="MainContent"><h2>WelcometoASP.NET!</h2><p>TolearnmoreaboutASP.NETvisit<ahref="http://www.asp.net"title="ASP.NET Website">www.asp.net</a>.</p><p>Youcanalsofind<ahref="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409"title="MSDN ASP.NET Docs">documentationonASP.NETatMSDN</a>.</p></asp:Content>
Code-Behind-Datei
Zum gezeigten ASP-Code gehört der nachfolgend gezeigte 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.
Ebenfalls anhand der ASPX-Vorlage wird eine Datei namensDefault.aspx.designer.cs erzeugt. Da der Programmierer diese Datei nicht ändern soll (weil seine Änderungen bei der nächsten Generierung überschrieben würden), ist deren Quelltext hier nicht gezeigt.
ASP.NET bietet das Konzept derWebparts. Mit diesen könnenIntranets erstellt werden, in denen jeder Benutzer selbst konfiguriert, was er an welcher Stelle der Seite sehen will.
ASP.NET AJAX ist ein Teil von ASP.NET, mit dem sichAjax-Webseiten unter ASP.NET entwickeln lassen. Er umfasst Klassenbibliotheken und Steuerelemente.
ASP.NET Webservices ist ein Teil-Framework zum Entwickeln vonWebservices auf Basis der StandardsSOAP,WSDL undXSD. Es erschien erstmals als Teil von .Net-Framework 2.0. Entsprechend der Dateinamenserweiterung von solchen Webservices wird ASP.NET Webservices auch alsASMX bezeichnet.[10]
ASP.NET Dynamic Data ist ein auf Web Forms basierendes Framework zur Erstellung von Webanwendungen, das zur Laufzeit automatisch das zugrunde liegendeDatenmodell ermittelt und basierend darauf das Verhalten der Benutzeroberfläche festlegt. Es ist nur ein verhältnismäßig geringer Programmieraufwand erforderlich.[11]
Das ASP.NET SOAP Extension Framework ermöglicht es ASP.NET-Komponenten,SOAP-Nachrichten zu verarbeiten. Für die Erstellung von und die Verbindung mit SOAP-Webservices empfiehlt sich jedoch der Einsatz derWindows Communication Foundation (WCF).
Mit der Entwicklung von .NET Core wurde auch ASP.NET grundlegend überarbeitet. So kann man damit auch Web-Anwendungen für die (von .NET Core unterstützten) Nicht-Windows-Plattformen entwickeln. Das neue Framework heißt seit Januar 2016 ASP.NET Core (zeitweilig auch ASP.NET 5). Im Unterschied zu ASP.NET wird ASP.NET Core alsOpen-Source-Projekt entwickelt. Bis zur Version 2.2 konnte man ASP.NET Core noch zusammen mit neueren Versionen des klassischen.Net-Framework verwenden, ab 3.0 jedoch nur noch mit dem neuen, modularen Framework.NET Core.[13] Ebenso sind Anwendungen, die mit ASP.NET entwickelt wurden, nur zum klassischen .Net-Framework kompatibel.
ASP.NET Core enthält die FrameworksASP.NET MVC undASP.NET Web Pages.ASP.NET Web Api wird in das MVC-Framework integriert. Web Forms wurde letztmals mit der .NET Version 4.8 unterstützt und wird nicht mehr auf .NET Core portiert.[14]
Ab der Version 2 gibt es die Möglichkeit das MVC-Pattern mit Hilfe sogenannter „Razor Pages“ zu vereinfachen.[15][16] Dieser Ansatz stellt die von Microsoft empfohlene Vorgehensweise dar.[17]
Mit der Version 2.1 wurde im Mai 2018 neben zahlreichen kleineren Verbesserungen auch das Signal.R Framework (siehe unten) in einer ASP.NET Core Version bereitgestellt (ASP.NET Core SignalR).[18]
Mit der Version 3 wurde ein neues Framework namensServer-side Blazor hinzugefügt, das die Entwicklung interaktiver Weboberflächen mit C# (ohne notwendigeJavaScript-Programmierung) unterstützt. Zur Kommunikation wird das auf Websockets basierende Signal.R verwendet.[19][20] Damit kann ein Blazor-Server auch asynchron Nachrichten an den Client (Browser) übergeben, um in den HTML-Seiten dargestellte Inhalte zeitnah und ohne Benutzerinteraktion zu aktualisieren. Während der Entwicklung des Frameworks wurde auch zeitweise der NameRazor Components verwendet. Daneben gibt es seit Mai 2019 auch die VarianteBlazor Webassembly, bei der die Weboberfläche und C# Code mit Hilfe vonWebAssembly direkt im Browser ausgeführt wird.[21] Dies geschieht wahlweiseStandalone oder mit Unterstützung durch einen ASP.NET Core Server.[22][23] Optional kann die Webanwendung auch alsProgressive Web App (PWA) installiert werden und somit ohne Browser laufen.[24]
DasASP.NET MVC ist eine Implementierung desMVC-Patterns und erlaubt es, dynamische Webseiten besonders klar in die drei BereicheModel (Datenmodell),View (Ansicht) undController (Steuerung) zu gliedern. Dies wird durch die zugrundeliegende Architektur eingefordert und ermöglicht klaresSeparation of Concerns. MVC unterstützt darüber hinaus auch in besonderer Weise den Ansatz der testgetriebenen Entwicklung, da mit ASP.NET MVC für dieUnit Tests kein Webserver benötigt wird (im Gegensatz zur Situation bei WebForms).[25]
Ursprünglich wurde ASP.NET MVC als Erweiterungsmodul für Webbrowser („Plugin“) ausgeführt, welches auf WebForms aufsetzt. Mittlerweile ist ASP.NET MVC jedoch ein fester Bestandteil des ASP.NET-Frameworks und von WebForms unabhängig.
ASP.NET Web API ermöglicht es,REST-Web-Dienste zu implementieren. Daten werden hierbei in Form vonJSON,XML oderOData übertragen. EinJavaScript-Skript auf einer Webseite kann mit Hilfe vonAjax oderAJAJ auf diese Services zugreifen und damit Daten im Hintergrund übertragen. Dies ermöglicht die Erstellung von hochdynamischenRich-Client-Webseiten.
Ab der Version ASP.NET Core 1.0 gehört Web API mit zum Framework ASP.NET MVC.
ASP.NET SignalR überträgt Datenbidirektional zwischen dem Client und dem Server und basiert auf dem NetzwerkprotokollWebSockets. Wenn der Browser des Clients WebSockets nicht beherrscht, verwendet SignalR andere Methoden der Datenübertragung (englisch:Fallback). SignalR vereinfacht damit die Implementierungen von Echtzeitanwendungen wieChat oderVideokonferenzen.[26]
ASP.NET Web Pages ist ein Framework zum Erstellendynamischer Webseiten. Zum Erstellen von solchen Seiten lässt sich das ToolMicrosoft WebMatrix verwenden.Razor ist eine Syntax der Programmiersprachen C# und Visual Basic .NET, die beim Erstellen von Web Pages angewandt wird.[27]
ASP.NET WebHooks ist ein quelloffenes Framework, das das VerfahrenWebHooks implementiert und auf ASP.NET Web API basiert. Es erleichtert den Konsum von Ereignissen von Webservices.[28]
ASP.NET trat 2002 mit der ersten Version die Nachfolge des in die Jahre gekommenenASP (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 fertige Version von ASP.NET 2.0. Mit ASP.NET 2.0 wird wesentlich weniger Code (laut Microsoft bis zu 70 Prozent)[29] benötigt, um eine dynamische Web-Site zu erstellen. Mit Version 3.5 wurde ASP.NET um Unterstützung fürAjax undLINQ erweitert. Die Version 4.5 erschien zeitgleich mit der Version des .Net-Frameworks am 15. August 2012.
Für kleinere Firmen und unabhängige Entwickler stehen seit dem 12. November 2014 kostenlose Community-Editionenvon Visual Studio zur Verfügung, die von der Funktionalität den „Professional“-Versionen entsprechen.
Nur noch von historischem Interesse ist das von Microsoft unterstützte Community-ProjektASP.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 vonVisual Web Developer Express als kostenloser Entwicklungsumgebung oder das für Einsteiger geeignete Microsoft WebMatrix.[30][31]
Microsoft Visual Studio .NET undVisual WebDeveloper Express enthalten ab der Version 2005 einen eigenen Webserver, weshalb zum Entwickeln mit diesen Produkten keinIIS mehr benötigt wird.
Internet Information Services (IIS 5.0/6.0/7.0) abWindows 2000 (fürWindows NT 4 und älter, sowie fürWindows 9x gibt es keine Unterstützung). Im Gegensatz zu den IIS der Version 5 ist ASP.NET unter IIS 6 abWindows Server 2003 direkt implementiert, wodurch deutliche Leistungsverbesserungen erreicht werden konnten. Die IIS sind – in eingeschränkter Form – auch in manchen nichtprofessionellen Versionen von Windows enthalten (Windows XP Professional,Vista ab EditionHome Premium).
Apache-Webserver Mit den Apache-Modulenmod_aspdotnet undmod_mono kann ASP.NET in den Apache-Webserver eingebunden werden.[32] Diese funktionieren auch unter Linux oderBSD.
XSP-Webserver (Teil desMono-Projektes). Dieser Server steht für Windows und Linux zur Verfügung und kann über dasApache-Modulmod_mono an den Apache-Webserver angebunden werden. XSP ist in C# geschrieben, steht unter einerOpen-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 einerShared-Source-Lizenz.
Dieser Abschnitt ist nicht hinreichend mitBelegen (beispielsweiseEinzelnachweisen) ausgestattet. Angaben ohne ausreichenden Beleg könnten demnächst entfernt werden. Bitte hilf Wikipedia, indem du die Angaben recherchierst undgute Belege einfügst.
Da das.Net-Framework selbst viele Funktionen zur Verfügung stellt, sind viele Anforderungen (wie etwaBildbearbeitung oderXML-Verarbeitung) im Gegensatz zu beispielsweisePHP ohne Installation von zusätzlichenLibraries möglich.
Durch die Abstraktion der auf einer Webseite verwendeten Funktionalitäten (von Textbox über Buttons bis vollständigen Kalender-Control) in Servercontrols können browserunabhängige Webseiten erstellt werden. Zusätzlich kann mit denCSS 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 vollständigeRechteverwaltung(User/Roles) – mitsamtNutzeranmeldung, „Passwort vergessen“, und Ähnlichem – fast ohne selbstgeschriebenen Code, zumindest aber mit vorgefertigtenKlassen in die eigene Seite implementiert werden. Auch ein Schutz von Dateien kann damit implementiert werden.
Mit ASP.NET ist man bisher 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 vieleWebhoster, speziell im Bereich “Shared Hosting”, eher auf PHP/MySQL-Hosting auf Linux-Plattformen konzentriert. Dies schränkt die Wahlfreiheit beim Hosting ein. Mit dem plattformunabhängigen ASP.NET Core entfällt die Einschränkung auf Windows-Server.
Für das Hosting auf Windows Servern werden Lizenzgebühren für das Serverbetriebssystem fällig, die Provider in irgendeiner Form an den Kunden weitergeben müssen.
In Ergänzung zu den etablierten Verfahren, auf die ASP.NET zurückgreift – alsoHTML,CSS undJavaScript –, hat MicrosoftSilverlight entwickelt. Silverlight (vormals WPF/E) ist ähnlichFlash einBrowser-Plug-in, 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 Programme(Expression Blend) verwendet werden.
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.[33]
Moonlight ist die Entsprechung von Silverlight im Mono-Projekt.