Web-Services in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual...

Post on 05-Apr-2015

173 views 9 download

Transcript of Web-Services in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual...

Web-ServicesWeb-Servicesin Visual FoxPro 9.0in Visual FoxPro 9.0

deutschsprachige FoxPro User Groupdeutschsprachige FoxPro User Group

Rainer BeckerRainer Becker

Microsoft Visual FoxPro 9.0 WebCastMicrosoft Visual FoxPro 9.0 WebCast

WEB

Teil 10: Arbeiten mit WebServicesTeil 10: Arbeiten mit WebServices

Mittwoch, 19.10.2005, 16:00 – 17:00 UhrMittwoch, 19.10.2005, 16:00 – 17:00 Uhr Beschreibung: Gerne wird Visual FoxPro für die Beschreibung: Gerne wird Visual FoxPro für die

schnelle Anwendungsentwicklung von Desktop-schnelle Anwendungsentwicklung von Desktop-Applikationen oder von Client/Server-Applikationen Applikationen oder von Client/Server-Applikationen verwendet. Aber auch die Erstellung von verwendet. Aber auch die Erstellung von WebServices stellt mit dieser leistungsfähigen WebServices stellt mit dieser leistungsfähigen Entwicklungsumgebung keinerlei Problem dar! Die Entwicklungsumgebung keinerlei Problem dar! Die schnellen Datenbank- und Stringfunktionen erlauben schnellen Datenbank- und Stringfunktionen erlauben die leichte Erstellung von performanten Diensten für die leichte Erstellung von performanten Diensten für eine verteilte Anwendung. eine verteilte Anwendung.

Rainer BeckerRainer Becker

dFPUGdFPUG Online-AngeboteOnline-Angebote LoseblattsammlungLoseblattsammlung

VFP-EntwicklerkonferenzVFP-Entwicklerkonferenz VFP-LokalisierungVFP-Lokalisierung Framework Visual ExtendFramework Visual Extend MVP, MCP, ISVMVP, MCP, ISV Wizards & Builders GmbHWizards & Builders GmbH

Wie bekomme ich VFP ?Wie bekomme ich VFP ?

Update von 6.0, 7.0, 8.0 sowie VS 97Update von 6.0, 7.0, 8.0 sowie VS 97 Nicht von VFP 5.0 oder früherNicht von VFP 5.0 oder früher

Internationale und US/Canada-VersionInternationale und US/Canada-Version Preisunterschied durch DollarverfallPreisunterschied durch Dollarverfall Technisch identischTechnisch identisch Kein Support / Marketingbudget für US-Version in BRDKein Support / Marketingbudget für US-Version in BRD

dFPUG bietet exklusiv „Deutsche Version“dFPUG bietet exklusiv „Deutsche Version“ Benutzeroberfläche, Berichtsdesigner, WerkzeugeBenutzeroberfläche, Berichtsdesigner, Werkzeuge

VortragsthemenVortragsthemen

Verwendbare WebServicesVerwendbare WebServices Aufrufen von WebServicesAufrufen von WebServices Begriffe, VersionsgeschichteBegriffe, Versionsgeschichte VorbereitungenVorbereitungen SOAP-ToolkitSOAP-Toolkit IIS-KonfigurationIIS-Konfiguration Diverse weitere HinweiseDiverse weitere Hinweise Andere MöglichkeitenAndere Möglichkeiten

VorbemerkungenVorbemerkungen Vorbereitend wird immer ein COM-Server benötigtVorbereitend wird immer ein COM-Server benötigt

siehe WebCast 9 Arbeiten mit COM-Serversiehe WebCast 9 Arbeiten mit COM-Server bitte zuerst erfolgreich einen COM-Server erstellen…bitte zuerst erfolgreich einen COM-Server erstellen… und ggf. ein paar WebServices einfach mal aufrufen…und ggf. ein paar WebServices einfach mal aufrufen…

Die Aufruflogik im Internet ist grundsätzlich unter-Die Aufruflogik im Internet ist grundsätzlich unter-schiedlich! Deshalb sind Geschäftsobjekte nur schiedlich! Deshalb sind Geschäftsobjekte nur bedingt geeignet & separate COM-Server oft besser!bedingt geeignet & separate COM-Server oft besser!

