[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ]

Das Instanziieren des InProcess OLE Servers aus der Active Server Page

In 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 Komponente

Abschliessend 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 Servers

Der 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 Page

In 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()

Schlussbemerkung

Visual 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.

[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ]