BSCW JavaScript

Werbung
Gliederung
Einführung
Definition Web Service
➢ Drei Schhichtenmodell
➢ Architectural Model
➢ System Model
➢
Web Service Standards
➢ SOAP
➢ WSDL
➢ UDDI
Types of Web Services
➢ Programmatic Web Services
➢ Interactive Web Services
Entwickeln eigener Web Services
➢ Publizieren und Finden von Web Services über UDDI
➢ Erstellung eines kleinen Web Services mit Hilfe von Java
Definition Web Service
Web Services sind in sich geschlossene Einheiten,
die auf Wunsch Dienste durch wohl definierte
Schnittstellen zur Verfügung stellen.
Das Dreischichtenmodell
System Model
Einheitliche Schnittstelle
● SOAP
Architectural Model
SOAP (Simple Object Access Protocol)
- Encodierung von beliebigen Daten (Normalerweise in XML)
- Programmiersprachen-unabhängige Version von RPC
- Funktionsparameter werden kodiert
➔Web Service geschickt
- Ermöglicht Verbindungsnachfragen
Request:
<?xml version='1.0' encoding='UTF-8'>
<SOAP-ENV:Envelope xmlns:ns:SOAP-ENV=“http://schemas.xmlsoap.
org/soap/envelope/“
xmlns:xsi
=“http://www.w3.org/2001/XMLSchemainstance“
xmlns:xsd
=“http://www.w3.org/2001/XMLSchema“>
<SOAP-ENV:Body>
<ns1:searchHandy xmlns:ns1=“http://localhost:8080/Handysuche“
SOAP-ENV:encoding Style=“http://schemas.xmlsoap.
org/soap/encoding/“>
<marke xsi:type=“xsd:string“>Nokia</marke>
<modell xsi:type=“xsd:string“>6310</modell>
</ns1:searchHandy>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
WSDL (Web Services Description Language)
- Programmiersprachen-unabhängige XML-Version einer IDL
- Beschreibt die Operationen, welche Web Services ausführen
WSDL erlaubt
•
Programmiersprachen-spezifischen Code zu erzeugen
•
Methode in der Programmiersprache seiner Wahl aufrufen
➔
WSDL übersetzt in SOAP-basierte Aufrufe
WSDL Example: Types
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/”>
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name=”tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
UDDI (Universal Description Discovery and Integration)
➔
Globale Verzeichnisstruktur
✗
Weiße Seiten
 Namensregister
✗
Gelbe Seiten
 Branchenverzeichnis
✗
Grüne Seiten
 Informationen über die Geschäftsmodelle
