Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere-Webdienste

 

Praktische Einführung: Zugriff auf Webdienste von Microsoft .NET

Die folgende praktische Einführung zeigt, wie Sie von Microsoft .NET aus mit Visual C# auf Webdienste zugreifen.

♦  So erstellen Sie SOAP- und DISH-Dienste
  1. Führen Sie an der Eingabeaufforderung folgenden Befehl aus, um einen Personal Webserver zu starten. Ersetzen Sie Beispieldatenbank durch den tatsächlichen Speicherort der Beispieldatenbank. Die Option -xs http(port=80) teilt dem Datenbankserver mit, HTTP-Anforderungen auf Port 80 anzunehmen. Wenn Sie bereits einen Webserver auf Port 80 laufen haben, verwenden Sie eine andere Portnummer wie z.B. 8080 in dieser praktischen Einführung und geben Sie 8080 statt 80 bei allen Portreferenzen an.

    dbeng11 -xs http(port=80) Beispielverzeichnis\demo.db
  2. Starten Sie Interactive SQL. Verbinden Sie sich mit der SQL Anywhere-Beispieldatenbank als Benutzer mit DBA-Berechtigung. Führen Sie die folgenden Anweisungen aus:

    1. Legen Sie einen SOAP-Dienst fest, der die Tabelle Employees auflistet.

      CREATE SERVICE "SASoapTest/EmployeeList"
      TYPE 'SOAP'
      AUTHORIZATION OFF
      SECURE OFF
      USER DBA
      AS SELECT * FROM Employees;

      Da die Autorisierung deaktiviert ist, kann jeder diesen Dienst benutzen, ohne einen Benutzernamen mit Kennwort anzugeben. Die Befehle werden unter dem Benutzer DBA ausgeführt. Diese Anordnung ist einfach, aber unsicher.

    2. Erstellen Sie einen DISH-Dienst, der als Proxy für den SOAP-Dienst agiert und das WSDL-Dokument generiert.

      CREATE SERVICE "SASoapTest_DNET"
      TYPE 'DISH'
      GROUP "SASoapTest"
      FORMAT 'DNET'
      AUTHORIZATION OFF
      SECURE OFF
      USER DBA;

      Der SOAP- und der DISH-Dienst müssen das DNET-Format haben. In diesem Beispiel wurde die FORMAT-Klausel weggelassen, als der SOAP-Dienst erstellt wurde. Daher erbt der SOAP-Dienst das DNET-Format vom DISH-Dienst.

  3. Starten Sie Microsoft Visual Studio. Beachten Sie, dass dieses Beispiel Funktionen aus .NET Framework 2.0 verwendet.

    1. Erstellen Sie ein neues Windows-Anwendungsprojekt mit Visual C#.

      Ein leeres Formular wird angezeigt.

    2. Wählen Sie im Menü Projekt die Option Webverweis hinzufügen.

    3. Geben Sie auf der Seite Webverweis hinzufügen im Feld URL die folgende URL ein: http://localhost:80/demo/SASoapTest_DNET.

    4. Klicken Sie auf Gehe zu.

      Eine Liste der für SASoapTest_DNET verfügbaren Methoden wird angezeigt. Die Methode EmployeeList sollte angezeigt werden.

    5. Klicken Sie auf Verweis hinzufügen, um fortzufahren.

      Im Fenster Projektmappen-Explorer wird der neue Webverweis angezeigt.

    6. Von der Visual Studio Toolbox aus fügen Sie dem Formular ein Listenfeld und eine Schaltfläche hinzu, wie im folgenden Diagramm dargestellt.

      SOAP-Demonstrationsformular.
    7. Ändern Sie den Schaltflächentext in Employee List.

    8. Doppelklicken Sie auf Employee List und fügen Sie den folgenden Code für das Schaltflächenereignis "Click" hinzu.

      int sqlCode;
      
      listBox1.Items.Clear();
      
      localhost.SASoapTest_DNET proxy = new localhost.SASoapTest_DNET();
      
      DataSet results = proxy.EmployeeList(out sqlCode);
      DataTableReader dr = results.CreateDataReader();
      while (dr.Read())
      {
        for (int i = 0; i < dr.FieldCount; i++)
        {
          string columnName = dr.GetName(i);
          try
          {
            string value = dr.GetString(i);
            listBox1.Items.Add(columnName + "=" + value);
          }
          catch ( InvalidCastException )
          {
            listBox1.Items.Add(columnName + "=(null)");
          }
        }
        listBox1.Items.Add("");
      }
      dr.Close();
    9. Kompilieren Sie das Programm und führen Sie es aus.

      Das Listenfeld zeigt die EmployeeList-Ergebnismenge in Form von Spaltenname=Wert-Paaren an.

      Es steht ein try/catch-Block zur Behandlung von NULL-Spaltenwerten zur Verfügung, wie sie z.B. in der Spalte TerminationDate der Tabelle Employees vorkommen.