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 Report

Transcript 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?