1 / 20

Erstellen von COM-Servern in Visual FoxPro 9.0

COM. Erstellen von COM-Servern in Visual FoxPro 9.0. deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 Roadshow. Component Object Model.

newton
Download Presentation

Erstellen von COM-Servern in Visual FoxPro 9.0

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COM Erstellen von COM-Servern in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 Roadshow

  2. Component Object Model • COM (Component Object Model) ist ein Microsoft Standard, der es anderen Applikationen, wie zum Beispiel Active Server Pages oder Microsoft Office erlaubt, auf Funktionalität der eigenen Applikation zuzugreifen • Man kann jedem Client, der COM-Objekte ansprechen kann, über COM beliebige Funktionalität zur Verfügung stellen • Dies gilt also bi-direktional (von/aus VFP)

  3. Bekannte COM-Server I • Microsoft Word und Microsoft Excel • VFP kann auf diese Applikationen als Client problemlos zugreifen, oWord=createobject(„Word.Application“) • Die Funktionalität eines COM-Servers kann man im VFP Objekt Browser sehen • Intellisense unterstützt VFP bzgl. der benötigten Methoden und Eigenschaften z.B. local oExcel as ‚Excel.application‘

  4. Bekannte COM-Server II • Der COM Client (z.B. der Object Browser) kann die verfügbare Funktionalität eines COM-Servers über die sogenannte Type Library erfahren • Indem man andere COM-Server in eigenen VFP Projekten verwendet, kann man VFP-Funktionalität beliebig erweitern. z.B. Excel für alle Rechenaufgaben einsetzen... • Das Ansteuern eines anderen COM-Servers nennt man auch OLE-Automation

  5. COM-Objekt • COM-Server benötigt ein Objekt OLE-Public • Es muss sich nicht um ein Geschäftsobjekt handeln • Sehr oft sind die eigentlichen Geschäftsobjekte nicht wirklich für einen Aufruf von außen geeignet! • Es muss sich um ein Objekt handeln • Zumindest ein Wrapper-Objekt für Funktionen ist notwendig • Basierend auf einer Klasse (Control/Container) • Aufruf via „createobject“ aus anderen Anwendungen • Methoden/Eigenschaften sind sichtbar/modifizierbar und müssen daher geschützt werden (siehe unten)

  6. OLE Public / Erstellungsoptionen

  7. EXE / DLL (single/multi) • Ein In-Process COM-Server ist eine DLL welche im Speicherbereich des Clients instanziiert wird. Diese COM Server Art kann keine direkte Interaktion mit dem User Interface haben  OLE Fehler wird erzeugt • Single Threaded: Jede Clientanwendung erhält eine eigene Instanz des COM Servers • Multi Threaded: Verschiedene Clientanwendung können sich die gleiche Instanz des COM Servers „teilen“ • Details beziehen sich auf Einsatz der COM Server unter MTS/COM+ • Ein Out-of-Process COM-Server ist eine EXE, welche in einem eigenen Speicherbereich läuft. • Dieser COM-Server kann ein User Interface haben!

  8. Type Libraries • Die Type Library ist eine binäre Datei welche alle öffentlichen Klassen des COM Servers mit deren Methoden, Attributen und Events beschreibt. Eine Type Library kann vorliegen als: • Ein eigene binäre Datei (.TLB,.OLB) • Integriert in eine DLL • In eine EXE hineinkompiliert • In ein ActiveX Control integriert • Wenn Sie ein Projekt mit OLEPUBLIC Klassen unter VFP kompilieren erhalten Sie 3 Dateien: • Die DLL oder EXE mit dem Projektnamen • Eine Type Library (.TLB) • Eine Registry Datei (.VBR)

  9. COM-Server Dokumentation • Andere Entwickler welche Ihre Komponenten verwenden, erhalten nur die Information welche Sie in der Description (Beschreibung) abgelegt haben (Klasse, Attribute, Methoden) • COM Server Methoden sollten daher in der Beschreibung enthalten: • Beschreibung der zu übergebenden Parameter • High-Level Beschreibung der Methode • Was macht die Methode • Beschreibung des Return Wertes

  10. Bessere Dokumentation in PRG! • COMATTRIB (nur in PRG Dateien): • Festlegen welchen Status eine Property/Methode hat (nFlags bzw [1]) • Restricted, Hidden, NonBrowsable • Hilfe String festlegen [2] • Gross/Kleinschreibung erhalten (Capitalisation) [3] • PropertyTyp angeben [4] • Anzahl Parameter [5] • Diese Einstellungen wandern nur in die TLB (reine Information) und werden nicht enforced • Es erfolgt also keine tatsächliche Typprüfung o.ä.

  11. Beispiel programmatisch DEFINE CLASS PrgDemo AS Session OLEPUBLIC PROCEDURE GetDateTime RETURN "Timestamp: "+TRANSFORM(DATETIME()) ENDPROC GetDateTime_COMATTRIB = COMATTRIB_NONBROWSABLE iAnzahl = 0 DIMENSION iAnzahl_COMATTRIB[4] iAnzahl_COMATTRIB[1] = COMATTRIB_READONLY iAnzahl_COMATTRIB[2] = „Anzahl der Einträge“ && Hilfe iAnzahl_COMATTRIB[3] = „iAnzahl“ && Gross/Kleinschr. iAnzahl_COMATTRIB[4] = „Integer“ && Typ Angabe ...

  12. Access/Assign und Parameter • Geschützte Methoden / Eigenschaften • Kleine Schnittstelle: Eigenschaften / Methoden ausblenden • Extensive Parameterprüfung in Methoden • Zugriffs-Methoden für Eigenschaften verwenden • Assign- & Access-Methoden • Vartype und gültige Werte (Werteliste, Datum usw.) • Formattierung (Großbuchstaben, Leerzeichen) • Schreibgeschützte Eigenschaften • Ausschließlich interner Zugriff (hidden property switch)

  13. Sonstige Vorbereitungen • Überprüfung des Startmodus INLIST( _vfp.startmode, 2,3,5 ) • Automation Server Unattended Mode ausschalten =SYS(2335,1) • Fehlerbehandlung integrieren =COMRETURNERROR • Sollte auch aus Access/Assign-Methoden aufgerufen werden • Setzen Sie alle Ihre Einstellungen • Uralt: Strg+OK liefert alle Optionen…

  14. Projektdefinition • Hauptprogramm hinzufügen… • Testprogramm eignet sich dafür • Tabellen für Steuerdaten inkludieren • Config.fpw inkludieren • SCREEN = OFF (kein VFP-Desktop sichtbar) • RESOURCE=OFF (keine Anlage Foxuser.dbf) • ALLOWEXTERNAL=ON (zusätzliche config.fpw mögl.) • Sichtbar schalten sofern sinnvoll

  15. Ausführung des COM-Servers • Beispiel in Excel: • Dim loRef as Object • On Error Goto SomeError • Set loRef = createobject(„exe.obj“) • … other operations • Set loRef = Nothing • Excel-Entwickler lieben VFP-Datenzugriff, da er viel einfacher für Sie ist als ODBC/ADO!

  16. TypeLib-Abfrage • Der Object Browser (Objektkatalog) kann Type Libraries auslesen und anzeigen • Informationen zu einem COM-Server können per Drag & Drop in VFP übernommen werden

  17. Registrierung COM-Server • Wenn Sie aus einem VFP Projekt einen COM Server kompilieren, dann werden alle OLE Public Klassen automatisch auf dem lokalen Rechner registriert • Wenn Sie mit den gängigen Installations-tools (Installshield, Wise..) ein Setup erstellen, so werden die COM Komponenten automatisch auf dem Rechner registriert • Sie können dies auch manuell mit Hilfe der Windows Tools RegServer, UnRegServer und RegSrv32 erledigen • Wenn VFP nicht installiert ist, muss zuerst die VFP Runtime installiert werden, damit der COM-Server lauffähig ist!

  18. Auslieferung des COM-Servers • Laufzeitverzeichnis enthält • <IhrServer>.exe • VFP9R.DLL, VFP9RENU.DLL • GDIPLUS.DLL • REGSVR32.EXE • MSVCR71.DLL in system32 • Regsvr32.exe vfp9r.dll • <IhrServer>.exe /regserver

  19. Querverweise • 06-17 Entwickeln und Debuggen von COM Servern

  20. Vielen Dank! 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

More Related