ASP.NET
ASP.NET (Active Server Pages .NET) ist ein Web Application Framework von Microsoft, mit dem sich dynamische Webseiten, Webanwendungen und Webservices entwickeln lassen. ASP.NET ist Nachfolger von Active 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 2015 ASP.NET Core, ein quelloffenes separates Framework, das auch offiziell GNU/Linux und macOS 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 nach PHP (77,4 %) und vor dem drittplatzierten Ruby (5,7 %) auf dem zweiten Platz der am häufigsten verwendeten serverseitigen Sprachen zum Erstellen von Webseiten (Stand: 11. Oktober 2022).[6] ASP.NETÜberblick![]() ASP.NET gehört zum .NET Framework und stellt eine Methode dar, um .NET-Anwendungen in IIS 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 die Authentifizierung und Autorisierung von Benutzern. Das wichtigste Element ist hierbei die HTTP-Laufzeitumgebung, die HTTP-Anfragen bearbeitet. 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 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. ASP.NET Web FormsDie Web Forms[7] bilden den Grundbaustein der Entwicklung von Webinhalten mit ASP.NET in seiner klassischen Form. Web Forms sind in Dateien mit der Dateiendung Zusätzlich können dynamische Code-Inhalte, die vom Server ausgeführt werden sollen, innerhalb einer ASPX-Datei in der Form 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 Code-Behind-ModellMicrosoft empfiehlt die Nutzung des „Code-Behind“-Ansatzes für die dynamischen Code-Anteile. Die „Code-Behind“-Dateien tragen üblicherweise die Dateiendung 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 zum Beispiel durch eine Aufteilung zwischen Webdesigner, der die ASPX-Datei bearbeitet, und Programmierer, der die „Code-Behind“-Datei erstellt. Die neuere Komponente ASP.NET MVC betont konzeptionell in noch viel stärkerer Form diese Art des Separation of Concerns. DirectivesMit 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 User ControlsUser Controls kapseln bestimmte Abschnitte aus Seiten in einer eigenen Datei mit der Endung Individualisierte ControlsProgrammierer 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 eine DLL-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. View StateASP.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 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 den Jakarta Faces (JSF). Code-Beispiel
Der nachfolgende Beispielcode erzeugt bei Ausführung auf dem mitgelieferten Webserver von Visual Studio eine grundlegende Ausgabe am Bildschirm; diese folgt den Standardinhalten, die Visual Studio 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">
<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>
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. 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)
{
}
}
}
Ebenfalls anhand der ASPX-Vorlage wird eine Datei namens Andere Bestandteile
SOAP ExtensionsDas 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 der Windows Communication Foundation (WCF). ASP.NET Core
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 als Open-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 Frameworks ASP.NET MVC und ASP.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 namens Server-side Blazor hinzugefügt, das die Entwicklung interaktiver Weboberflächen mit C# (ohne notwendige JavaScript-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 Name Razor Components verwendet. Daneben gibt es seit Mai 2019 auch die Variante Blazor Webassembly, bei der die Weboberfläche und C# Code mit Hilfe von WebAssembly direkt im Browser ausgeführt wird.[21] Dies geschieht wahlweise Standalone oder mit Unterstützung durch einen ASP.NET Core Server.[22][23] Optional kann die Webanwendung auch als Progressive Web App (PWA) installiert werden und somit ohne Browser laufen.[24] Andere Bestandteile und ErgänzungenDie folgende Frameworks gibt es sowohl für ASP.NET 5 als auch für frühere Versionen. ASP.NET MVCDas ASP.NET MVC ist eine Implementierung des MVC-Patterns und erlaubt es, dynamische Webseiten besonders klar in die drei Bereiche Model (Datenmodell), View (Ansicht) und Controller (Steuerung) zu gliedern. Dies wird durch die zugrundeliegende 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 ASP.NET MVC für die Unit 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 APIASP.NET Web API ermöglicht es, REST-Web-Dienste zu implementieren. Daten werden hierbei in Form von JSON, XML oder OData übertragen. Ein JavaScript-Skript auf einer Webseite kann mit Hilfe von Ajax oder AJAJ auf diese Services zugreifen und damit Daten im Hintergrund übertragen. Dies ermöglicht die Erstellung von hochdynamischen Rich-Client-Webseiten. Ab der Version ASP.NET Core 1.0 gehört Web API mit zum Framework ASP.NET MVC. ASP.NET SignalRASP.NET SignalR überträgt Daten bidirektional zwischen dem Client und dem Server und basiert auf dem Netzwerkprotokoll WebSockets. Wenn der Browser des Clients WebSockets nicht beherrscht, verwendet SignalR andere Methoden der Datenübertragung (englisch: Fallback). SignalR vereinfacht damit die Implementierungen von Echtzeitanwendungen wie Chat oder Videokonferenzen.[26] ASP.NET Web PagesASP.NET Web Pages ist ein Framework zum Erstellen dynamischer Webseiten. Zum Erstellen von solchen Seiten lässt sich das Tool Microsoft WebMatrix verwenden. Razor ist eine Syntax der Programmiersprachen C# und Visual Basic .NET, die beim Erstellen von Web Pages angewandt wird.[27] ASP.NET WebHooksASP.NET WebHooks ist ein quelloffenes Framework, das das Verfahren WebHooks implementiert und auf ASP.NET Web API basiert. Es erleichtert den Konsum von Ereignissen von Webservices.[28] VersionsgeschichteASP.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 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ür Ajax und LINQ erweitert. Die Version 4.5 erschien zeitgleich mit der Version des .NET Frameworks am 15. August 2012.
Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version Entwicklungsumgebungen
Für kleinere Firmen und unabhängige Entwickler stehen seit dem 12. November 2014 kostenlose Community-Editionen von 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-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.[30][31] Webserver
BeurteilungVorteile
Nachteile
SilverlightIn Ergänzung zu den etablierten Verfahren, auf die ASP.NET zurückgreift – also HTML, CSS und JavaScript –, hat Microsoft Silverlight entwickelt. Silverlight (vormals WPF/E) ist ähnlich Flash ein Browser-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. Mono-ImplementierungIm 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. Siehe auchLiteratur
WeblinksWikibooks: Websiteentwicklung mit ASP.NET – Lern- und Lehrmaterialien
Einzelnachweise
|
Portal di Ensiklopedia Dunia