Erstellen Sie serverseitige Asp-Komponenten mit vb
In diesem Artikel wird anhand eines Vergleichs mit herkömmlichen Entwurfsmethoden erläutert, wie VB-Komponenten in ASP-Code aufgerufen werden. In diesem Artikel gehen wir davon aus, dass der Leser über relevante Einführungskenntnisse in VB und ASP verfügt.
Vergleich von serverseitigen Komponenten und clientseitigen Komponenten
Es gibt viele Unterschiede zwischen serverseitigen Komponenten und clientseitigen Komponenten. Serverseitige Komponenten sind DLL-Dateien, die auf dem Computerserver registriert sind, und clientseitige Komponenten werden auf dem Computer registriert, auf dem der Browser ausgeführt wird. Im IE werden diese clientseitigen Komponenten als ActiveX-Browser-Plug-In-Komponenten bezeichnet.
ActiveX-Client-Komponenten können in VB geschrieben und über das Internet oder Intranet an den Browser gesendet werden, um wunderbare Effekte zu erzeugen. Das Problem besteht darin, dass clientseitige ActiveX-Komponenten auf IE beschränkt sind, während in VB geschriebene serverseitige Komponenten reinen HTML-Code generieren können und für alle Browser geeignet sind. Das größte Problem bei serverseitigen Komponenten besteht darin, dass die Komponente in einer Windows+IIS-Umgebung oder einer mit der IIS-API kompatiblen Anwendung ausgeführt werden muss. Im Vergleich scheint es einfacher zu sein, diese Kompatibilität auf der Serverseite zu erreichen.
Die serverseitige IIS-Komponente befindet sich im selben Speicherbereich wie IIS und ist immer für Aufrufe von ASP-Webseiten bereit, die auf dem Server verarbeitet werden. Theoretisch können wir jeden Text oder Code in den an den Browser zurückgegebenen ASP-Code einfügen, aber im Allgemeinen werden die meisten serverseitigen Komponenten verwendet, um Berechnungen oder Datenbankinformationssuchen durchzuführen, die viel Zeit in Anspruch nehmen, und dann das Ergebnis wird in Form von HTML-Code an den Browser zurückgegeben.
Analyse von VB-Komponenten
Da dieser Artikel darauf abzielt, die grundlegenden Methoden zum Schreiben von VB-Komponenten zu diskutieren, werden die Beispiele sehr einfach sein, wenn sie das Problem veranschaulichen können. Bevor wir uns ausführlich mit dem Schreiben von VB-Komponenten befassen, werden wir zunächst VB-Komponenten konzeptionell analysieren.
Wenn Sie VB zum Schreiben serverseitiger Komponenten verwenden, müssen drei hierarchische Konzepte (die sowohl im VB- als auch im ASP-Code verwendet werden) beachtet werden:
·Projektname
·Klassenname
·Methodenname
Der Name des VB-Projekts ist der Projektname. Viele Entwickler betrachten den Projektnamen als Komponentennamen, VB betrachtet ihn jedoch nur als Namen des Projekts. In unserem Beispiel ist der Projektname exampleproject. Natürlich können wir unser eigenes Projekt beliebig benennen; der Klassenname ist exampleclass und der Methodenname ist examplemethod.
Der Projektname (Komponentenname) kann auch der Name der aus dem Komponentencode kompilierten DLL-Datei sein. Die DLL-Datei enthält den kompilierten VB-Code, der von iis verwendet wird, um Text oder HTML-Code an den Browser zurückzugeben.
Der Methodenname bezieht sich auf den Teil des Visual Basic-Codes, der eine bestimmte Codefunktion verwaltet, beispielsweise die Berechnung eines Datums oder die Anzeige einer Liste aller Autoren in einer Datenbank. Komponentenmethoden sind eine Art Blackbox, die bestimmte Arbeiten ausführt oder basierend auf Eingabeinformationen bestimmte Informationen zurückgibt. Im Allgemeinen kann eine Komponente mehrere Methoden enthalten. Um Komponentenmethoden effektiver zu verwalten, können Methoden nach ähnlichen Klassifizierungen gruppiert werden. Dies ist die Rolle von Komponentenklassen.
Die Komponentenklasse kann eine Kopie des Komponentenklassencodes im Speicher generieren. Wenn Sie ASP-Code zum Erstellen eines Objekts verwenden, wird dies auch als Instanziierung bezeichnet. Sobald wir einen Objektverweis auf die Codeinstanz der Komponentenklasse haben, können wir die in der Klasse enthaltenen Methoden aus dem ASP-Code aufrufen.
In unserem Beispiel werden die Projekt-, Klassen- und Methodennamen verwendet, um die VB-Komponente im ASP-Code zu instanziieren und Werte vom ASP-Code an den VB-Code in Form von Methodenparametern zu übergeben, die im empfangen werden ASP-Code aus der VB-Methode. Der zurückgegebene Wert.
Rufen Sie die VB-Komponente aus der ASP-Datei auf
Die ASP-Datei, die wir zum Aufrufen der VB-Komponente verwenden, verwendet Objektvariablen, um Verweise auf das VB-Objekt zu speichern. In einer ASP-Datei können Sie mit der Methode createobject() des ASP-Serverobjekts ein Objekt erstellen, das einen Verweis auf das von ihm erstellte Objekt zurückgibt. Im Beispiel verwenden wir objreference als Objektvariable der Komponente. Der folgende Code zeigt, dass der ASP-Code beim Instanziieren der VB-Komponente den Projektnamen und den Klassennamen der Komponente (Beispielprojekt und Beispielklasse) verwenden muss.
ASP-Code zum Instanziieren der VB-Komponente:
set objreference = server.createobject(exampleproject.exampleclass)
Die VB-Komponente akzeptiert die Werte von drei Variablen aus dem ASP-Code und gibt einen Wert an den ASP-Code zurück, der in der ASP-Variablen namens strmethodreturn gespeichert wird. Der folgende Code zeigt, wie der ASP-Code den von der VB-Komponente zurückgegebenen Wert erhält. Er übergibt drei Parameterwerte mit den Namen param1, param2 und parma3 an die VB-Methode:
strmethodreturn = objreference.examplemethod(param1, param2, param3)
Die drei Parameter param1, param2 und param3 müssen genau mit den Definitionen der Methoden in der VB-Komponente übereinstimmen. Das Folgende ist ein Beispiel für zwei Zeilen ASP-Code, der die Klasse der VB-Komponente instanziiert und die Klassenmethode aufruft Erhalten Sie den Rückgabewert:
set objreference = server.createobject(exampleproject.exampleclass)
strmethodreturn = objreference.examplemethod(param1, param2, param3)
Das Diagramm unten zeigt visuell, wie die Projekt-, Klassen- und Methodennamen der VB-Komponente mit dem Komponenteninstanziierungscode in der ASP-Datei koordiniert werden. Sie können die folgende Tabelle als Referenz verwenden, während Sie Schritt für Schritt lernen, wie Sie den VB-Code und die ASP-Dateien im Beispiel schreiben.
Die Rolle der VB-Methode
Die einfache VB-Komponente in unserem Beispiel ruft den Namen und das Alter des Benutzers ab und gibt dann das Alter des Benutzers in Tagen zurück. Außerdem besteht die Möglichkeit, einen Benutzer daran zu erinnern, ob er über 45 Jahre alt ist.
Wenn wir als ersten Parameterwert der Methode einen fiktiven Eric Clapton an die Komponente übergeben und den zweiten Parameter auf 56 setzen, erhalten wir die folgende Rückgabezeichenfolge:
Eric Clapton ist über 20440 Tage alt.
Wenn wir den optionalen dritten Parameter auf true setzen (mit diesem Parameter ermittelt die Methode, ob der Benutzer über 45 Jahre alt ist), erhalten wir die folgende Rückgabezeichenfolge:
Eric Clapton ist über 20440 Tage alt.
Da drei völlig unterschiedliche Variablen verwendet werden – der Name des Benutzers, das Alter und ob er über 45 Jahre alt ist – müssen wir drei Methodenparameter verwenden, um diese Informationen aus der ASP-Datei in den VB-Code zu übertragen. In VB ist es sehr wichtig zu überlegen, welche Datentypen verwendet werden sollen. Wir verwenden eine Zeichenfolgenvariable namens strname, um den Namen des Benutzers darzustellen, eine Ganzzahlvariable namens intage, um das Alter des Benutzers darzustellen, und eine boolesche Variable namens blnageemphasison, um anzugeben, ob der Benutzer über 45 Jahre alt ist.
Drei Methodenparameter (Variablen, die an den Methodencode der vb-Komponente übergeben werden):
strname (string)
intage (Ganzzahl)
blnageemphasisison (boolean)
Erstellen Sie serverseitige Komponenten in VB
Doppelklicken Sie nach dem Starten von vb im Fenster „Neues Projekt“ auf das Symbol „ActiveX-DLL“. Sobald VB das neue ActiveX-DLL-Projekt lädt, werden mindestens zwei geöffnete Fenster angezeigt: das Projektfenster und das Eigenschaftenfenster. Wenn ein Fenster nicht angezeigt werden kann, können Sie den Menüpunkt „Ansicht“ aus dem VB-Menü auswählen (verwenden Sie jeweils „Ansicht“ -> „Projektmanager“, „Ansicht“ -> „Eigenschaftenfenster“).
Da die Standardnamen des ersten Projekts und der ersten Klasse in VB project1 bzw. class1 lauten, können wir sie in exampleproject bzw. exampleclass ändern. Der Projektname kann im Projektfenster geändert werden. Im Projektfenster befindet sich links neben dem neu eingegebenen Projektnamen ein kleines Kästchen mit + oder -. Wenn das +-Zeichen angezeigt wird, wählen Sie das kleine Kästchen aus. Das +-Zeichen wird in ein --Zeichen umgewandelt und der Standardklassenname (Klasse1) wird unter dem Projektnamen angezeigt. Wählen Sie im Projektfenster den Standardklassennamen aus und ändern Sie den Standardklassennamen im Eigenschaftenfenster in „exampleclass“.
Beim Speichern des Projekts speichert VB den Code, der die Klasse enthält, in einer Datei mit der Erweiterung cls. Die Erweiterung der Projektdatei ist vbp, in der verschiedene Einstellungen des Projekts, der Dateiname und der Dateispeicherort gespeichert werden.
Eigenschaftswerte für serverseitige Komponenten
Zeigen Sie die Eigenschaften der Beispielklasse im Eigenschaftenfenster an. Beachten Sie, dass der Wert der Instanzierungseigenschaft „5 multiuse“ ist. Wenn der Projekttyp auf ein Standard-Exe-Projekt eingestellt ist, ändert sich der Wert dieser Eigenschaft entsprechend.
Wählen Sie im VB-Menü „Projekt“ -> „Beispielprojekteigenschaften“ und das Projekteigenschaftenfenster wird angezeigt. Der Wert der Eigenschaft „Threading-Modus“ unten rechts auf der Registerkarte „Allgemein“ sollte auf „Apartment-Threading“ eingestellt sein, damit mehrere Besucher gleichzeitig verschiedene Instanzen unserer Komponentenklasse verwenden können. Wählen Sie außerdem die beiden Optionen „Unattended Execution“ und „Resident Memory“, um Speicherlecks in VB6 zu vermeiden.
vb-Methodencode
Jetzt müssen wir das VB-Codefenster verwenden, um VB-Code einzugeben. Wenn das Codefenster noch leer ist, geben Sie den folgenden Code ein:
Option explizit
„Dazu müssen wir alle Variablen definieren.“
öffentliche Funktion examplemethod(byval strname as string, _
byval intage als Ganzzahl, _
optional byval blnageemphasisison as boolean = false) als String
Im obigen Code haben wir die Methode als öffentliche Funktion definiert, was bedeutet, dass jeder Code außerhalb der Komponente sie aufrufen kann. Da es sich um eine Funktion handelt, gibt sie auch einen Wert an den Code zurück, der sie aufruft.
öffentliche Funktion examplemethod() als String
Der obige Code gibt an, dass die Funktion examplemethod() einen Wert vom Typ String an ihren Aufrufer zurückgibt.
Unsere vb-Methode enthält 3 Parametervariablen, die Werte aus dem ASP-Code akzeptieren. Die letzte Parametervariable ist optional. Alle Parametervariablen, die zum Empfangen von Werten von außerhalb der VB-Komponente verwendet werden, müssen in den Klammern der VB-Methode definiert und verwendet werden. Der einzige Unterschied besteht darin, dass auf diese Weise definierte Variablen als Methodenparameter verwendet werden Zwischen ihnen befindet sich der äußere ASP-Code, der ihre Werte bestimmt.
Hier sind die drei Variablen und ihre Datentypen:
byval strname als string
byval intage als Ganzzahl
optional byval blnageemphasis as boolean = false
Der obige Code definiert die Datentypen der drei Methodenparameter und gibt an, dass sie als Wert übergeben werden. Der dritte Parameter ist optional. Wenn kein dritter Parameter vorhanden ist, ist sein Standardwert falsch.
Anschließend fügen wir der Definition der Methode einige notwendige Kommas, Leerzeichen und Unterstriche (_) hinzu, damit sie die grammatikalischen Anforderungen von VB erfüllen kann. Wir setzen die Parameterliste in die Klammern der Methodendefinition und die resultierende Methodendefinition sieht wie folgt aus:
öffentliche Funktion examplemethod(byval strname as string, _
byval intage als Ganzzahl, _
optional byval blnageemphasisison as boolean = false) als String
Geben Sie die obige Methodendefinition in das VB-Codefenster ein und eine Endfunktionsanweisung wird generiert. Zwischen der Methodendefinition und der Endfunktion schreiben wir unseren eigenen Code.
Die erste Codezeile, die wir im Hauptteil der Methode hinzufügen, besteht darin, eine String-Variable zum Speichern der von der Methode zurückgegebenen String-Daten zu definieren. Anstatt eine String-Variable zu verwenden, können wir einen String verwenden, um Textdaten an den Code zurückzugeben, der die Methode aufruft.
dimmen Sie strreturnstring als String
Als nächstes können wir die zurückgegebene Zeichenfolge erstellen. Wir können den vom ASP-Code über die Parameterliste der Methode übergebenen strname-Variablenwert verwenden. Verketten Sie zunächst den Variablenwert des Parameters strname mit der Zeichenfolge „is over“. Als Nächstes verwenden wir die Intage-Parametervariable, um die Anzahl der Tage zu berechnen, die eine Person überlebt hat, und fügen dann die Zeichenfolge „Alter in Tagen“ zur vorherigen Zeichenfolge hinzu. Es ist zu beachten, dass wir das Produkt zweier Ganzzahlen intage * 365 in eine Zeichenfolge konvertieren müssen, bevor wir es in der Zeichenfolge strreturnstring kombinieren. Dieser Zweck kann mit der Methode cstr() in VB erreicht werden.
strreturnstring = strname & ist vorbei & cstr(intage * 365)
Wenn davon ausgegangen wird, dass der vom ASP-Code an die Komponente übergebene Name Eric Clapton ist und der Altersparameter 56 ist, sollte strreturnstring daher den folgenden Inhalt enthalten:
Eric Clapton ist über 20440
Unsere letzte Zeichenfolge wird basierend darauf hinzugefügt, ob der Wert der Intage-Variable 45 überschreitet und ob die Blnageemphasison-Variable auf „true“ gesetzt ist.
„Tage alt“ oder „Tage alt“. Der folgende Code kann diese Funktion erreichen:
wenn blnageemphasis und intage > 44 dann
strreturnstring = strreturnstring & Tage alt.
anders
strreturnstring = strreturnstring & Tage alt.
Ende wenn
Wenn der ASP-Code den Wert der Variablen blnageemphasison nicht als Methodenparameter an die Komponente übergibt, wird ihr Wert gemäß unserer Methodendefinition standardmäßig auf false gesetzt. Wenn es auf „true“ gesetzt ist und der Wert der Intage-Variable größer als 45 ist, erhalten wir die folgende Ausgabe:
Eric Clapton ist über 20440 Tage alt.
Ansonsten erhalten wir folgende Ausgabe:
Eric Clapton ist über 20440 Tage alt.
Um den obigen String an den ASP-Code der aufrufenden Komponente zurückzugeben, weisen wir den Wert des Strings dem Namen der Methode zu:
examplemethod = strreturnstring
Der vollständige Methodencode lautet wie folgt:
öffentliche Funktion examplemethod(byval strname as string, _
byval intage als Ganzzahl, _
optional byval blnageemphasisison as boolean = false) als String
'///// Lokale Variablen erstellen
dimmen Sie strreturnstring als String
'///// Erstellt den Wert der zurückgegebenen Variablen
strreturnstring = strname & ist vorbei & cstr(intage * 365)
'///// strreturnstring verbessern
wenn blnageemphasis und intage > 44 dann
strreturnstring = strreturnstring & Tage alt.
anders
strreturnstring = strreturnstring & Tage alt.
Ende wenn
'///// Rückgabezeichenfolge
examplemethod = strreturnstring
Endfunktion
Rufen Sie die VB-Methode im ASP-Code auf
Instanziieren Sie ein VB-Objekt im ASP-Code
Der größte Teil des ASP-Codes, den wir benötigen, wurde oben in einer konzeptionellen Übersicht besprochen. Im ASP-Code müssen wir noch die folgenden Arbeiten nacheinander ausführen:
·Verwenden Sie die Methode createobject() des ASP-Serverobjekts, um die VB-Komponente zu instanziieren.
·Rufen Sie die Methoden der Komponente mithilfe geeigneter Methodenparametervariablen auf.
· Weisen Sie den von der vb-Methode zurückgegebenen Zeichenfolgenwert einer Variablen in der ASP-Variablen zu.
·Verwenden Sie dann diese Variable in der Methode „response.write()“, um die Zeichenfolge an den Browser zu senden.
Wir werden etwas Code in der ASP-Datei verwenden, um die Klasse der VB-Komponente zu instanziieren. Das Folgende ist der Code für die Instanziierung der VB-Komponente:
set objreference = server.createobject(exampleproject.exampleclass)
Die Methode createobject() des ASP-Serverobjekts gibt die Adresse des VB-Codeobjekts zurück, sodass wir jede öffentliche Methode der Klasse in ASP aufrufen können. Es ist zu beachten, dass der Methodenparameter der Methode asp createobject() der Name des VB-Projekts und der Klasse ist und objreference verwendet wird, um einen Verweis auf die Objektinstanz der Klasse der Komponente aufrechtzuerhalten.
So verwenden Sie Komponenten in ASP-Dateien
Jetzt können wir die Klassenmethode examplemethod der Komponente verwenden, um einen Hinweis auf die Lebenserwartung einer Person in Tagen zu erhalten. Der folgende Code verwendet den Wert des Parameters und weist den Wert der von der Methode zurückgegebenen Zeichenfolge einer Variablen namens strmethodreturn zu:
strmethodreturn = objreference.examplemethod(eric clapton, 56, true)
Tipp: Wenn unsere Komponente instanziiert wird, stellt objreference die exampleproject.exampleclass dar, die in der Methode createobject() angezeigt wurde. Obwohl wir uns objreference.examplemethod als Äquivalent zu exampleproject.exampleclass.examplemethod() vorstellen können, können wir es nicht auf diese Weise verwenden.
Natürlich können wir auch Variablen anstelle direkter Werte als Methodenparameter verwenden. Die Namen der ausgewählten Parametervariablen müssen nicht mit denen in der VB-Methodenparameterliste übereinstimmen Anzahl, Typ und Anzahl der nicht optionalen Parameter in der Parameterliste. Die Reihenfolge ist dieselbe.
aspname = eric clapton aspage = 56 aspemphasis = true strmethodreturn = objreference.examplemethod(aspname, aspage, aspemphasis)
Durch die Verwendung von Variablen anstelle von Werten wird Ihr Code klarer und überschaubarer, insbesondere wenn er lang wird.
Jetzt müssen wir nur noch strmethodreturn an den Browser zurückgeben, der auf den Asp-Code in der asp-Response.write()-Methode zugreift. Unten finden Sie den vollständigen ASP-Code. Am Ende des Codes fügen wir eine Codezeile hinzu, die die Objektadresse der Komponente trennt, um den Objektcode der Komponente zu löschen:
<%
'///// Komponentenobjekt instanziieren
set objreference = server.createobject(exampleproject.exampleclass)
'///// Lokale Variablen als Methodenparameter festlegen
aspname = Eric Clapton
aspage=56
Aspemphasis = wahr
'///// Rufen Sie die Methode der Komponente auf und speichern Sie den Rückgabewert
strmethodreturn = objreference.examplemethod(aspname, aspage, aspemphasis)
'///// Sende den Rückgabewert an den besuchenden Browser
Response.write(strmethodreturn)
'///// Löschen Sie das Komponentenobjekt
set objreference = nichts
%>
Das Speichern des obigen ASP-Codes in einer ASP-Datei erzeugt die folgende Zeichenfolgenausgabe:
Eric Clapton ist über 20440 Tage alt.
Aktivieren Sie ASP-Code zum Aufrufen von DLL-Dateien
Der Test unserer Komponente besteht darin, Windows mitzuteilen, wo sie gespeichert ist und wann der ASP-Code sie aufruft. Wählen Sie zunächst das „Ausführen“-Symbol oder „Ausführen/Starten“ im VB-Menü und VB registriert die Komponente vorübergehend beim System.
Tipp: Sie können den Browser nicht zum direkten Laden von ASP-Dateien verwenden, da das Laden von ASP-Dateien über den Webserver in den Browser erfolgen muss.
Der Browser zeigt die Worte „Eric Clapton ist über 20440 Tage alt“ an.
Damit die Komponente auf anderen Servern läuft, muss sie in eine DLL-Datei kompiliert und dann auf dem Server registriert werden. Wenn Sie die Komponente dauerhaft auf dem Entwicklungsrechner nutzen möchten, müssen Sie diese natürlich auch kompilieren und registrieren. Die einzige Datei, die zum Ausführen dieser Komponente auf anderen Computern erforderlich ist, ist die kompilierte DLL-Datei. Dazu muss auf dem Computer natürlich die VB-Laufzeitbibliotheksdatei installiert sein.
Wie Sie den Quellcode der Komponente kompilieren, um die DLL-Datei zu erhalten, und wie Sie die Komponente auf dem Computer registrieren, geht über den Rahmen dieses Artikels hinaus und wird daher nicht im Detail beschrieben.
Als Nebenprodukt des Schreibens serverseitiger IIS-Komponenten können wir die Methoden der geschriebenen Komponenten aus jeder ASP-Datei und anderen VB-Komponenten aufrufen, was die Flexibilität und Modularität des Codes weiter verbessert.