ASP.NET-Webservice (ASMX)
Eintrag zuletzt aktualisiert am: 12.10.2014
Die Unterstützung für die Bereitstellung von
XML-Webservices (
SOAP-Webservices) wurde im
.NET Framework ursprünglich (ab
.NET 1.0) durch
ASP.NET (
Active Server Pages .NET) realisiert in Form von Dateien mit der Dateiextension .asmx. Daher wird ASMX synonym für die Bereitstellung von
XML-Webservices mit .NET verwendet.
Ab
.NET 3.0 gibt es mit der
Windows Communication Foundation (
WCF) eine mächtigere Alternative für die Definition von Webservices in .NET.
WCF bietet insbes. mehr Optionen hinsichtlich
Serialisierung, Transport, Sicherheit und Zuverlässigkeit.
Details
Neben den
Webforms gibt es in
ASP.NET noch einen weiteren Anwendungstyp:
ASP.NET Webservices.
Die Unterstützung für die Bereitstellung von
XML-Webservices (
SOAP-Webservices) wird im
.NET Framework ab Version 1.0 durch
ASP.NET realisiert in Form von Dateien mit der Dateiextension .asmx. Daher wird ASMX synonym für die Bereitstellung von Webser-vices mit .NET verwendet.
Webservices sind ein .NET-Anwendungstyp, der im ASP
.NET Runtime Host läuft. Genau wie
Webforms-Anwendungen werden auch Webservices in Form von Dateien auf einem
Webserver realisiert. Die Dateier-weiterung eines Webservice lautet aber nicht .aspx, sondern .asmx. Die Abkürzung ASMX wird daher oft mit .NET-basierten Webservices gleichgesetzt. Unter dem Schlagwort "
ASMX Version 2.0" wird die Webservice-Implementierung in
.NET 2.0 und höher zusammengefasst.
Nach
.NET 2.0 sind keine Neuerungen mehr erschienen. ASMX hat in der
Windows Communication Foundation (
WCF) ab
.NET 3.0 einen besseren Ersatz. Vorerst ist ASMX aber weiterhin aus Kompatibilitätsgründen im
.NET Framework enthalten.
Implementierung
Ein Webservice ist eine Klasse, die ihre
Methoden auf einem
Webserver zum Aufruf anbietet. Der Aufruf erfolgt via
Simple Object Access Protocol (SOAP). SOAP ist ein XML-Format, dass einen
Remote Procedure Call (
RPC) einschließlich des
Marshalling/Unmarshalling der Parameter und Rückgabewerte beschreibt.
Webservices sind die Lösung für das Problem, dass visuelle Benutzerschnittstellen in Form von
HTML -Seiten mit Grafiken für die Informationsverarbeitung durch Menschen, aber nicht für die Informationsverarbeitung durch Software geeignet sind. Wenn eine Software Informationen aus
HTML-Seiten auswerten will, muss sie per „
Screen Scraping" mühsam die Daten aus der Oberfläche herausfiltern. Solche Daten sind naturgemäß nicht nur sehr schwach typisiert, sondern das Hauptproblem liegt darin, dass auch kleine Änderungen am Layout der Seite eine (große) Änderungen der „
Screen Scraping"-Software nach sich ziehen können.
SOAP-basierte Webservices sind die geeignete Alternative, weil sie einen Aufruf einer beliebigen
Methode, die in einer per XMLdefinierten Form auf
Webserver bereitgestellt wird, durch einem beliebigen Client (nicht nur
Webbrowser) ermöglichen. Durch eine
Proxy-Klasse, die sich der
FCL bedient, ist der Aufruf für den Client völlig transparent. Auch auf der Serverseite ist nur geringer Aufwand nötig, um eine beliebige
Methode in einer beliebigen .NET-Klasse per SOAPaufrufbar zu machen.
Die
FCL enthält alle Funktionen, die für das Absenden bzw. das Empfangen eines SOAP-Aufrufs notwendig sind, einschließlich des
Marshalling/Unmarshalling der Parameter/Rückgabewerte.
Ein Webservice wird in
ASP.NET bereitgestellt durch eine Datei mit der Extension .asmx. Auch dazu kann eine Code-Behind-Dateigeben (z.B. .asmx.vb oder .asmx.cs). In diesem Fall enthält die ASMX-Datei nicht mehr als einen Verweis auf die Code-Behind-Datei.
Einige der im vorhergehenden Kapitel vorgestellten Konzepte von
ASP.NET Webforms gelten auch für Webservices. Die Ausführung über den Übersetzungsvorgang, die verwendbaren
Programmiersprachen und die Konfiguration gelten an. Auch die Zustandsverwaltung auf Basis der Session- und Application-Collections sind für Webservices verfügbar.
Selbstverständlich gelten alle auf
Steuerelemente bezogenen Ausführungen für Webservices nicht, da für ein Webservice keine Benutzeroberflächeauf dem Server erzeugt wird.