Toon posts:

[Delphi 6] SOAP web service probleem

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Een uitdaging...

Ik heb al vaker een SOAP service geschreven in D6, met de standaard TWebModule, THTTPSoapDispatcher, etc. componenten, en dat werkt allemaal prima.
Maar als ik de WSDL's van die services bekijk, staan in alle gevallen de soapActions op 'style="rpc"'.

Nu moet ik echter een SOAP service maken aan de hand van de WSDL van een andere partij, en daarin staan ze op 'style="document"'. Ik heb echter geen flauw idee hoe ik die style in Delphi kan wijzigen, en na lang zoeken op 't internet en het doorspitten van de {DELPHI}\source\internet bestanden heb een bang vermoeden dat 't met de standaard componenten ook niet zo 1-2-3 gaat lukken. Ook Indy 10 lijkt alleen 'style="rpc"' te ondersteunen aan de server-kant (al moet ik toegeven dat ik dat nog niet helemaal heb uitgezocht).

De "andere kant" is een Java client, en de makers daarvan zijn er niet zo happig op om hun SOAP interface aan te passen. ('t is een self-checkin terminal voor hotels, die met meerdere hotel-systemen moet kunnen babbelen)
Ze staan dus ook niet te springen om bv. JAX-RPC in te zetten...

Tips of hints zijn welkom, want dit projectje moet 2 weken geleden af zijn. :)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Delphi's SOAP componenten kunnen document style niet aan. Als .Net's SOAP het wel kan zou je Delphi for .Net kunnen gebruiken. Een andere mogelijkheid is MS-SOAP te gebruiken icm Delphi.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Voor zover ik nu kan bekijken heb ik 4 opties:

* 't Ding in Java schrijven.
Valt af wegens gebrek aan ervaring.

* Er een .NET web service van maken.
Zou kunnen, ik heb pasgeleden Delphi 2005 Enterprise gekocht en geinstalleerd.
Nadelen:
- Ik heb nog geen productie-werk gedaan met Delphi 2005 (wel met VS.NET, zou ook een optie zijn).
- Bij de klant moet het .NET framework en IIS (of Cassini) geinstalleerd/geconfigureerd zijn.

* IndySoap gebruiken.
Nadeel is dat dat nog steeds in beta is, en nog erg veel handwerk vergt.

* MS-SOAP Toolkit.
Nadeel is dat ik die nog nooit gebruikt heb...

Allemaal opties die niet fijn zijn als je een deadline hebt, maar ja, that's life...

Verwijderd

Topicstarter
't Is nu dan toch een .NET web service in Delphi 2005 geworden.
In eerste instantie kreeg ik niet eens een simpele HelloWorld SOAP service aan de praat (de browser wilde steeds m'n SOAPService.asmx downloaden), maar na wat zoeken was dat snel opgelost: 'aspnet_regiis -i', en m'n webservertje wist dat 'ie die files gewoon moest verwerken. Dit is overigens geen Delphi probleem, maar een IIS / .NET framework probleem, en heeft te maken met de volgorde waarin je de onderdelen installeert.

.NET gebruikt standaard al 'style="document"' (en presenteert dat als 'style="rpc"' naar .NET clients, om 't simpel te maken :?), en m'n web service babbelt nu prima met die 3rd-party client.
Nu nog alleen m'n D6 library omzetten naar .NET (IXMLDOMDocument wordt System.Xml.XmlDocument, etc.), en dan moet 't goed komen.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je kan ook VCL for .Net gebruiken waarin vele oude bekende VCL componten omgezet zijn naar .Net.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Duh! ;)
Alleen werkt dat niet zo heel erg florissant voor geimporteerde type libraries die nog Win32 only zijn.
Maar ja, zoals gezegd, that's life. :)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Volgens mij kan .Net ook via COM interop die type libraries importeren.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Klopt, maar dat zijn in feite lapmiddelen. Waarom zou ik via interop MSXMLDOM importeren wanneer .NET al een native XML afhandeling kent? Dan kan ik beter m'n eigen libraries aanpassen aan .Net, en zoveel werk is dat nou ook weer niet. Een aantal properties heten opeens anders, maar de structuur blijft hetzelfde.
Voor COM libraries waar .NET geen weet van heeft (oudere Crystal Reports versies bijvoorbeeld) is interop wel een uitkomst.
Pagina: 1