<find_business generic="2.0" xmlns="urn:uddiorg: api_v2" >
<findQualifiers>
<findQualifier>caseSensitiveMatch</findQualifier>
<findQualifier>sortByNameAsc</findQualifier>
</findQualifiers>
<name>Siemens%</name>
</find_business>
Muster für Anfragen:
1.Browse
•<find_xxx>-Aufrufe
•Suche nach einer bestimmten Informationen
•Liefert meist eine Liste mit Resultaten zurück
•Beispiel: <find_business>
2.Drill-down
•<get_xxx>-Aufrufe
•Details zu einem Element, vor allem Attribute/Members
•Liefert einen konkreten Wert, meist als Struktur, zurück
•Beispiel: <get_businessDetail>
3.Invocation
•<get_bindingDetail>-Aufrufe
•Ein Client speichert die Ortsangaben über einen Web Service lokal
•Schlägt er Aufruf eines eigentlich bekannten Web Service fehl,
müssen diese Angaben neu aus der UDDI-Registry geholt werden
•Dabei wird der ursprünglich mal ermittelte bindingKey als Argument übergeben
Programmatic Web Services (PWS)
PWS
- Funktionsaufrufe in C++, C#, VB oder Java
➢ „single-step“ oder atomare Operationen
Beispiel: Inventurprogramm
Interactive Web Services (IWS)
- „multi-step“ Webapplikationen
- Basierend auf Datenbanken und Applikationsserver
Beispiel: digitale Bibliothek
Erstellung eines kleinen Web Services mit Hilfe von Java
Beispiel: „Hello World“ mit GLUE
import electric.registry.Registry;
import electric.server.http.HTTP;
public class HelloWorldService {
/** Service function */
public String getHelloWorldMessage (String YourName) {
return "Hello World and "+YourName+"!";
}
/** Start Web service */
public static void main(String[] argl) throws Exception {
HTTP.startup("http://localhost:8004/glue");
Registry.publish("urn:helloworld",new HelloWorldService());
}
}
Erstellung eines kleinen Web Services mit Hilfe von Java
●
HTTP.startup("http://localhost:8004/glue")
;
Der GLUE Web Server wird gestartet
•
Registry.publish("urn:helloworld",new HelloWorldService());
eine Instanz der HelloWorldService-Klasse wird publiziert
➔ URL „urn:helloworld“
GLUE analysiert nun unser publiziertes Java-Objekt
➢
public deklarierten Methoden => SOAP-Methoden
Test:
✔ GLUE-Console ruft via SOAP die getHelloWorldMessage-Methode
Finden von Web Services über UDDI
Durchsuchung aller UDDI-Serviceregistrierungen („TModels“)
IUDDI uddi = new UDDIClient(inquireURL);
TmodelInfos tModelInfos = uddi.findTModels(„helloworld service“, null);
Mit Hilfe des TModel-Keys wird das Tmodel geholt:
String tModelKey = tModelInfos.list[0].getTModelKey();
Tmodel tModel = uddi.getTModel(tModelKey);
Mittels des TModels sucht man den erstbesten Anbieter des Dienstes:
String[] tModelKeys = new String[]{tModelKey};
BusinessInfos businessInfos = uddi.findBusiness(tModelKeys,null);
BusinessInfo businessInfo = businessInfos.list[0];
Finden von Web Services über UDDI
Die erste Instanz des Dienstes wird geholt
ServiceInfos serviceInfos = uddi.findServices(businessInfo.getBusinessKey(),tModelKeys,null);
String serviceKey = serviceInfos.list[0].getServiceKey();
Service service = uddi.getService(serviceKey);
Adresse und WSDL-Definition der Web Service Schnittstelle:
Binding binding = service.getBindings()[0];
String address = binding.getAccessPoint().getAddress();
String wsdlURL = tModel.getOverview().getOverviewURL();
GLUE-Kontext wird erzeugt und mit Registry.bind() der Web Service angezeigt
Context context = new Context()
context.setProperty(„endpoint“,address);
IHelloWorldService helloworld = (IhelloWorldService)Registry.bind(
wsdlURL,IHelloWorldService.class,context);
System.out.println(helloworld.getHelloWorldMessage(„test“);
Publizieren von Web Services über UDDI
Ein Objekt zur registration in einem UDDI wird erstellt
Public class UDDIPublish1 {
public static void main( String[] args ) throws Exception {
String inquireURL = "http://localhost:8004/glue/inquire/uddi";
String publishURL = "http://localhost:8005/glue/publish/uddi";
String user = "santa";
String password = "christmas";
Ein Clientund ein Business Objekt wird erzeugt
IUDDI uddi = new UDDIClient( inquireURL, publishURL, user, password );
Business business = new Business( "Presents, Inc." );
[...]
Addresse wird vervollständigt und anschließend in einem UDDI registriert.
// Publish the Business to the UDDI server.
Business savedBusiness = uddi.saveBusiness( business );
System.out.println( "\nsaved\n" + savedBusiness );
}
}
Fazit
In Web Services steckt ein großes Potential
bezüglich der Business-to-Business-Kommunikation.
Web Services sind die Zukunft, die nächste
Generation von Software. Die Architektur ist ein
Guideline, um in der Vielfalt der inzwischen zu
vielen XML Standards, Technologien und
Zukunftsperspektiven die Orientierung nicht zu
verlieren.
Herunterladen