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

 

Webdienste erstellen

Webdienste, die in Datenbanken erstellt und gespeichert werden, definieren, welche URLs gültig sind und was sie tun. Eine einzelne Datenbank kann mehrere Webdienste definieren. Es ist möglich, Webdienste in verschiedenen Datenbanken so zu definieren, dass sie als Teil einer einzelnen Website erscheinen.

Die folgenden Anweisungen werden bereitgestellt, die Ihnen die Erstellung, Änderung und Löschung von Webdiensten ermöglichen:

  • CREATE SERVICE

  • ALTER SERVICE

  • DROP SERVICE

  • COMMENT ON SERVICE

Die allgemeine Syntax der CREATE SERVICE-Anweisung lautet wie folgt:

CREATE SERVICE Dienstname TYPE 'Diensttyp' [ Attribute ] [ AS Anweisung ]
Dienstnamen

Da Dienstnamen Teil des URLs bilden, der für den Zugriff auf sie verwendet wird, besteht eine gewisse Flexibilität bei den Zeichen, die in ihnen enthalten sein können. Zusätzlich zu den alphanummerischen Standardzeichen sind folgende Zeichen zulässig: - _ . ! * '( )

Außerdem können Dienstnamen, ausgenommen jene, die für die Benennung von DISH-Diensten verwendet werden, einen Schrägstrich "/" enthalten. Hierbei bestehen aber gewisse Einschränkungen, weil dieses Zeichen einen Standard-URL-Begrenzer darstellt und Einfluss darauf hat, wie SQL Anywhere Ihre URLs intepretiert. Er darf nicht als erstes Zeichen eines Dienstnamens verwendet werden. Außerdem dürfen Dienstnamen nicht zwei aufeinander folgende Schrägstriche enthalten.

Die in Dienstnamen zugelassenen Zeichen sind auch in GROUP-Namen zulässig, die sich nur auf DISH-Dienste beziehen.

Diensttypen

Die folgenden Diensttypen werden unterstützt:

  • 'SOAP'   Die Ergebnismenge wird als SOAP-Antwort zurückgegeben. Das Format der Daten wird durch die FORMAT-Klausel bestimmt. Eine Anforderung an einen SOAP-Dienst muss eine gültige SOAP-Anforderung, nicht nur eine einfache HTTP-Anforderung sein.

  • 'DISH'   Ein DISH-Dienst (Determine SOAP Handler) agiert als Stellvertreter für jene SOAP-Dienste, die durch die GROUP-Klausel festgelegt sind, und generiert ein WSDL-Dokument (Web Services Description Language) für jeden dieser SOAP-Dienste.

  • 'HTML'   Die Ergebnismenge einer Anweisung oder Prozedur wird automatisch in ein HTML-Dokument formatiert, das eine Tabelle enthält.

  • 'XML'   Die Ergebnismenge wird als XML zurückgegeben. Wenn die Ergebnismenge bereits XML ist, wird keine weitere Formatierung angewendet. Wenn sie nicht bereits XML ist, wird sie automatisch als XML formatiert. Die Wirkung ist mit der bei der Verwendung der FOR XML RAW-Klausel in einer SELECT-Anweisung vergleichbar.

  • 'JSON'   Die Ergebnismenge wird in JavaScript Object Notation (JSON) zurückgegeben. JSON ist kompakter als XML und hat eine vergleichbare Struktur. Weitere Hinweise zu JSON finden Sie unter [external link] http://www.json.org

  • 'RAW'   Das Ergebnis wird ohne weitere Formatierung an den Client gesendet. Sie können formatierte Dokumente produzieren, indem Sie die erforderlichen Tags ausdrücklich innerhalb der Prozedur erzeugen.

Unter allen Diensttypen ermöglicht Ihnen RAW die größten Steuerungsmöglichkeiten in den Ausgabedaten. Allerdings ist dafür mehr Arbeit erforderlich, da Sie die erforderlichen Tags alle explizit ausgeben müssen. Die Ausgabe von XML-Diensten kann angepasst werden, indem die FOR XML-Klausel in der Anweisung des Dienstes angewendet wird. Die Ausgabe von SOAP-Diensten kann angepasst werden, indem das FORMAT-Attribut der CREATE bzw. ALTER SERVICE-Anweisung verwendet wird. Weitere Hinweise finden Sie unter CREATE SERVICE-Anweisung.

Anweisungen

Die Anweisung ist der Befehl, gewöhnlich eine gespeicherte Prozedur, der aufgerufen wird, wenn ein Benutzer auf den Dienst zugreift. Wenn Sie eine Anweisung festlegen, ist sie die einzige Anweisung, die über diesen Dienst ausgeführt werden kann. Die Anweisung ist für SOAP-Dienste zwingend und wird für DISH-Dienste ignoriert. Standard ist NULL, also keine Anweisung.

Sie können Dienste erstellen, die keine Anweisungen enthalten. Die Anweisung wird dem URL entnommen. Auf diese Art konfigurierte Dienste können sinnvoll sein, wenn Sie einen Dienst testen oder eine allgemeine Methode für den Zugriff auf Informationen wünschen. Dafür verwenden Sie die Anweisung nicht oder benutzen die Phrase AS NULL anstelle der Anweisung.

Dienste ohne Anweisungen sind ein schwerwiegendes Sicherheitsrisiko, da sie es Webclients ermöglichen, beliebige Befehle auszuführen. Wenn Sie solche Dienste erstellen, müssen Sie die Autorisierung aktivieren, die alle Clients dazu zwingt, einen gültigen Benutzernamen und ein Kennwort anzugeben. In jedem Fall sollten in einem Produktionssystem nur Dienste ausgeführt werden, die Anweisungen festlegen.

Attribute

Im Allgemeinen sind alle Attribute optional. Einige sind jedoch voneinander abhängig. Die folgenden Attribute stehen zur Verfügung:

  • AUTHORIZATION   Mit diesem Attribut wird gesteuert, welche Benutzer den Dienst verwenden dürfen. Die Standardeinstellung ist ON. Authorization muss auf ON gesetzt sein, wenn keine Anweisung bereitgestellt wird. Außerdem beeinflusst die Einstellung von "Authorization", wie vom USER-Attribut definierte Benutzernamen intepretiert werden.

  • SECURE   Wenn diese Option auf ON gesetzt ist, sind nur sichere Verbindungen zulässig. Alle Verbindungen, die über den HTTP-Port empfangen werden, leitet das System automatisch an den HTTPS-Port weiter. Der Standardwert ist OFF, sodass sowohl HTTP- als auch HTTPS-Anforderungen zulässig sind, wenn diese Ports beim Datenbankstart mit den entsprechenden Optionen aktiviert werden. Weitere Hinweise finden Sie unter Serveroption -xs.

  • USER   Die USER-Klausel steuert, welche Datenbank-Benutzerkonten verwendet werden können, um Dienstanforderungen zu verarbeiten. Die Interpretation dieser Einstellung hängt allerdings davon ab, ob Authorization auf ON oder OFF eingestellt ist.

    Wenn Authorization auf ON gesetzt ist, müssen alle Clients bei der Verbindungsaufnahme einen gültigen Benutzernamen und ein Kennwort übergeben. Wenn Authorization auf ON gesetzt ist, kann die USER-Option NULL, ein Datenbankbenutzername oder der Name einer Datenbankgruppe sein. Wenn sie NULL ist, kann sich jeder Datenbankbenutzer verbinden und Anforderungen absetzen. Anforderungen werden mit dem Konto und den Berechtigungen dieses Benutzers ausgeführt. Wenn ein Gruppenname angegeben ist, können nur die Benutzer, die der Gruppe angehören, Anforderungen absetzen. Allen anderen Datenbankbenutzern wird der Zugang zum Dienst verwehrt.

    Wenn Authorization auf OFF gesetzt ist, muss eine Anweisung bereitgestellt werden. Außerdem muss ein Benutzername bereitgestellt werden. Alle Anforderungen werden mit dem Konto und den Berechtigungen des betreffenden Benutzers ausgeführt. Wenn der Server daher mit einem öffentlichen Netzwerk verbunden ist, sollten die Berechtigungen des benannten Benutzerkontos möglichst gering sein, um Schäden durch missbräuchliche Nutzung des Systems zu minimieren.

  • GROUP   Die GROUP-Klausel, die nur für DISH-Dienste gilt, legt fest, welche SOAP-Dienste durch den DISH-Dienst vorgelegt werden. Nur SOAP-Dienste, deren Namen mit dem Gruppennamen eines DISH-Dienstes beginnen, werden von diesem DISH-Dienst vorgelegt. Daher ist der Gruppenname ein gemeinsames Präfix der vorgelegten SOAP-Dienste. Beispiel: Die Angabe von GROUP xyz legt nur SOAP-Dienste xyz/aaaa, xyz/bbbb oder xyz/cccc vor, aber nicht abc/aaaa oder xyzaaaa. Wenn kein Gruppenname angegeben ist, legt der DISH-Dienst alle SOAP-Dienste in der Datenbank vor. In Gruppennamen sind dieselben Zeichen wie in Dienstnamen zulässig.

    SOAP-Dienste können durch mehr als einen DISH-Dienst vorgelegt werden. Diese Funktion vor allem ermöglicht es, dass ein einzelner SOAP-Dienst Daten in mehreren Formaten liefert. Der Diensttyp wird, außer er ist in einem SOAP-Dienst angegeben, vom DISH-Dienst übernommen. Daher können Sie einen SOAP-Dienst erstellen, der keinen Formattyp deklariert, um ihn dann in mehrere DISH-Dienste aufzunehmen, von denen jeder ein anderes Format festlegt.

  • FORMAT   Die FORMAT-Klausel, die nur für DISH- und SOAP-Dienste gilt, steuert das Ausgabeformat der SOAP- oder DISH-Antwort. Es stehen Ausgabeformate zur Verfügung, die mit den verschiedenen Typen von SOAP-Clients, wie .NET oder JAX-WS, kompatibel sind. Wenn das Format eines SOAP-Dienstes nicht angegeben ist, wird das Format von der DISH-Dienstdeklaration des Dienstes übernommen. Wenn der DISH-Dienst ebenfalls kein Format deklariert, wird standardmäßig DNET genommen, was mit .NET-Clients kompatibel ist. Ein SOAP-Dienst, der kein Format deklariert, kann mit verschiedenen Typen von SOAP-Clients verwendet werden, indem mehrere DISH-Dienste definiert werden, von denen jeder einen anderen FORMAT-Typ hat.

  • URL [PATH]   Die URL- oder URL PATH-Klausel steuert die Interpretation von URLs und gilt nur für XML-, HTML- und RAW-Diensttypen. Insbesondere bestimmt sie, ob URL-Pfade akzeptiert werden und, falls ja, wie sie verarbeitet werden sollen. Wenn der Dienstname mit dem Zeichen "/" endet, muss URL deaktiviert sein (OFF). Weitere Hinweise finden Sie unter CREATE SERVICE-Anweisung.