SOAP Simple Object Access Protocol Simple Object Access Protocol SOAP Frank Lange ([email protected]) Michael Willers ([email protected]) Microsoft GmbH Small Business & Partner Group (SBPG)
Download ReportTranscript SOAP Simple Object Access Protocol Simple Object Access Protocol SOAP Frank Lange ([email protected]) Michael Willers ([email protected]) Microsoft GmbH Small Business & Partner Group (SBPG)
SOAP Simple Object Access Protocol Simple Object Access Protocol SOAP Frank Lange ([email protected]) Michael Willers ([email protected]) Microsoft GmbH Small Business & Partner Group (SBPG) Inhalt Web Services und “.NET” SOAP SOAP Toolkit Vergleich SOAP und COM Zukunft? “.net” – zu Lesen Sun Microsystems is leading the development of an open-systems competitor to Microsoft .NET, Bill Gates' sweeping initiative to deliver software as a set of services over a wide range of Internetconnected devices. Gates claimed in June to be betting his company on Microsoft .NET, a move he deems as important to Microsoft as the transition from DOS to Windows. Web Services Dan Kusnetzky, a VP at International Data Corp., calls Microsoft .NET Gates' latest attempt to "embrace and extend" the Internet in reaction to the rise of browserbased applications, which threaten to render much of Microsoft's software irrelevant. He also expects Microsoft to hit snags converting its revenue from packaged software sales into software rentals. Services (ver)mieten Nevertheless, Kusnetzky says Microsoft's superior tools and its integrated products are an advantage. "Microsoft will tie things together into one environment with point-and-click, and with the linkage to Windows 2000, you'll get it all," Kusnetzky says. Visual Studio.net Web-Service Web ist/wird performant und hochverfügbar Services wie Hotmail liefern Bedienoberfläche im Browser (Endanwender als Zielgruppe) Künftig Services, welche programmatisch nutzbar sind Funktionsaufrufe über Services sind wünschenswert (bequeme Kommunikation: was ich will, was ich sende, was bekomme ich...) “.net” – für Entwickler Entwicklerkonfernz stand ganz im Zeichen “.net” Experten: “in 3 Jahren haben wir die Welt der Web-Services” Tools kommen: MS Visual Studio .NET Windows DNA wird ersetzt durch .NET Framework Windows DNA Design Darstellungs UI Rich Clients HTML Browsers Internet Geschäftslogik App Code Kriterien firmeninterne Datenhaltung Dienste und Daten Skalierbarkeit Verfügbarkeit Sicherheit Wartbarkeit Das Problem Win DNA ist für’s Windows-Netz designed – alles andere ist oft Bastelei Server-Dienste sind im Firmennetz Aufwand: Implementierungs-Details (COM+, API, Security,...je nach OS) Umwege für heterogene Infrastruktur (COM+ zu CORBA etc.) Andere Schnittstellen, sobald Infos aus dem Netz (Sockets...) .NET - Design “Components for the Web” App Code Web Service OS and Local Services Internet Web Service Verlagerung von Diensten ins Internet (evtl. andere Firma) Verlagerte Dienste arbeiten funktional Einheitlicher Schnittstellenstandard Web Service Browsers Devices .NET Plattform Framework & Tools Stichworte: Visual Studio.NET, CRL, COM+Erweiterungen, Programmiermodell Building Block Services Ständig verfügbare Dienste (Code-Updates, Benachrichtigungsdienste, Suchdienste,...) Server & Clients DNA 2000 Produktfamilie, Windows PoweredGeräte Web Services - Technisch Programmatischer Zugriff auf Services im Web Kommunikation von Web-Anwendungen untereinander XML als Standard für Daten(beschreibung) (plattform- und sprachunabhängig) SOAP als Protokoll für Funktionsaufrufe (plattform- und sprachunabhängig) z.B. SDL als Metabeschreibung der Web Services XML=Extensible Markup Language SOAP=Simple Object Access Protocol SDL=Service Description Language Inhalt Web Services und “.NET” SOAP SOAP Toolkit Vergleich SOAP und COM Zukunft? Was ist SOAP? Simple Object Access Protocol XML-basierendes Kommunikationsformat Für XML/HTTP RPC (ab V1.1 auch andere Protokolle als HTTP) Basierend auf Verschiedene Betriebssysteme Verschiedene Programmiersprachen Verschiedene Plattformen W3C XML standards IETF HTTP standard SOAP-Spezifikation v1.1 zum W3C gereicht http://msdn.microsoft.com/workshop/xml/gener al/soapspec.asp SOAP Message Protocol Headers komplette SOAP Message Kopf vom Standard-Protololl (HTTP, SMTP, etc.) und SOAP SOAP Envelope <Envelope>-Metainfos SOAP Message SOAP Header Headers SOAP Body Message Name & Data <Header> -Kopfinfos Individuelle Kopfinfos <Body> mit XML-Daten Funktionsname und Parameter Ein SOAP Request (über HTTP) POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8“ Content-Length: 323 SOAPAction: Some-Namespace-URI#GetLastTradePrice <SQ:Envelope xmlns:SQ="http://schemas.xmlsoap.org/soap/envelope/" SQ:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > <SQ:Body> <m:GetLastTradePrice xmlns:m="Some-Namespace-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SQ:Body> </SQ:Envelope> Eine SOAP Response (über HTTP) HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8“ Content-Length: nnnn <SP:Envelope xmlns:SP="http://schemas.xmlsoap.org/soap/envelope/" SP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > <SP:Body> <m:GetLastTradePriceResponse xmlns:m="Some-Namespace-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SP:Body> </SP:Envelope> SOAP in der .NET Plattform Werkzeuge ASP+, Visual Basic .NET, Visual C++ .NET (ATL Server), C#, Visual FoxPro Protokolle MSMQ, HTTP, TCP/IP, SMTP SOAP ist überall in .NET Inhalt Web Services und “.NET” SOAP SOAP Toolkit Vergleich SOAP und COM Zukunft? Brücke zur .NET-Plattform SOAP Toolkit für Visual Studio 6.0 Toolkit als Hilfestellung SOAP kann auch ohne Toolkit genutzt werden (Umgang mit XML, HTTP) Toolkit Download: http://msdn.microsoft.com/xml/ Hilfe durch das SOAP Toolkit Handhabe von XML, SOAP Kein Einarbeiten in Netzprotokolle Implementierungs-Hilfen Deployment-Hilfen Bekannte Fertigkeiten (Umgang mit COM) Tools Inhalt des SOAP Toolkit Serverseitige Zugriffslauscher (Reference Listeners) Remote Object Proxy Engine (ROPE) SDL und Quelltext-Generator (Wizard) Dokumentation Kompletter Code-Beispiele Quelltext Was ist SDL? “Service Description Language” XML-basierte Grammatik zur Beschreibung der Funktionalität von Web-Services Erweiterbar Vergleich mit IDL IDL ist plattformabhängig SDL ist plattformunabhängig NICHT in Stein gemeißelt! d.h. solange es keinen “echten” Standard gibt, ist SDL eine Lösung. Was ist ROPE? Remote Object Proxy Engine Aufrufschnittstelle für Web Service-Clients ATL COM nutzbar von COM-unterstützenden Sprachen Objekte Proxy SOAPPackager WireTransfer versch. Objekte Zwei Programmier-Modelle Einfach – “VB”-typisch Erweitert – “VC”-typisch Server mit VB6 Public Function GetDayCount() As Integer GetDayCount = 30 VB6 ActiveX DLL End Function *DLL Toolkit Wizard Toolkit Listener.ASP *.ASP *.XML http://localhost/demo/ SOAP Listeners (Dispensers) ISAPI Listener ISAPI Extension Hohe Performanz ASP Listener mehr Kontrolle über den Prozeß kann den Service direkt ausführen ROPE – Einfaches Modell Proxy Object.Method(Param1, … ParamN) Benutzen wie gewohnt Wenig Quelltext-Aufwand für Entwickler Hohe Abstraktionsstufe orientiert an RPC-Welt (Funktionsaufrufe) Client Quelltext VB6 Dim oProxy As NEW ROPE.Proxy Service Description holen und Proxy erzeugen oProxy.LoadServicesDescription icURI, _ "http://localhost/demo/myservice.xml" Methodenaufruf MsgBox CStr( oProxy.GetDayCount() ) ROPE – Erweitertes Modell SOAPPackager hoher Grad an Kontrolle sehr flexibel orientiert an der Nachrichten-Welt (Senden, Empfangen) WireTransfer Kontrolle über Kopfdaten der Protokoll-Nachrichten Client VB6 – extended 1 Dim oSOAP As New ROPE.SOAPPackager Dim oWire As New ROPE.WireTransfer Dim cData As ROPE.ServiceDescriptors Dim sBuffer As String Dim bRetVal As Boolean Dim sListener As String Const sMethod = "GetDayCount„ Service-Beschreibung holen bRetVal = oSOAP.LoadServicesDescription (icURI, _ "http://localhost/demo/vacation.xml") Listener abfragen Set cData = oSOAP.GetServiceDescriptors(icENDPOINTINFO) If VarType(cData(0)) = vbString Then sListener = cData(0) Else sListener = cData(0).URI End If z.B. sListener = "http://localhost/demo/vacation.asp" Client VB6 – extended 2 Methoden-Parameter als XML holen sBuffer = oSOAP.GetMethodStruct (sMethod, icINPUT) SOAP-Request als XML erzeugen oSOAP.SetPayloadData icREQUEST, "", sMethod, sBuffer evtl. oSOAP.SetParameter icREQUEST, sParaName, sValue sBuffer = oSOAP.GetPayload(icREQUEST) HTTP-POST (Response nach sBuffer) oWire.AddStdSOAPHeaders sListener, sMethod, Len(sBuffer) sBuffer = oWire.PostDataToURI(sListener, sBuffer) return-Wert heraussuchen oSOAP.SetPayload icRESPONSE, sBuffer sBuffer = CStr(oSOAP.GetParameter(icRESPONSE, "return")) MsgBox sBuffer Datentypen siehe http://www.w3.org/TR/xmlschema-2/ es ist eine Spezifikation! Verweise auf andere Standards (ISO, „See also ISO 8601 Date and Time Formats (§D).“ SQL) schön für Sprachexperten „a datatype is a 3-tuple, consisting of [...] value space [...] lexical space [...] set of facets [...]. A facet is a single defining aspect of a value space.“ Fragen bleiben „The value space of binary is the set of finite-length sequences of binary octets.“ Datentypen (ff) Primitive Datentypen string, boolean, double, decimal, timeDuration, uriReference,... Vordefinierte abgeleitete Datentypen byte, short, int, time, date, timePeriod, recurringDay (z.B. jeder 5te im Monat) Benutzerdefinierte Datentypen Listen von Datentypen (vgl. structs), Bereichseinschränkungen,... Toolkit Wizard Probieren geht einher mit Studieren (Toolkit-Gedanke). Notfalls den erzeugten Text nacheditieren. Das Szenario… Anwendung oder Browser (3) (5) SOAP ROPE (7) (1) (4) SOAP ROPE Web Service HTML Web Service SDL (5) Web Page (6) (5) (2) SDL Web Service DATEN 1 – SDL anfordern 2 – SDL erhalten und paresen 3 – Methodenaufruf (Start) 4 – SOAP Anforderung senden 5 – WS arbeitet (Business Logic) 6 – SOAP Response erhalten 7 – Methodenaufruf (Ende) SOAP in der Industrie Microsoft IBM/Lotus DevelopMentor Userland Software IONA (Soap Bridge zu CORBA) Rogue Wave ObjectSpace JetForm Digital Creations Rockwell Software Scriptics Intel Sun und andere… ACHTUNG: Derzeit ist noch kein Standard endgültig “abgesegnet”. Inhalt Web Services und “.NET” SOAP SOAP Toolkit Vergleich SOAP und COM Zukunft? SOAP vs. COM SOAP kein Ersatz für COM SOAP ist Kommunikationsprotokoll, COM ist Komponentenmodell SOAP könnte als RPC-Protokoll unter COM dienen: DCOM-Ersatz? Komponentenkonzept, verteilte Transaktionen, Impersonifizierung,... aber Kausalität etc. fehlt im Protokoll SOAP verbindet zu Services im WWW (HTTP-Tunneling) Services im Firmennetz Services auf lokalem Rechner (Performance?!) SOAP vs. COM Abstraktions -Schichten Objekte und Komponenten (COM...) Funktionsaufruf-Protokoll (ORPC, SOAP,...) Transport-Protokoll (HTTP,...) SOAP-Verbindung ist plattformunabhängig. z.B. Keine COM-CORBA-Bridge nötig Lösungs-Design sollte Verlagerung von Services aus dem Firmennetz nach Außen und umgekehrt berücksichtigen (“.net”) Außen SOAP – innen... COM: “SOPE Toolkit Wizard” von Microsoft man nehme COM-Objekt Wizard und erhält SDL-File Programmteile, um das COM-Objekt als WebService laufen zu lassen CORBA: “Xorba” von Rogue Wave EJB: “Soap4J” von IBM Inhalt Web Services und “.NET” SOAP SOAP Toolkit Vergleich SOAP und COM Zukunft? Zukunft App Code Service Service Lösungs-Design sollte Verlagerung von Services aus dem Firmennetz nach Außen und umgekehrt berücksichtigen (“.net”)! WebServices werden zum großen Geschäft? SOAP ersetzt DCOM-Protokoll (bei COM) bzw. IIOP (bei CORBA)? Visual Studio .NET wird kommen! ebXML? Electronic Business XML Initiative (weniger Microsoft) Schwerpunkt sind B2B-Szenarien auf XMLBasis http://ebxml.org./ Ende 1999: ein 18 Monats-Programm zum Finden einer technischen XML-Basis, auf der eine Standardisierung aufsetzen kann 08/00: Einigung, dass SOAP alleine zu wenig ist Fazit: Sich mit XML-Technologien beschäftigen und Augen offen halten Ressourcen SOAP Toolkit Download http://msdn.microsoft.com/xml/ Newsgroup Verbesserungsvorschläge (engl.) [email protected] World Wide Web Consortium microsoft.public.msdn.soaptoolkit http://www.w3.org/xml/ http://www.w3.org/tr/soap DevelopMentor “Essential .NET” http://www.develop.com/dm/course.asp?id=95 Fragen?