160 likes | 270 Views
Aufgabe1: Probleme mit Seife. Trotz aller Standardisierung gibt es immer noch Interoperabilitätsprobleme zwischen den einzelnen SOAP-Implementierungen (z.B. IBM WebSphere und MS .Net). a) Wodurch entstehen diese Probleme? Wo treten sie auf?
E N D
Aufgabe1: Probleme mit Seife Trotz aller Standardisierung gibt es immer noch Interoperabilitätsprobleme zwischen den einzelnen SOAP-Implementierungen (z.B. IBM WebSphere und MS .Net). a) Wodurch entstehen diese Probleme? Wo treten sie auf? b) Welche Möglichkeiten gibt es um Interoperabilitätsprobleme zu vermeiden? (Best Practice) Zusatz: Welche Probleme der Interoperabilität können durch die WSDL bei der Zusammenarbeit von MS .Net und IBM WebSphere entstehen und wie können diese vermieden werden? Gibt es evtl. Richtlinien oder Konventionen, die bei derErstellung von WSDL-Dateien beachtet werden sollten, die nicht im Standard definiert sind?
Wodurch entstehen diese Probleme? - zahlreiche SOAP-Implementierungen (BEA, IBM, Microsoft, Sun Microsystems, Systinet, Apache, ...) - SOAP-Standard lässt vieles offen und bietet oft Möglichkeiten zur Interpretation; ist nur Recomendation
Wo treten diese Probleme auf? • Transport • SOAPAction • XML • BOM Marks • SOAP • Datatype conversion
Wo treten diese Probleme auf::Transport() • SOAPAction im HHTP request header muss spezifiziert und quotiert sein. • .NET Benutzt den SOAPAction header um die gewünschte Operation auszuführen • z.B: urn:Example1/sayHello (/ ist Separator) • Apache benutzt den namespace URI des ersten Kindelementes von <SOAP:Body> um die gewünschte Operation auszuführen; SOAPAction wird ignoriert. • Lite benuzt # als den Separator im SOAPAction header • z.B: urn:Example1#sayHello (# ist Separator)
Wo treten diese Probleme auf::Transport() Bestpractice: SOAPAction header sollte immer vorhanden sein, und " delimitiert - SOAPAction: "http://tempuri.org/" - SOAPAction: - SOAPAction null, nicht immer möglichch, da viele HTTP Cliente nicht die möglichkeit haben null als einen Headerwert zu spezifiziern Beispiel Recommendations von ws-i - R1109 The value of the SOAPAction HTTP header field in a HTTP request MESSAGE MUST be a quoted string. - R1119 A RECEIVER MAY respond with a Fault if the value of the SOAPAction HTTP header field is not quoted.
n++ is BOM Mark BOM wird benutzt um die Encodierung einer Portion von einem XML Dokument zu spezifizieren; Apache hat einen Problem damit Wo treten diese Probleme auf::XML() HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8 Content-Length: length n++<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <tns:echoStringResponse> <Return>string</Return> </tns:echoStringResponse> </soap:Body> </soap:Envelope>
Wo treten diese Probleme auf::SOAP() • Einbindung komplexer, selbstdefinierter Datentypen • Float • Decimal • Datetime • Bytearrays
Wo treten diese Probleme auf::SOAP() Bsp: http://www.whitemesa.com/interop.htm Es wurden einige Methoden zum Ein- und Ausgeben diverser Datentypen definiert (z.B. echo2DStringArray) <complexType name="ArrayOfString2D"/> <complexContent> <restriction base="SOAP-ENC:Array"> <sequence> <element name="item" type="string" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </sequence> <attributeGroup ref="SOAP-ENC:commonAttributes"/> <attribute ref="SOAP-ENC:offset"/> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[,]"/> </restriction> </complexContent> </complexType>
Wo treten diese Probleme auf::SOAP() Ergebnisse: Files: www.whitemesa.com\Results\results_mesa.htm und www.whitemesa.com\Results\results_sun.html
Wo treten diese Probleme auf::SOAP()::Float() • - XML stellt Infinity als INF dar • - Apache SOAP 2.2 gibt Infinity zurück • Apache AXIS gibt Inf zururück • MS SOAP Toolkit 3.0: SoapMapper:Converting data for SoapMapper failed inside the typemapper • - Schicken von 1.23456789E38 • IONA XMLBus 1.23456789E38 • White Mesa 2.7 1.234568E38 • MS SOAP ToolKit 3.0 1.23456786051167E+38
Wo treten diese Probleme auf::SOAP() Decimal -> Minimum 18 Digits, nach spezifiktion von XML Schema -> Aber: keine höchste Grenze spzifiziert! -> MS & MESA: 28 Digits -> Axis: >100 Digits DateTime ->Mesa: Seconds ->Apache SOAP & Axis: Milliseconds Bytearrays ->Apache scheitert an base64Binary encodierte Bytearrays
Welche Möglichkeiten gibt es um Interoperabilitätsprobleme zu vermeiden? (Best Practice) - Best Practice für Endanwender schwierig, da Programmierumgebung das Tool stellt, welches SOAP- und WSDL-Dokumente erstellt (testen, testen, testen!!!) - Toolkits verwenden, die weitgehendst interoperabel sind (welche sind das? eventuell SQLData SOAP Interop Interface www.soapclient.com\Test\interopTest.html) Ergebnisse: www.soapclient.com\Results\interopResult.html - WS-I: Organisation die versucht Web Services weitesgehend interoperabel zu machen -> durch weitere Spezifikationen - Aufpassen mit den Datentypen, und wissen welche Datentypen eventuelle Schwachstellen oder Interoperabilität verursachen könnten http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html
Probleme der Interoperabilität zwischen MS .NET und IBM WebSphere WSDL Bsp: entspricht Standard läuft aber nicht überall <definitions name="StockQuote" targetNamespace="http://example.com/stockquote/wsdl" xmlns:sq="http://example.com/stockquote/sqTypes/" ... xmlns="http://schemas.xmlsoap.org/wsdl/"> <import namespace="http://example.com/stockquote/sqTypes/" location="http://example.com/stockquote/sqTypes.xsd"/> <message name="GetLastTradePriceInput"> <part name="body" element="sq:TradePriceRequest"/> </message> ... </definitions>
Probleme der Interoperabilität zwischen MS .NET und IBM WebSphere WSDL WS-I konform <definitions name="StockQuote" targetNamespace="http://example.com/stockquote/wsdl" xmlns:sq="http://example.com/stockquote/sqTypes/" ... xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://example.com/stockquote/sqTypes/" schemaLocation="http://example.com/stockquote/sqTypes.xsd"/> </xsd:schema> </types> ...
Probleme der Interoperabilität zwischen MS .NET und IBM WebSphere WSDL • .NET generiert einen WSDL Datei per Webservice • IBM WS generiert 2: eine für das Interface und eine für die Implementation • - An WS-I Basic Profile halten • - WSDL Analyzer (testen, testen, testen) • File: www.xmethods.net\Tools.htm
Aktuelle Informationen - Aktuelle Links und Infos über unser Projekt unter:eitchteeteepee://wsp2003.tripod.com/x/Links, PPTs, Kontakt