Web-Services in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 WebCast
Teil 10: Arbeiten mit WebServices Mittwoch, 19.10.2005, 16:00 – 17:00 Uhr Beschreibung: Gerne wird Visual FoxPro für die schnelle Anwendungsentwicklung von Desktop-Applikationen oder von Client/Server-Applikationen verwendet. Aber auch die Erstellung von WebServices stellt mit dieser leistungsfähigen Entwicklungsumgebung keinerlei Problem dar! Die schnellen Datenbank- und Stringfunktionen erlauben die leichte Erstellung von performanten Diensten für eine verteilte Anwendung.
Rainer Becker dFPUG VFP-Entwicklerkonferenz VFP-Lokalisierung Online-Angebote Loseblattsammlung VFP-Entwicklerkonferenz VFP-Lokalisierung Framework Visual Extend MVP, MCP, ISV Wizards & Builders GmbH
Wie bekomme ich VFP ? Update von 6.0, 7.0, 8.0 sowie VS 97 Nicht von VFP 5.0 oder früher Internationale und US/Canada-Version Preisunterschied durch Dollarverfall Technisch identisch Kein Support / Marketingbudget für US-Version in BRD dFPUG bietet exklusiv „Deutsche Version“ Benutzeroberfläche, Berichtsdesigner, Werkzeuge
Vortragsthemen Verwendbare WebServices Aufrufen von WebServices Begriffe, Versionsgeschichte Vorbereitungen SOAP-Toolkit IIS-Konfiguration Diverse weitere Hinweise Andere Möglichkeiten
Vorbemerkungen Vorbereitend wird immer ein COM-Server benötigt siehe WebCast 9 Arbeiten mit COM-Server bitte zuerst erfolgreich einen COM-Server erstellen… und ggf. ein paar WebServices einfach mal aufrufen… Die Aufruflogik im Internet ist grundsätzlich unter-schiedlich! Deshalb sind Geschäftsobjekte nur bedingt geeignet & separate COM-Server oft besser! WebServices müssen streng typisiert sein, was bei COM-Server nur optional ist, ggf PRG-Datei separat Für das Deployment wird immer ein Windows- WebServer im Internet benötigt…
Verwendbare WebServices Statt einen WebService selbst anzubieten, kann man erstmal auch nur auf einen solchen zugreifen, z.B.: FoxWiki (http://fox.wikis.com) Universal Thread (http://www.universalthread.com) ProFox (http://www.leafe.com) FoxCentral (http://www.foxcentral.com) Google, Amazon, eBay, FedEx, WhoIs, CurrencyConverter, BabelFish, Headline News dFPUG-Portal (in Vorbereitung) dFPUG-Forum (in Vorbereitung)
Und schon wieder: die TaskPane!
Client für WebServices Interaktives Testen mit Taskpane Einbindung in eigene Formulare: Öffnen des Formulars Öffnen der Toolbox Drag & Drop der Klasse WebService auf das Formular Anwählen der Klasse mit der Maus Rechte Maustaste für Generatoren (Builder) Aufruf des XML WebService Builders
WebService-Klase im Formular
Testen: Parameter eingeben Ergebnisse als XML Ergebnisse in Grid
Zuordnung Parameter/Ausgabe
Wechsel des WS / komplexe Daten
Soviel zum Aufruf von WS Seit Visual FoxPro 8.0 gibt es umfangreiche Werkzeuge, die den Entwickler beim Aufruf eines WebServices unterstützen… Bevor man einen eigenen WebService baut, ist es recht sinnvoll, sich das kurz einmal anzuschauen… Allerdings ist das alleine schon ein Vortrag oder WebCast… Details finden sich in diversen Artikeln sowie im Updatebuch zu Visual FoxPro 8.0!
Begriffserläuterungen WSDL: Web Service Description Language XML-Beschreibung der WSML: Web Service Meta Language COM-Referenz, siehe Programme\MSSOAP\SOAP.CHM UDDI: Universal Description, Discovery, Integration Verzeichnis von verfügbaren Webdiensten SOAP: Simple Object Access Protocoll SOA: Service Oriented Architecture
Versionsgeschichte Einführung von WebServices in: Visual FoxPro 7.0 mit SOAP-Toolkit 2.0 Aktuell: Visual FoxPro 9.0 mit SOAP-Toolkit 3.0 Lifecycle-Support Visual FoxPro 9.0 bis 2014 SOAP-Toolkit bis 2013 (NUR für VFP!) Weiterentwicklung auf Basis von INDIGO kommt mit WinFX als AddOn für XP sowie in Vista kapselt VFP-WebServices komplett in .NET
Sinnvolle WebServices in Apps Beispiele aus dem Framework Visual Extend 9.5: Posten von Nachrichten in Support-Forum Senden von Fehlermeldungen in Fehlerdatenbank Registrierung von Anwendern (Testversion) Bestellung von Anwendern (Testverison auf Vollversion) Download von Updates Bei temporärer Nichtverfügbarkeit eines Internet-zugangs oder des WebServices alternativ eMail… Für Taskpane kein WebService notwendig…
Vorbereitung des COM-Servers Erstellungsoption: Multi-Threaded COM-Server Mindestens 1x OLEPUBLIC 1 WebService je OLEPUBLIC Max. 1 Webservice
WebService-Erstellung Projektinfo Servers: Multi-Use Project Name Multi-Threaded und Multi Use: zwingend notwendig für Internet-Betrieb wg. Hauptspeicher!
WebService Publisher Wizard Aufruf des WebService- Builders im Projekt Kontrolle Pfadangabe Ggf. Auswahl Klasse Ggf. weitere Optionen
Erweiterte Optionen Eventuell erweiterte Optionen einstellen: Umstellung ASP ProjectHook Wsphook in _webservices Speichert unter FOXWS.DBF in _FOXCODE IntelliSense-Script erzeugen lassen
Virtuelle Verzeichnisse im IIS Wird automatisch angelegt Unterschied zwischen Pfad und virtuellem Verzeichnis UND Startzverzeichnis! Kann leider hier nicht hinreichend behandelt werden
Ergebnisse des Builders .WSDL (Description) .WSML (Meta/COM) Ggf. zusätzliche ASP-Seite wird direkt aufgerufen ProjectHook für Neugenerierung
Anmeldung bei IntelliSense Eintragen der Klasse unter Types / Web Services im IntelliSense- Manager
Ansprechen von WebServices IntelliSense erzeugt entsprechenden Code: und zeigt aufrufbare Methoden zur Auswahl an…
Was geht schief? Mögliche Probleme (OLE-Fehlermeldungen): bei Pfaden: Windows/System32 (Runtime) CD JUSTPATH( _VFP.ServerName) Probleme mit SOAPISAP.DLL (installieren oder ASP)
Registrierung Listener (1) Registrierung der SOAPISAP.DLL für performantere ISAPI-Listener: Default-Website, Eigenschaften, Home Directory Button Configuration Auswählen der Endung .WSDL
Registrierung Listener (2) Auswahl von C:\Program Files\Common Files\MSSoap\Binaries\soapisap.dll Falls nicht sichtbar: INI usw. wählen und ändern nicht auf XP…
Alternativer Aufruf: SOAP-Client Statt Installation der Klassen von Visual FoxPro kann man auch direkt mit dem SOAP-Client zugreifen Codebeispiel: lows = NEWOBJECT("MSSOAP.SoapClient30") lows.MSSoapInit("http://dlabsoftuh.homeip.net/webservices/dlabsoft.wsdl") ? lows.zeittest() Wesentlich einfachere Zugriffsmöglichkeit!
Minimale Sicherheit einbauen Internet Informationsdienste Eigenschaften virtuelles Verzeichnis Reiter Verzeichnissicherheit Abschalten anonymer Zugriff Einschalten Standardauthentifizierung Erweiterung im Codebeispiel: lows.ConnectorProperty("AuthUser") = "username" lows.ConnectorProperty("AuthPassword")= "password"
Typdeklaration wichtig! Korrekte Typdefinition für Parameter und Returnwert Nur programmatisch vollständig möglich, siehe COM FUNCTION getnews (ldDate as Date) as String Neupublizierung über Wizard notwendig damit aus <message name='hwpclass.getnews'> </message> die richtige Definition wird: <part name='ldDate' type='xsd:dateTime'/>
COM-Server indirekt aufrufen Ggf. aus dem Programm den COM-Server aufrufen DEFINE CLASS MyCOMInterface AS Custom OLEPUBLIC FUNCTION MyMethod (MyParm AS String) AS String LOCAL o AS myclass o = CREATEOBJECT("myclass") RETURN o.MyMethod(MyParm) ENDDEFINE Dadurch kann man COM-Server beliebig oft ändern, ohne den WebService neu publizieren zu müssen…
Neuerstellung: Freigabe der DLL Computerverwaltung Restart IIS oder: IISRESET auf dem DOS-Prompt oder: KILL.EXE um DLL abzuschiessen
Es geht für manche Verwendungszwecke auch EINFACHER! In manchen Fällen reicht vielleicht auch eine einfachere Lösung: Hinweise auf diverse Beispiele auf http://afp.dfpug.de
Erstellen von AFP-Seiten Verwendung von Visual FoxPro als Skriptsprache in HTML-Seiten mit Active FoxPro Pages (AFP/AFX): <% FoxPro-Code %> Diverse Aufrufbeispiele auf http://afp.dfpug.de Erzeugung von formatierten Tabellen mit Parametern Rückgabe von RSS Rückgabe von XML
Webanwendungen: VFX–AFX Wizard Internet-Formulare per Mausklick! Voraussetzungen: VFX 9.5 und VFP 9.0 SP1 AFX Ähnlich ASP, aber VFP basiert IIS FoxPro-Variante in AFX enthalten Skalierbarkeit: über AFP für viele parallele User / Interneteinsatz
Querverweise (Artikel) 02-16 Erstellen von Webdiensten mit Visual FoxPro 06-15 Programmieren Sie Ihre Daten 06-32 Suchen mit Webdiensten 06-35 Veröffentlichen Ihres ersten Webdienstes 1 06-36 Veröffentlichen Ihres ersten Webdienstes 2 06-37 Veröffentlichen Ihres ersten Webdienstes 3 07-16 Websuche mit VFP und Google 01-03 Arbeiten mit Web-Diensten in VFP7 (New18) Erweiterungen bei COM und Webdiensten in VFP 8.0 Whats New in Visual FoxPro 7.0 Chapter 15
Querverweise (Vorträge) E-WRAP.PDF I wish I had a Web Service D-SOAP Web Services mit VFP und SOAP D-WEBS Sichere WebServices (Security) E-SERV Using Web Services with VFP 7.0 D-SERV Three-Tier Architektur & die Webservices von VFP7 E-FATX Internet enabling Fat Client applications with XML D-IUPD Internet-Features für 'alte' Applikationen NET Chapter 12 XML Web Services E-SERV Using SQL-Server XML Services
Weiterführendes Material Visual FoxPro 9.0 Updatebuch Roadshow-CD Lokalisierungs-CD Visual FoxPro 8.0 Deutsche Hilfedatei Online-Angebote der dFPUG Forum, Portal, eNewsletter, Homepage, Wiki
Fragen an hotline@dfpug.de oder (besser) http://forum.dfpug.de Vielen Dank! Fragen an hotline@dfpug.de oder (besser) http://forum.dfpug.de Besuchen Sie unsere Webseiten: http://www.dfpug.de, http://portal.dfpug.de, http://forum.dfpug.de, http://newsletter.dfpug.de, http://devcon.dfpug.de, http://roadshow.dfpug.de, http://www.visualextend.de, http://www.linuxtransfer.de, http://www.visualfoxpro.de
Riddle of the day ? CHRTRAN(CHRTRAN('S6O1 W2S634G 5789', '6789', 'TIME()'), '12345','PAINT()')