Ein WebService Client kann eine x-beliebige Komponente oder Anwendung sein die auf einen WebService zurückgreift. Diese Web Service Clients müssen natürlich keine klassischen Client Anwendungen sein, sondern sind häufig andere Web Applikationen (oder auch wieder Web Services). Wie im ersten Teil ("EuroKonverter als WebService") bereits angesprochen basieren WebServices auf offenen Standardprotokollen wie das Simple Object Access Protocol (SOAP) und HTTP. Um Kenntnisse in SOAP zu vertiefen empfehle ich Ihnen das SOAP SDK von Microsoft herunterzuladen. Dort wird genau erklärt wie eine SOAP Message aufgebaut ist. Generell wird ein WebService über die Service Description Language (SDL) definiert, also was für Nachrichten er unterstützt und welche Protokolle der WebService benutzt um solche Nachrchten zu empfangen. Dieses wird als XML Dokument zurückgeliefert. Neben den Web Service Basis Klassen bietet das .NET Framework von Microsoft auch einige Tools die man benutzen kann um auf Web Services programmatisch zuzugreifen. Das wichtigste Tool hierbei ist das Tool WebServiceUtil.exe.
Dabei wird von dem Tool das SDL Dokument des Web Services geladen und eine sogenannte Proxy Klasse erzeugt, die auf den WebService zugreifen kann. Allerdings gibt es bei dem Tool eine Einschränkung: Es kann nur Proxy Klassen für Web Services erzeugen die per SOAP Messages senden und empfangen.
Bei folgendem Aufruf aus der Kommandozeile wird ein Proxy für unseren EuroKonverter erzeugt und zwar in C#.
WebServiceUtil.exe /c:proxy /pa:http://w2k_dotNet/WebApp_1/EuroKonverter.asmx?SDL |
Wollen Sie die Proxy Klasse in einer anderen .NET Sprache, müssen Sie ein Language Attribut mitgeben:
Kopieren Sie die Proxy Klasse in das Verzeichnis Ihrer Anwendung und sie könne die Klasse in Ihrem Projekt einbinden. In meinem Fall handelt es sich um eine ASP.NET Seite die eine TextBox beinhaltet in der der DM Betrag eingeben wird. Die eigentliche Funktionalität steckt im Click Handler des Buttons:
EuroKonverter myEuro = new EuroKonverter(); //Instanzieren des WebServices Decimal dmBetrag = TextBox1.Text.ToDecimal(); // Auslesen des DM Betrages lblEuro.Text = myEuro.DM_to_Euro(dmBetrag).ToString(); //Ausgabe des EuroBetrages in das Label |