Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 16 Web Services
|  | 16.1 Wie Web Services funktionieren
|  |  | 16.1.1 Basistechnologie HTTP
|  |  | 16.1.2 Basistechnologie XML
|  |  | 16.1.3 Basistechnologie SOAP
|  |  | 16.1.4 Umdenken beim Entwickeln von Web Services
|  | 16.2 Einen einfachen Web Service erstellen und anbieten
|  |  | 16.2.1 Die Datei webservice01.asmx erstellen
|  |  | 16.2.2 webservice01.asmx im Browser aufrufen
|  | 16.3 Einen Web Service verwenden
|  |  | 16.3.1 Eine Proxyklasse erstellen
|  | 16.4 Einen Web Service mit einem SOAP-Header sichern
|  |  | 16.4.1 Einen passwortgeschützten Web Service erstellen
|  |  | 16.4.2 Die Proxyklasse erzeugen
|  |  | 16.4.3 Den passwortgeschützten Web Service aufrufen
|  |  | 16.4.4 Fazit: Web Services und Sicherheit
|  | 16.5 Ein DataSet-Objekt übertragen
|  |  | 16.5.1 Den Web Service in einer asmx-Datei erstellen
|  |  | 16.5.2 Die Proxyklasse erzeugen
|  | 16.6 Web Services finden
|  |  | 16.6.1 Discovery
|  |  | 16.6.2 UDDI
|  | 16.7 Zusammenfassung und Ausblick
|  |  | 16.7.1 Zusammenfassung
|  |  | 16.7.2 Ausblick
|  |  | 16.7.3 Ressourcen
## 16.5 Ein DataSet-Objekt übertragen Der einzige Datentyp von ADO.NET, der über einen Web Service übertragen werden kann, ist der Typ DataSet. Im Prinzip funktioniert das Verfahren ganz analog zur Übertragung des Strings Hallo und soll kurz demonstriert werden. Als Übung soll die Tabelle Versandfirmen aus der Nordwind-Datenbank über einen Web Service übertragen werden. Die Beispieldatei db_08.aspx zeigt diese Tabelle im Browser an, ohne dass die Daten über einen Web Service übertragen werden. Im Prinzip teilt die folgende Übung die Funktionalität von db_08.aspx in zwei Teile. Der eine Server besorgt die Daten und schickt sie per Web Service zum zweiten Server, der die Daten in seine aspx-Seite einbaut und diese dann zum Browser schickt. Wenn Sie den Code eigenhändig nachvollziehen, werden Sie bemerken, dass Sie den Code von db_08.aspx fast vollständig übernehmen können, und zwar die eine Hälfte für den Web Service und die andere Hälfte für die aspx-Datei, die die Daten anzeigt. Dazwischen steht »nur« die Übertragung, die für einen Entwickler damit fast vollständig transparent wird. ### 16.5.1 Den Web Service in einer asmx-Datei erstellen Dieser Web Service wird in der Datei webservice03.asmx implementiert. Die Datei enthält die Methode getVersandfirmen. Diese Methode liefert ein DataSet-Objekt mit der Tabelle Versandfirmen. webservice03.asmx hat diese Form:
    <!-- webservice03.asmx -->
    <%@ WebService Language="VB" Class="webservice03"  %>

    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Web.Services

    <WebService( _
       Description := _
          "Bietet Zugriff auf die Nordwind-Datenbank.", _
       Namespace := "http://mlohrer.de/services")> _
    Public Class webservice03 : Inherits WebService

       <WebMethod( _
          Description := _
             "Liefert die Tabelle Versandfirmen.", _
          EnableSession := False)> _
       Public Function getVersandfirmen() As DataSet
          ' Verbindungszeichenfolge zusammensetzen
          Dim connStr As String
          connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
          connStr += "Data Source="
          connStr += "E:\ASPdotNETBuch\Listings\"
          connStr += "Nordwind.mdb;"

          ' Verbindung zur Datenbank herstellen
          Dim conn As New OleDbConnection(connStr)
          conn.Open()

          ' SQL-Kommando erstellen und ausführen
          Dim sql As String
          sql = "SELECT * FROM Versandfirmen"
          Dim cmd As New OleDbCommand(sql, conn)

          Dim myAdapter As New OleDbDataAdapter()
          myAdapter.SelectCommand = cmd

          Dim myDS As New DataSet()
          myAdapter.Fill (myDS)
          conn.Close()

          Return (myDS)  ' DataSet-Objekt zurückgeben

       End Function
    End Class
webservice03.asmx enthält keine neuen Merkmale. Die Funktion getVersandfirmen() erhält das Attribut WebMethod. In der Deklaration wird festgelegt, dass die Methode ein Objekt vom Typ DataSet zurückgibt. Der Code innerhalb dieser Funktion entspricht haargenau dem Code, den auch die Beispieldatei db_08.aspx in ihrer Prozedur Page_Load verwendet. Damit wird deutlich, dass auf der Seite des Web Services keinerlei Besonderheiten zu berücksichtigen sind, wenn statt eines einfachen Strings der komplexe Datentyp DataSet ausgeliefert werden soll. ### 16.5.2 Die Proxyklasse erzeugen Gedanklich springen Sie jetzt wieder zum zweiten Rechner, der diesen Web Service nutzen will. Hier benötigen Sie eine Proxyklasse, um den Service ansprechen zu können. Den VB-Quellcode für diese Proxyklasse erzeugen Sie mit diesem Aufruf:
    wsdl /l:vb /n:DBWebServices
    http://localhost/ASPdotNETBuch/Listings/webservice03.asmx?WSDL
Diesen Code kompilieren Sie mit diesem Aufruf:
    vbc /t:library /out:../bin/DBWebServices.dll /r:System.dll
    /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll webservice03.vb
Beim Kompilieren müssen Sie zusätzlich die Bibliothek System.Data.dll referenzieren. Damit steht Ihnen die Proxyklasse zur Verfügung. webservice03.aspx verwendet diese Klasse, ruft das DataSet ab und stellt es in einem DataGrid-Steuerelement dar.
    <!-- webservice03.aspx -->
    <%@ Page language="VB" strict="true" debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script runat="server">
    Sub Page_Load (ByVal Sender As Object, _
                   ByVal E As EventArgs)
       Dim w As new DBWebServices.webservice03
       Dim myDS As New DataSet()
       myDS = w.getVersandfirmen()
       myGrid.DataSource = myDS
       DataBind()
       End Sub
    </script>
    <html><head>
    <title>Datenbank-Webservice</title>
    </head><body>
    <p>
    Die Tabelle Versandfirmen aus der Nordwind-Datenbank:
    </p>
    <asp:DataGrid id="myGrid" runat="server" />
    </body></html>
Abbildung 16.7 zeigt das Endergebnis im Browser. Im Browser ist nicht mehr zu erkennen, dass die dargestellten Daten nicht von dem direkt angesprochenen Webserver, sondern von einem anderen Server stammen. Genau dieser Effekt ist erwünscht. Die übertragenen Daten fügen sich nahtlos ein und können vom Webserver genau so verarbeitet werden, als wenn es »eigene« Daten wären. Hier klicken, um das Bild zu Vergrößern Abbildung 16.7 Im Browser ist nicht mehr zu erkennen, dass das dargestellte DataSet über einen Web Service ermittelt wurde
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de