Das Instanziieren des InProcess OLE Servers aus der Active Server PageIn unserer Test Seite kann der OLE Server durch den Klick auf den Command Button3 folgendermassen instanziiert werden:
Der serverseitig ablaufende Code beinhaltet wiederum ähnlichen Code wie er uns im Late Binding Test unseres OLE Servers begegnet ist: Sub Button3_onclick() DIM oASPDLL if IsObject(session("soASPDLL")) THEN 'ok DIM fs, a SET fs = Createobject("Scripting.FileSystemObject") SET a = fs.CreateTextFile("c:\temp\ASPDLL_ASP.txt", TRUE) a.writeline("Session Variable oASPDLL is alive " &now) a.close() SET a = Nothing SET fs = Nothing SET oASPDLL = Session("soASPDLL") else 'create new instance, load DLL again DIM fs2, a2 SET fs2 = Createobject("Scripting.FileSystemObject") SET a2 = fs2.CreateTextFile("c:\temp\ASPDLL_ASP.txt", TRUE) a2.writeline("Session Variable was dead, create again " &now) a2.close() SET a2 = Nothing SET fs2 = Nothing SET oASPDLL = Server.Createobject("aspdll.caspdll") SET Session("soASPDLL") = oASPDLL end if txtaspdll.value = oASPDLL.getsys2015 End Sub Im Unterschied zum Out of Process OLE Server wird hier für die Dauer einer Session die DLL nur einmal geladen. if IsObject(session("soASPDLL")) THEN Deshalb wird in diesem Fall mit obiger Zeile geprüft, ob die Objektreferenz, in Form der Session Variable soASPDLL nicht bereits existiert. Falls dies der Fall ist, kann mit dieser Objektreferenz gearbeitet werden, SET oASPDLL = Session("soASPDLL") ansonsten wird eine neue Referenz kreiert und der soASPDLL Session Variablen zugewiesen: SET oASPDLL = Server.Createobject("aspdll.caspdll") SET Session("soASPDLL") = oASPDLL Einbinden einer VB 6.0 ActiveX EXE Server KomponenteAbschliessend wird gezeigt, wie ein OLE server mit VB 6.0 zu erstellen ist. Dies wird am Beispiel eines VB 6.0 Out Of Process OLE Servers aufgezeigt welcher zwei Zahlen addiert, welche man auf der Webseite eingeben kann. Erstellen des VB 6.0 Out of Process OLE ServersDer Code, den VB 6.0 OLE Server zu erstellen ist im vorliegenden Beispiel bewusst simpel gewählt. Option Explicit Private sngValuex Private sngValuey Public Property Let Currentx(Value As Single) sngValuex = Value End Property Public Property Get Currentx() As Single Currentx = sngValuex End Property Public Property Let CurrentY(Value As Single) sngValuey = Value End Property Public Property Get CurrentY() As Single CurrentY = sngValuey End Property Public Function SumXY() SumXY = sngValuex + sngValuey End Function In obigem Beispiel habe ich bewusst das Interface von den internen Poperties getrennt indem ich die Properties PRIVATE deklariert habe. Das Interface bietet via die Methoden Property Let und Property Get (VFP 6.0 das neue ASSIGN) eine definierte Schnittstelle zum Benutzer dieser Klasse. Instanziieren des InProcess OLE Servers aus Active Server PageIn unserer Test Seite kann der OLE Server durch den Klick auf den Command Button5 folgendermassen instanziiert werden:
Der serverseitig ablaufende Code beinhaltet wiederum ähnlichen Code: Sub Button5_onclick() DIM fs, a SET fs = Createobject("Scripting.FileSystemObject") SET a = fs.CreateTextFile("c:\temp\VBEXE_ASP.txt", TRUE) a.writeline("hallo out of process ole server at " &now) a.close() SET a = Nothing SET fs = Nothing DIM oVBEXE SET oVBEXE = Server.Createobject("vbexe.simple") oVBEXE.CurrentX = txtValueX.value oVBEXE.CurrentY = txtValueY.value txtSum.value = oVBExe.sumxy() SET oVBExe = Nothing End Sub
Hier wird mit den Zeilen oVBEXE.CurrentX = txtValueX.value oVBEXE.CurrentY = txtValueY.value dem OLE Server Objekt mitgeteilt, welche beiden Wert zu addieren sind. In der Methode sumxy erfolgt die Berechnung: txtSum.value = oVBExe.sumxy() SchlussbemerkungVisual FoxPro 6.0 läst sich hervorragend in eine Web Anwendung integrieren. Performance und Stabilität sind hervorragend und wenn man die in diesem Vortrag aufgezeigten Schritte, Tips und Tricks befolgt, sollte man in der Lage sein, eigene OLE Server Komponenten aus seinen Webseiten serverseitig zu verwenden. Ich hoffe, dass es mir auch gelungen ist, etwas Licht in die Ecke von VB zu bringen, denn die Vorteile des Early Bindings sind frappant, wenn es darum geht mit komplexen und umfangreichen Objekt Libraries wie z.B. die des Transaction Servers oder diejenige von ADO, zu arbeiten. VFP Komponenten können ohne weiteres auch in demselben Projekt mit VB Komponenten gemischt werden, um somit wirklich mit dem jeweils besten Tool die gestellte Aufgabe erledigen zu können.
|