0251 / 590 837 15
info@a-coding-project.de

Tutorial: WebService mit ASP.net erstellen

Vorgestern gab es ein Tutorial, wie man einen WebService mit PHP erstellt. Heute werde ich den gleichen WebService in ASP.net erstellen. So das ihr einmal ein wenig vergleichen könnt. Eins kann ich schonmal vorwegsagen: Es ist um einiges leichter.

WebService anlgen

Um den WebService zu schreiben benutze ich Visual Studio 2005. Dort kann man auf Datei->Neu->Website gehen, um die möglichen ASP.net Projekte erstellen. Bei uns handelt es sich um einen ASP.net-Webdienst:

VS Neuer Webservice

VS Neuer Webservice

Nun haben wir bereits mehrere Dateien erstellt bekommen:

  • Service.vb – beinhaltet den auszuführenden Code (also die Funktion Add)
  • Service.asmx – beinhaltet die Math Dateieigenschaften
  • Web.Config – beihnaltet die Projekteigenschaften.

Klassen & Dateien umbenennen

Wir wollen unseren Service ja nicht Service nennen, sondern Math. Hierzu müssen wir als erstes die Dateien Service.vb und Service.asmx nach Math.vb und Math.asmx umbenennen.

Nun öffnen wir die Math.vb und ersetzten

Public Class Service

durch

Public Class Math

Nun fehlt noch die Einstellung in der Datei Math.asmx. Hier muss ein Dateiname und Klassenname umbenannt werden:

<%@ WebService Language="vb" CodeBehind="~/App_Code/Math.vb" Class="Math" %>

Die Funktion Add

Wie in unserem PHP Beispiel wollen wir eine Methode namens Add erstellen, welche zwei Zahlen addiert. Zum Anfang steht in der Math.vb eine Methode namens Hello World. Diese ersetzten wir durch die Add Funktion. Ich werde den Aufbau mal etwas genauer erklären, da soweit ich weiß eine Vielzahl der Leser noch keine Erfahrungen im .Net gesammelt haben. Als erstes ist hier mal der Code der Add Methode:

<WebMethod()> _
  Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
    Return a + b
  End Function

Das WebMethod-Attribut ganz am Anfang der Funktion gibt an, dass es sich bei der Methode um eine Methode des WebServices handelt.

Mit Public Function wird eine öffentliche Funktion erstellt. Darauf folgt dann der Name der FUnktion, also Add. Mit dem Byval kann man einen Parameter deklarieren. Am Ende der Zeile steht ein „as Integer“. Es gibt an, dass der Rückgabe typ numerisch ist.

Return gibt wie in PHP auch den Wert zurück.

Mit dem End Function wird die Funktion abgeschlossen.

Namespace ändern

In PHP haben wir den Namespace auf http://temp.stevieswebsite.de gelegt. Das wollen wir hier wieder. Dazu gibt es in ASP das Attribut WebService, was als Parameter die Url benötigt. Hier ist nochmal der komplette Code:

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://temp.stevieswebsite.de")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Math
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
        Return a + b
    End Function

End Class

WebService testen

Das wars auch schon mit dem Erstellen. Ist doch ganz einfach, oder? Jetzt kommen wir zum testen. Dies kann auch direkt im Visual Studio geschehen. Dazu müssen wir einfach F5 drücken, was das Debuggen startet. Es öffnet sich der IE und mit der folgenden Seite:

VS Neuer Webservice

WebService Ansicht in ASP.net

Wenn wir nun auf das Add Klicken, können wir den WebService testen:

Add Methode

Add Methode

Hier können wir nun einfach unsere Testdaten in die Textboxen eingeben und auf „Aufrufen“ klicken, um das Ergebnis zurückzubekommen.

Kommentare

Zentrix schrieb am 05.05.2011:

Hallo, kann man den Webservie nicht auch mit einen Script Manager und einen Attribut nicht auch für AJAX Benutzen, oder ist dass nicht eigendlich AJAX??

Stefan Wienströer schrieb am 05.05.2011:

Diese Art von Webservices sind nicht dazu gedacht, über AJAX und allgemein über den Browser darauf zuzugreifen. Vielmehr geht es darum, Dienste für andere Server, Desktop-Anwendungen oder Apps zur Verfügung zu stellen.

Coder schrieb am 02.12.2011:

Kompliment für Anfänger gut erklärt. Kurz und bündig ... Klasse

Roland schrieb am 18.11.2012:

Hallo, wie kann man diesen WebService eine Funktion einer DLL ausführen lasssen?

Stefan Wienströer schrieb am 18.11.2012:

Im Endeffekt genauso wie in normalen Projekten auch. Die DLL muss dabei natürlich auf dem Server liegen und nicht auf dem Client.

Roland schrieb am 18.11.2012:

In normalen VB.net 2010 lege ich dazu in My Project einen Verweis auf die entsprechende DLL an und habe damit Zugriff auf deren Funktionen. Wie aber verweise im Code einer ASMX-Datei auf eine DLL?

Stefan Wienströer schrieb am 18.11.2012:

Auf dem direkten Weg geht das nicht. Dazwischen musst du eine eigene Klasse setzen, die dann intern auf die DLL zugreift.

Roland schrieb am 18.11.2012:

Hättest Du dafür ein Beispiel?

Stefan Wienströer schrieb am 19.11.2012:

Ne, leider nicht. Hab Visual Studio mittlerweile gar nicht mehr installiert