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.