WebServices müssen streng typisiert sein, was bei WebServices müssen streng typisiert sein, was bei COM-Server nur optional ist, ggf PRG-Datei separatCOM-Server nur optional ist, ggf PRG-Datei separat

Für das Deployment wird immer ein Windows- Für das Deployment wird immer ein Windows- WebServer im Internet benötigt…WebServer im Internet benötigt…

Verwendbare WebServices Verwendbare WebServices Statt einen WebService selbst anzubieten, kann man Statt einen WebService selbst anzubieten, kann man

erstmal auch nur auf einen solchen zugreifen, z.B.:erstmal auch nur auf einen solchen zugreifen, z.B.: FoxWiki (http://fox.wikis.com)FoxWiki (http://fox.wikis.com) Universal Thread (http://www.universalthread.com)Universal Thread (http://www.universalthread.com) ProFox (http://www.leafe.com)ProFox (http://www.leafe.com) FoxCentral (http://www.foxcentral.com)FoxCentral (http://www.foxcentral.com) Google, Amazon, eBay, FedEx, WhoIs, Google, Amazon, eBay, FedEx, WhoIs,

CurrencyConverter, BabelFish, Headline NewsCurrencyConverter, BabelFish, Headline News dFPUG-Portal (in Vorbereitung)dFPUG-Portal (in Vorbereitung) dFPUG-Forum (in Vorbereitung)dFPUG-Forum (in Vorbereitung)

Und schon wieder: die TaskPane!Und schon wieder: die TaskPane!

Client für WebServicesClient für WebServices

Interaktives Testen mit TaskpaneInteraktives Testen mit Taskpane Einbindung in eigene Formulare:Einbindung in eigene Formulare:

Öffnen des FormularsÖffnen des Formulars Öffnen der ToolboxÖffnen der Toolbox Drag & Drop der Klasse WebService auf das FormularDrag & Drop der Klasse WebService auf das Formular Anwählen der Klasse mit der MausAnwählen der Klasse mit der Maus Rechte Maustaste für Generatoren (Builder)Rechte Maustaste für Generatoren (Builder) Aufruf des XML WebService BuildersAufruf des XML WebService Builders

WebService-Klase im FormularWebService-Klase im Formular

Parameter eingebenParameter eingeben Ergebnisse als XMLErgebnisse als XML Ergebnisse in GridErgebnisse in Grid

Testen:Testen:

Zuordnung Parameter/AusgabeZuordnung Parameter/Ausgabe

Wechsel des WS / komplexe DatenWechsel des WS / komplexe Daten

Soviel zum Aufruf von WSSoviel zum Aufruf von WS

Seit Visual FoxPro 8.0 gibt es umfangreiche Seit Visual FoxPro 8.0 gibt es umfangreiche Werkzeuge, die den Entwickler beim Aufruf eines Werkzeuge, die den Entwickler beim Aufruf eines WebServices unterstützen…WebServices unterstützen…

Bevor man einen eigenen WebService baut, ist es Bevor man einen eigenen WebService baut, ist es recht sinnvoll, sich das kurz einmal anzuschauen…recht sinnvoll, sich das kurz einmal anzuschauen…

Allerdings ist das alleine schon ein Vortrag oder Allerdings ist das alleine schon ein Vortrag oder WebCast…WebCast…

Details finden sich in diversen Artikeln sowie im Details finden sich in diversen Artikeln sowie im Updatebuch zu Visual FoxPro 8.0!Updatebuch zu Visual FoxPro 8.0!

BegriffserläuterungenBegriffserläuterungen

WSDL: Web Service Description LanguageWSDL: Web Service Description Language XML-Beschreibung der XML-Beschreibung der

WSML: Web Service Meta LanguageWSML: Web Service Meta Language COM-Referenz, siehe Programme\MSSOAP\SOAP.CHMCOM-Referenz, siehe Programme\MSSOAP\SOAP.CHM

UDDI: Universal Description, Discovery, IntegrationUDDI: Universal Description, Discovery, Integration Verzeichnis von verfügbaren WebdienstenVerzeichnis von verfügbaren Webdiensten

SOAP: Simple Object Access ProtocollSOAP: Simple Object Access Protocoll SOA: Service Oriented ArchitectureSOA: Service Oriented Architecture

VersionsgeschichteVersionsgeschichte

Einführung von WebServices in:Einführung von WebServices in:Visual FoxPro 7.0 mit SOAP-Toolkit 2.0Visual FoxPro 7.0 mit SOAP-Toolkit 2.0

Aktuell: Visual FoxPro 9.0 mit SOAP-Toolkit 3.0Aktuell: Visual FoxPro 9.0 mit SOAP-Toolkit 3.0 Lifecycle-SupportLifecycle-Support

Visual FoxPro 9.0 bis 2014Visual FoxPro 9.0 bis 2014 SOAP-Toolkit bis 2013 (NUR für VFP!)SOAP-Toolkit bis 2013 (NUR für VFP!)

Weiterentwicklung auf Basis von INDIGOWeiterentwicklung auf Basis von INDIGO kommt mit WinFX als AddOn für XP sowie in Vistakommt mit WinFX als AddOn für XP sowie in Vista kapselt VFP-WebServices komplett in .NET kapselt VFP-WebServices komplett in .NET

Sinnvolle WebServices in AppsSinnvolle WebServices in Apps

Beispiele aus dem Framework Visual Extend 9.5:Beispiele aus dem Framework Visual Extend 9.5: Posten von Nachrichten in Support-ForumPosten von Nachrichten in Support-Forum Senden von Fehlermeldungen in FehlerdatenbankSenden von Fehlermeldungen in Fehlerdatenbank Registrierung von Anwendern (Testversion)Registrierung von Anwendern (Testversion) Bestellung von Anwendern (Testverison auf Vollversion)Bestellung von Anwendern (Testverison auf Vollversion) Download von UpdatesDownload von Updates

Bei temporärer Nichtverfügbarkeit eines Internet-Bei temporärer Nichtverfügbarkeit eines Internet-zugangs oder des WebServices alternativ eMail…zugangs oder des WebServices alternativ eMail…

Für Taskpane kein WebService notwendig…Für Taskpane kein WebService notwendig…

Vorbereitung des COM-ServersVorbereitung des COM-Servers

Erstellungsoption: Erstellungsoption: Multi-Threaded Multi-Threaded COM-ServerCOM-Server

MindestensMindestens1x OLEPUBLIC1x OLEPUBLIC

1 WebService je1 WebService jeOLEPUBLICOLEPUBLIC

Max. 1 WebserviceMax. 1 Webservice

WebService-ErstellungWebService-Erstellung

Projektinfo Servers:Projektinfo Servers: Multi-UseMulti-Use Project NameProject Name

Multi-Threaded und Multi-Threaded und Multi Use: Multi Use: zwingend notwendig zwingend notwendig für Internet-Betrieb für Internet-Betrieb wg. Hauptspeicher!wg. Hauptspeicher!

WebService Publisher WizardWebService Publisher Wizard

Aufruf des WebService-Aufruf des WebService-Builders im Projekt Builders im Projekt Kontrolle PfadangabeKontrolle Pfadangabe Ggf. Auswahl KlasseGgf. Auswahl Klasse Ggf. weitere OptionenGgf. weitere Optionen

Erweiterte OptionenErweiterte Optionen

Eventuell erweiterte Eventuell erweiterte Optionen einstellen:Optionen einstellen:Umstellung ASPUmstellung ASP

ProjectHookProjectHook Wsphook in Wsphook in

_webservices_webservices

Speichert unter Speichert unter FOXWS.DBF in FOXWS.DBF in _FOXCODE_FOXCODE

IntelliSense-Script IntelliSense-Script erzeugen lassenerzeugen lassen

Virtuelle Verzeichnisse im IISVirtuelle Verzeichnisse im IIS

Wird automatisch Wird automatisch angelegtangelegt

Unterschied Unterschied zwischen Pfad zwischen Pfad und virtuellem und virtuellem Verzeichnis UND Verzeichnis UND Startzverzeichnis!Startzverzeichnis!

Kann leider hier Kann leider hier nicht hinreichend nicht hinreichend behandelt werdenbehandelt werden

Ergebnisse des BuildersErgebnisse des Builders .WSDL .WSDL

(Description)(Description) .WSML .WSML

(Meta/COM)(Meta/COM) Ggf. zusätzliche Ggf. zusätzliche

ASP-SeiteASP-Seite wird direkt wird direkt

aufgerufenaufgerufen

ProjectHook für ProjectHook für NeugenerierungNeugenerierung

Anmeldung bei IntelliSenseAnmeldung bei IntelliSense

Eintragen der Klasse unter Types / Web Services im Eintragen der Klasse unter Types / Web Services im IntelliSense- ManagerIntelliSense- Manager

Ansprechen von WebServicesAnsprechen von WebServices IntelliSense erzeugt entsprechenden Code:IntelliSense erzeugt entsprechenden Code:

und zeigt aufrufbare Methoden zur Auswahl an…und zeigt aufrufbare Methoden zur Auswahl an…

Was geht schief?Was geht schief?

Mögliche Probleme (OLE-Fehlermeldungen):Mögliche Probleme (OLE-Fehlermeldungen): bei Pfaden:bei Pfaden:

Windows/System32Windows/System32(Runtime)(Runtime)

CD JUSTPATH(CD JUSTPATH(_VFP.ServerName)_VFP.ServerName)

Probleme mit SOAPISAP.DLL (installieren oder ASP)Probleme mit SOAPISAP.DLL (installieren oder ASP)

Registrierung Listener (1)Registrierung Listener (1) Registrierung der Registrierung der

SOAPISAP.DLL für SOAPISAP.DLL für performantere performantere ISAPI-Listener:ISAPI-Listener:

1.1. Default-Website, Default-Website, Eigenschaften, Home Eigenschaften, Home DirectoryDirectory

2.2. Button ConfigurationButton Configuration

3.3. Auswählen der Auswählen der Endung .WSDLEndung .WSDL

Registrierung Listener (2)Registrierung Listener (2)

Auswahl von C:\Program Files\Common Files\Auswahl von C:\Program Files\Common Files\MSSoap\Binaries\soapisap.dllMSSoap\Binaries\soapisap.dll

Falls nicht sichtbar:Falls nicht sichtbar:INI usw. wählenINI usw. wählenund ändernund ändern

nicht auf XP…nicht auf XP…

Alternativer Aufruf: SOAP-ClientAlternativer Aufruf: SOAP-Client

Statt Installation der Klassen von Visual FoxPro kann Statt Installation der Klassen von Visual FoxPro kann man auch direkt mit dem SOAP-Client zugreifenman auch direkt mit dem SOAP-Client zugreifen

Codebeispiel:Codebeispiel:

lows = NEWOBJECT("MSSOAP.SoapClient30")lows = NEWOBJECT("MSSOAP.SoapClient30")

lows.MSSoapInit("http://dlabsoftuh.homeip.net/lows.MSSoapInit("http://dlabsoftuh.homeip.net/webservices/dlabsoft.wsdl")webservices/dlabsoft.wsdl")

? lows.zeittest()? lows.zeittest()

Wesentlich einfachere Zugriffsmöglichkeit!Wesentlich einfachere Zugriffsmöglichkeit!

Minimale Sicherheit einbauenMinimale Sicherheit einbauen

Internet InformationsdiensteInternet Informationsdienste Eigenschaften virtuelles VerzeichnisEigenschaften virtuelles Verzeichnis Reiter VerzeichnissicherheitReiter Verzeichnissicherheit

Abschalten anonymer ZugriffAbschalten anonymer Zugriff Einschalten StandardauthentifizierungEinschalten Standardauthentifizierung

Erweiterung im Codebeispiel:Erweiterung im Codebeispiel:

lows.lows.ConnectorProperty("AuthUser") = "username"ConnectorProperty("AuthUser") = "username"

lows.lows.ConnectorProperty("AuthPassword")= "password"ConnectorProperty("AuthPassword")= "password"

Typdeklaration wichtig!Typdeklaration wichtig!

Korrekte Typdefinition für Parameter und ReturnwertKorrekte Typdefinition für Parameter und Returnwert Nur programmatisch vollständig möglich, siehe COMNur programmatisch vollständig möglich, siehe COM FUNCTION getnews (ldDate as Date) as StringFUNCTION getnews (ldDate as Date) as String

Neupublizierung über Wizard notwendig damit ausNeupublizierung über Wizard notwendig damit aus<message name='hwpclass.getnews'><message name='hwpclass.getnews'>

</message></message>

die richtige Definition wird:die richtige Definition wird:<message name='hwpclass.getnews'><message name='hwpclass.getnews'>

<part name='ldDate' type='xsd:dateTime'/><part name='ldDate' type='xsd:dateTime'/>

</message></message>

COM-Server indirekt aufrufenCOM-Server indirekt aufrufen

Ggf. aus dem Programm den COM-Server aufrufenGgf. aus dem Programm den COM-Server aufrufen

DEFINE CLASS MyCOMInterface AS Custom OLEPUBLICDEFINE CLASS MyCOMInterface AS Custom OLEPUBLIC

FUNCTION MyMethod (MyParm AS String) AS StringFUNCTION MyMethod (MyParm AS String) AS String

LOCAL o AS myclassLOCAL o AS myclass

o = CREATEOBJECT("myclass")o = CREATEOBJECT("myclass")

RETURN o.MyMethod(MyParm)RETURN o.MyMethod(MyParm)

ENDDEFINEENDDEFINE

Dadurch kann man COM-Server beliebig oft ändern, ohne den Dadurch kann man COM-Server beliebig oft ändern, ohne den WebService neu publizieren zu müssen…WebService neu publizieren zu müssen…

Neuerstellung: Freigabe der DLLNeuerstellung: Freigabe der DLL

Computerverwaltung Computerverwaltung Restart IISRestart IIS

oder: IISRESET auf oder: IISRESET auf dem DOS-Promptdem DOS-Prompt

oder: KILL.EXE um oder: KILL.EXE um DLL abzuschiessenDLL abzuschiessen

Es geht für manche Es geht für manche Verwendungszwecke auch Verwendungszwecke auch

EINFACHER!EINFACHER!

In manchen Fällen reicht vielleicht auch In manchen Fällen reicht vielleicht auch eine einfachere Lösung:eine einfachere Lösung:

Hinweise auf diverse Beispiele auf Hinweise auf diverse Beispiele auf http://afp.dfpug.dehttp://afp.dfpug.de

Erstellen von AFP-SeitenErstellen von AFP-Seiten

Verwendung von Visual FoxPro als Skriptsprache in Verwendung von Visual FoxPro als Skriptsprache in HTML-Seiten mit Active FoxPro Pages (AFP/AFX): HTML-Seiten mit Active FoxPro Pages (AFP/AFX):

<% FoxPro-Code %><% FoxPro-Code %>

Diverse Aufrufbeispiele auf http://afp.dfpug.deDiverse Aufrufbeispiele auf http://afp.dfpug.de Erzeugung von formatierten Tabellen mit ParameternErzeugung von formatierten Tabellen mit Parametern Rückgabe von RSSRückgabe von RSS Rückgabe von XMLRückgabe von XML

Webanwendungen:Webanwendungen:VFX–AFX WizardVFX–AFX Wizard

Internet-Formulare per Mausklick!Internet-Formulare per Mausklick!

Voraussetzungen:Voraussetzungen: VFX 9.5 und VFP 9.0 SP1VFX 9.5 und VFP 9.0 SP1 AFXAFX

Ähnlich ASP, aber VFP basiertÄhnlich ASP, aber VFP basiert

IISIIS FoxPro-Variante in AFX enthaltenFoxPro-Variante in AFX enthalten

Skalierbarkeit:Skalierbarkeit: über AFP für viele parallele User / Interneteinsatzüber AFP für viele parallele User / Interneteinsatz

Querverweise (Artikel)Querverweise (Artikel) 02-16 Erstellen von Webdiensten mit Visual FoxPro02-16 Erstellen von Webdiensten mit Visual FoxPro 06-15 Programmieren Sie Ihre Daten 06-15 Programmieren Sie Ihre Daten 06-32 Suchen mit Webdiensten06-32 Suchen mit Webdiensten 06-35 Veröffentlichen Ihres ersten Webdienstes 1 06-35 Veröffentlichen Ihres ersten Webdienstes 1 06-36 Veröffentlichen Ihres ersten Webdienstes 2 06-36 Veröffentlichen Ihres ersten Webdienstes 2 06-37 Veröffentlichen Ihres ersten Webdienstes 3 06-37 Veröffentlichen Ihres ersten Webdienstes 3 07-16 Websuche mit VFP und Google07-16 Websuche mit VFP und Google 01-03 Arbeiten mit Web-Diensten in VFP7 (New18)01-03 Arbeiten mit Web-Diensten in VFP7 (New18) Erweiterungen bei COM und Webdiensten in VFP 8.0 Erweiterungen bei COM und Webdiensten in VFP 8.0 Whats New in Visual FoxPro 7.0 Chapter 15 Whats New in Visual FoxPro 7.0 Chapter 15

Querverweise (Vorträge)Querverweise (Vorträge)

E-WRAP.PDF I wish I had a Web Service E-WRAP.PDF I wish I had a Web Service D-SOAP Web Services mit VFP und SOAP D-SOAP Web Services mit VFP und SOAP D-WEBS Sichere WebServices (Security)D-WEBS Sichere WebServices (Security) E-SERV Using Web Services with VFP 7.0 E-SERV Using Web Services with VFP 7.0 D-SERV Three-Tier Architektur & die Webservices von VFP7D-SERV Three-Tier Architektur & die Webservices von VFP7 E-FATX Internet enabling Fat Client applications with XML E-FATX Internet enabling Fat Client applications with XML D-IUPD Internet-Features für 'alte' Applikationen D-IUPD Internet-Features für 'alte' Applikationen NET Chapter 12 XML Web ServicesNET Chapter 12 XML Web Services E-SERV Using SQL-Server XML ServicesE-SERV Using SQL-Server XML Services

Weiterführendes MaterialWeiterführendes Material

Visual FoxPro 9.0Visual FoxPro 9.0 UpdatebuchUpdatebuch Roadshow-CDRoadshow-CD Lokalisierungs-CDLokalisierungs-CD

Visual FoxPro 8.0Visual FoxPro 8.0 UpdatebuchUpdatebuch Deutsche HilfedateiDeutsche Hilfedatei

Online-Angebote der dFPUGOnline-Angebote der dFPUG Forum, Portal, eNewsletter, Homepage, WikiForum, Portal, eNewsletter, Homepage, Wiki

Vielen Dank!Vielen Dank!

Fragen an hotline@dfpug.deFragen an hotline@dfpug.deoder (besser) http://forum.dfpug.de oder (besser) http://forum.dfpug.de

Besuchen Sie unsere Webseiten: Besuchen Sie unsere Webseiten: http://www.dfpug.dehttp://www.dfpug.de, , http://portal.dfpug.dehttp://portal.dfpug.de, , http://forum.dfpug.dehttp://forum.dfpug.de, ,

http://newsletter.dfpug.dehttp://newsletter.dfpug.de, , http://devcon.dfpug.dehttp://devcon.dfpug.de, , http://roadshow.dfpug.dehttp://roadshow.dfpug.de, http://www.visualextend.de, , http://www.visualextend.de,

http://www.linuxtransfer.de, http://www.visualfoxpro.de http://www.linuxtransfer.de, http://www.visualfoxpro.de

Riddle of the dayRiddle of the day

? CHRTRAN(CHRTRAN('S6O1 W2S634G 5789', ? CHRTRAN(CHRTRAN('S6O1 W2S634G 5789', '6789', 'TIME()'), '12345','PAINT()')'6789', 'TIME()'), '12345','PAINT()')