Von APD über COM nach SOAP – Teil 1

Mit dieser kleinen Reihe aus vier Artikeln möchte ich aufzeigen, wie man seinen wertvollen Code, der zum Teil über Jahre mit dem Gupta Team Delveloper erstellt wurde, als SOAP-Webservice zur Verfügung stellen kann.
Der erste Schritt dabei führt über COM-Objekte, die man direkt mit dem Team-Developer (mindestens ab Version 3) erstellen kann. Diese können dann in ein VisualStudio WebService-Projekt eingebunden werden. Allerdings sind ein paar Details zu beachten, damit das Ganze auch Spaß macht:

COM-Objekt


Zunächst erstellen wir eine neue .apt-Datei; als Build-Option wird „InProc COM Server (dll)“ angegeben.
Über das Menü „Component / Wizards…“ den COM Class Wizard starten.
Dort die CoClass auswählen und einen Namen (z.B. MyCom) eintragen. Danach kann man den Wizard getrost verlassen. Die einzelnen Methoden lassen sich leichter im Outline anlegen.
Der Wizard hat zwei Klassen angelegt: Zum einen die CoClass namens MyCom – die muss da sein, können wir aber gleich wieder vergessen. Die viel wichtigere Klasse hat ein vorangestelltes „I“, also IMyCom. Dort werden wir unsere Methodenfunktionen anlegen.
Die Methoden mit Programmcode zu füllen ist natürlich ein Witz – damit haben wir jahrelange Erfahrung. Der einzig wirklich spannenden Teil sind die Parameter. Das ist unser Tor zur Außenwelt!

Parameter

Die Parameter-Typen Boolean, String und Date/Time lassen sich noch wie gewohnt verwenden – auch als Receiveparameter.
Bei den Number-Typen fällt auf, dass im nächsten Indent-Level der Eintrag „Use: VT_R8“ auftaucht. Das bedeutet, dass dieser Wert nach außen als Double übergeben wird. Man kann sich aber auch für VT_I4 (Int 4 Bytes), VT_UI4 (unsigned int 4 Bytes) und einige weitere entscheiden (siehe z.B. Data type mappings in der Hilfe).

Ausblick


In den nächsten Artikel wird das COM-Objekt beispielhaft in einem Excel-VBA-Projekt eingebunden. Danach werden wir uns mit weitaus wichtigeren Parametern beschäftigen: Arrays und BLOBs. Vor allem ersteres ist in typischen Gupta-Datenbankprojekten äußerst wichtig – hält aber auch die meisten Fallstricke bereit.