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.