Créer des composants côté serveur asp à l'aide de vb
Cet article explique comment appeler des composants vb dans le code asp en comparant avec les méthodes de conception traditionnelles. Dans cet article, nous supposons que le lecteur possède des connaissances d'introduction pertinentes sur VB et ASP.
Comparaison des composants côté serveur et des composants côté client
Il existe de nombreuses différences entre les composants côté serveur et les composants côté client. Les composants côté serveur sont des fichiers DLL enregistrés sur le serveur de l'ordinateur et les composants côté client sont enregistrés sur l'ordinateur sur lequel le navigateur est exécuté. Dans IE, ces composants côté client sont appelés composants de plug-in de navigateur ActiveX.
Les composants clients ActiveX peuvent être écrits en VB et envoyés au navigateur via Internet ou intranet pour générer des effets merveilleux. Le problème est que les composants côté client ActiveX sont limités à ie, tandis que les composants côté serveur écrits en VB peuvent générer du code HTML pur et conviennent à tous les navigateurs. Le plus gros problème avec les composants côté serveur est que le composant doit s'exécuter dans un environnement Windows+IIS ou dans une application compatible avec l'API d'IIS. En comparaison, il semble plus simple d’obtenir cette compatibilité côté serveur.
Le composant côté serveur IIS réside dans le même espace mémoire que IIS et est toujours prêt pour les appels vers les pages Web ASP traitées sur le serveur. En théorie, nous pouvons insérer n'importe quel texte ou code dans le code ASP renvoyé au navigateur, mais d'une manière générale, la plupart des composants côté serveur sont utilisés pour gérer des calculs ou des recherches d'informations dans des bases de données qui nécessitent beaucoup de temps, puis le résultat. est renvoyé au navigateur sous forme de code html.
Analyse des composants vb
Puisque cet article vise à discuter des méthodes de base d’écriture de composants VB, les exemples seront très simples s’ils peuvent illustrer le problème. Avant de discuter en détail de l’écriture de composants VB, nous allons d’abord analyser conceptuellement les composants VB.
Lorsque vous utilisez VB pour écrire des composants côté serveur, il existe trois concepts hiérarchiques (utilisés à la fois dans le code VB et ASP) auxquels il faut prêter attention :
·nom du projet
·nom de classe
·nom de la méthode
Le nom du projet VB est le nom du projet. De nombreux développeurs considèrent le nom du projet comme le nom du composant, mais VB le considère uniquement comme le nom du projet. Dans notre exemple, le nom du projet est exampleproject. Bien sûr, nous pouvons nommer notre propre projet arbitrairement ; le nom de la classe est exampleclass et le nom de la méthode est examplemethod.
Le nom du projet (nom du composant) peut également être le nom du fichier dll compilé à partir du code du composant. Le fichier dll contiendra le code vb compilé utilisé par iis pour renvoyer du texte ou du code html au navigateur.
Le nom de la méthode fait référence à la partie du code Visual Basic qui gère une fonction de code spécifique, telle que le calcul d'une date ou l'affichage d'une liste de tous les auteurs dans une base de données. Les méthodes de composants sont des sortes de boîtes noires qui effectuent un travail spécifique ou renvoient des informations spécifiques en fonction des informations d'entrée. Généralement, il peut y avoir plusieurs méthodes dans un composant. Afin de gérer plus efficacement les méthodes de composants, les méthodes peuvent être regroupées selon des classifications similaires. C'est le rôle des classes de composants.
La classe de composant peut générer une copie du code de la classe de composant en mémoire. Lorsque vous utilisez du code asp pour créer un objet, cela est également appelé objet. Une fois que nous avons une référence d'objet à l'instance de code de classe de composant, nous pouvons appeler les méthodes contenues dans la classe à partir du code asp.
Dans notre exemple, les noms de projet, de classe et de méthode seront utilisés pour instancier le composant VB dans le code ASP et transmettre les valeurs du code ASP au code VB sous forme de paramètres de méthode, qui sont reçus dans le Code ASP de la méthode VB La valeur renvoyée.
Appeler le composant vb à partir du fichier asp
Le fichier asp que nous utilisons pour appeler le composant vb utilisera des variables d'objet pour enregistrer les références à l'objet vb. Dans un fichier asp, vous pouvez créer un objet à l'aide de la méthode createobject() de l'objet serveur asp, qui renverra une référence à l'objet qu'il a créé. Dans l'exemple, nous utiliserons objreference comme variable objet du composant. Le code suivant montre que le code asp doit utiliser le nom de projet et le nom de classe du composant (exemple de projet et exemple de classe) lors de l'instanciation du composant vb.
Code ASP pour instancier le composant vb :
set objreference = server.createobject (exampleproject.exampleclass)
Le composant vb acceptera les valeurs de 3 variables du code asp et renverra une valeur au code asp, qui sera stockée dans la variable asp nommée strmethodreturn. Le code suivant montre comment le code asp obtient la valeur renvoyée par le composant vb. Il transmet trois valeurs de paramètres nommées param1, param2 et parma3 à la méthode vb :
strmethodreturn = objreference.examplemethod(param1, param2, param3)
Les trois paramètres param1, param2 et param3 doivent être exactement les mêmes que les définitions des méthodes dans le composant VB. Voici un exemple de deux lignes de code ASP qui instancie la classe du composant VB et appelle la méthode de classe. obtenir la valeur de retour :
set objreference = server.createobject (exampleproject.exampleclass)
strmethodreturn = objreference.examplemethod(param1, param2, param3)
Le graphique ci-dessous montre visuellement comment les noms de projet, de classe et de méthode du composant VB sont coordonnés avec le code d'instanciation du composant dans le fichier ASP. Vous pouvez utiliser le tableau ci-dessous comme référence pendant que vous apprenez étape par étape comment écrire le code vb et les fichiers asp dans l'exemple.
Le rôle de la méthode vb
Le simple composant VB de notre exemple obtiendra le nom et l'âge de l'utilisateur, puis renverra l'âge de l'utilisateur en jours, et il existe une option pour rappeler à un utilisateur s'il a plus de 45 ans.
Si nous transmettons un Eric Clapton fictif au composant comme première valeur de paramètre de la méthode et définissons le deuxième paramètre sur 56, nous obtiendrons la chaîne de retour suivante :
Eric Clapton a plus de 20440 jours.
Si nous définissons le troisième paramètre facultatif sur true (ce paramètre permettra à la méthode de déterminer si l'utilisateur a plus de 45 ans), nous obtiendrons la chaîne de retour suivante :
Eric Clapton a plus de 20440 jours.
Étant donné que trois variables complètement différentes sont utilisées : le nom de l'utilisateur, son âge et s'il a plus de 45 ans, nous devons utiliser trois paramètres de méthode pour transférer ces informations du fichier ASP vers le code VB. En VB, il est très important de réfléchir aux types de données à utiliser. Nous utiliserons une variable chaîne nommée strname pour représenter le nom de l'utilisateur, une variable entière nommée intage pour représenter l'âge de l'utilisateur et une variable booléenne nommée blnageemphaison pour indiquer si l'utilisateur a plus de 45 ans.
Trois paramètres de méthode (variables passées au code de méthode du composant vb) :
nom de chaîne (chaîne)
intage (entier)
blnageemphasisison (booléen)
Créer des composants côté serveur en vb
Après avoir démarré vb, double-cliquez sur l'icône "activex dll" dans la fenêtre "Nouveau projet". Une fois que VB charge le nouveau projet dll activex, vous verrez au moins deux fenêtres ouvertes : la fenêtre du projet et la fenêtre des propriétés. S'il y a une fenêtre qui ne peut pas être affichée, vous pouvez sélectionner l'élément de menu "Affichage" dans le menu VB (utilisez respectivement "Affichage" -> "Gestionnaire de projet", "Affichage" -> "Fenêtre Propriétés").
Étant donné que les noms par défaut du premier projet et de la première classe dans VB sont respectivement project1 et class1, nous pouvons les remplacer respectivement par exampleproject et exampleclass. Le nom du projet peut être modifié dans la fenêtre du projet. Il y a une petite case avec + ou - à gauche du nom du projet nouvellement saisi dans la fenêtre du projet. Si le signe + est affiché, sélectionnez la petite case, le signe + se transformera en signe - et le nom de classe par défaut (class1) sera affiché sous le nom du projet. Sélectionnez le nom de classe par défaut dans la fenêtre du projet et modifiez le nom de classe par défaut en exampleclass dans la fenêtre des propriétés.
Lors de l'enregistrement du projet, VB enregistrera le code contenant la classe dans un fichier avec l'extension cls. L'extension du fichier de projet est vbp, qui stocke divers paramètres du projet, le nom du fichier et l'emplacement de stockage du fichier.
Valeurs de propriété pour les composants côté serveur
Affichez les propriétés de la classe exampleclass dans la fenêtre des propriétés. Notez que la valeur de la propriété d'instanciation est "5 multiuse". Si le type de projet est défini sur un projet exe standard, la valeur de cette propriété changera en conséquence.
Sélectionnez "Projet" -> "ExampleProject Properties" dans le menu VB et la fenêtre des propriétés du projet s'affichera. La valeur de la propriété « Threading Mode » en bas à droite de l'onglet « Général » doit être définie sur « Apartment Threading », ce qui permettra à plusieurs visiteurs d'utiliser différentes instances de notre classe de composants en même temps. De plus, sélectionnez les deux options « Exécution sans surveillance » et « Mémoire résidente » pour éviter les fuites de mémoire dans VB6.
code de méthode vb
Nous devons maintenant utiliser la fenêtre du code VB pour saisir le code VB. Si la fenêtre de code est toujours vide, saisissez le code suivant :
option explicite
«Cela nous obligera à définir toutes les variables.
méthode d'exemple de fonction publique (byval strname sous forme de chaîne, _
byval intage sous forme d'entier, _
facultatif byval blnageemphasison as boolean = false) as string
Dans le code ci-dessus, nous avons défini la méthode comme une fonction publique, ce qui signifie que tout code extérieur au composant peut l'appeler. Puisqu'il s'agit d'une fonction, elle renverra également une valeur au code qui l'appelle.
fonction publique examplemethod() sous forme de chaîne
Le code ci-dessus indique que la fonction examplemethod() renverra une valeur de type chaîne à son appelant.
Notre méthode vb est livrée avec 3 variables de paramètre qui acceptent les valeurs du code asp, la dernière variable de paramètre est facultative. Toutes les variables de paramètres utilisées pour recevoir des valeurs de l'extérieur du composant VB doivent être définies et utilisées entre parenthèses de la méthode VB. Nous pouvons utiliser les variables définies de cette manière comme paramètres de méthode, tout comme les variables définies dans la méthode. entre eux se trouve le code asp extérieur qui détermine leurs valeurs.
Voici les trois variables et leurs types de données :
nom de chaîne byval sous forme de chaîne
byval intage sous forme d'entier
facultatif byval blnageemphase as boolean = false
Le code ci-dessus définit les types de données des trois paramètres de méthode, indiquant qu'ils sont transférés par valeur et que le troisième paramètre est facultatif. S'il n'y a pas de troisième paramètre, sa valeur par défaut est fausse.
Ensuite, nous ajouterons quelques virgules, espaces et traits de soulignement (_) nécessaires dans la définition de la méthode afin qu'elle puisse répondre aux exigences grammaticales de VB. Nous mettrons la liste des paramètres entre les parenthèses de la définition de la méthode, et la définition de la méthode résultante sera la suivante :
méthode d'exemple de fonction publique (byval strname sous forme de chaîne, _
byval intage sous forme d'entier, _
facultatif byval blnageemphasison as boolean = false) as string
Entrez la définition de méthode ci-dessus dans la fenêtre de code VB et une instruction de fonction de fin sera générée. Entre la définition de la méthode et la fonction de fin, c'est là que nous écrivons notre propre code.
La première ligne de code que nous ajoutons dans le corps de la méthode consiste à définir une variable chaîne pour stocker les données chaîne renvoyées par la méthode. Au lieu d'utiliser une variable chaîne, nous pouvons utiliser une chaîne pour renvoyer des données texte au code qui appelle la méthode.
dim strreturnstring sous forme de chaîne
Ensuite, nous pouvons créer la chaîne renvoyée. Nous pouvons utiliser la valeur de la variable strname transmise par le code asp via la liste des paramètres de la méthode. Concaténez d’abord la valeur de la variable du paramètre strname avec la chaîne « est terminé ». Ensuite, nous utiliserons la variable de paramètre intage pour calculer le nombre de jours pendant lesquels une personne a survécu, puis ajouterons la chaîne « âge en jours » à la chaîne précédente. Il convient de noter que nous devons convertir le produit de deux entiers intage * 365 en une chaîne avant de le combiner dans la chaîne strreturnstring. La méthode cstr() en VB peut atteindre cet objectif.
strreturnstring = strname & est terminé & cstr(intage * 365)
Si l'on suppose que le nom transmis au composant à partir du code asp est Eric Clapton et que le paramètre age est 56, strreturnstring doit donc contenir le contenu suivant :
Eric Clapton a plus de 20440
Notre chaîne finale sera ajoutée selon que la valeur de la variable intage dépasse 45 et si la variable blnageemphaison est définie sur true.
"jours" ou "jours". Le code suivant peut réaliser cette fonction :
si blnageemphasis et intage > 44 alors
strreturnstring = strreturnstring & jours.
autre
strreturnstring = strreturnstring & jours.
finir si
Si le code asp ne transmet pas la valeur de la variable blnageemphaison au composant en tant que paramètre de méthode, sa valeur sera définie sur false par défaut selon notre définition de méthode. S'il est défini sur true et que la valeur de la variable intage est supérieure à 45, nous obtiendrons le résultat suivant :
Eric Clapton a plus de 20440 jours.
Sinon, nous obtenons le résultat suivant :
Eric Clapton a plus de 20440 jours.
Afin de renvoyer la chaîne ci-dessus au code asp du composant appelant, nous attribuons la valeur de la chaîne au nom de la méthode :
exempleméthode = chaîne de retour
Le code complet de la méthode est le suivant :
méthode d'exemple de fonction publique (byval strname sous forme de chaîne, _
byval intage sous forme d'entier, _
facultatif byval blnageemphasison as boolean = false) as string
'///// Créer des variables locales
dim strreturnstring sous forme de chaîne
'///// Crée la valeur de la variable renvoyée
strreturnstring = strname & est terminé & cstr(intage * 365)
'///// Améliorer la chaîne de retour
si blnageemphasis et intage > 44 alors
strreturnstring = strreturnstring & jours.
autre
strreturnstring = strreturnstring & jours.
finir si
'///// Chaîne de retour
exempleméthode = chaîne de retour
fonction de fin
Appeler la méthode vb dans le code asp
Instancier un objet vb dans le code asp
La plupart du code ASP dont nous avons besoin a été abordé dans un aperçu conceptuel ci-dessus. Dans le code asp, nous devons encore effectuer les travaux suivants dans l'ordre :
·Utilisez la méthode createobject() de l'objet serveur asp pour instancier le composant vb.
· Appelez les méthodes du composant en utilisant les variables de paramètre de méthode appropriées.
· Attribuez la valeur de chaîne renvoyée par la méthode vb à une variable dans la variable asp.
· Utilisez ensuite cette variable dans la méthode Response.write() pour envoyer la chaîne au navigateur.
Nous utiliserons du code dans le fichier asp pour instancier la classe du composant vb. Voici le code pour l'instanciation du composant vb :
set objreference = server.createobject (exampleproject.exampleclass)
La méthode createobject() de l'objet serveur ASP renvoie l'adresse de l'objet code VB, nous pouvons donc appeler n'importe quelle méthode publique de la classe en ASP. Il convient de noter que comme le paramètre de méthode de la méthode asp createobject() est le nom du projet et de la classe vb, objreference est utilisé pour conserver une référence à l'instance d'objet de la classe du composant.
Comment utiliser les composants dans les fichiers asp
Maintenant, nous pouvons utiliser la méthode d'exemple de méthode de classe du composant pour obtenir une indication de la durée de vie d'une personne en jours. Le code suivant utilise la valeur du paramètre et attribue la valeur de la chaîne renvoyée par la méthode à une variable nommée strmethodreturn :
strmethodreturn = objreference.examplemethod (eric clapton, 56 ans, vrai)
Astuce : Lorsque notre composant est instancié, objreference représente la classe exampleproject.exampleclass qui est apparue dans la méthode createobject(). Bien que nous puissions considérer objreference.examplemethod comme équivalent à exampleproject.exampleclass.examplemethod(), nous ne pouvons pas l'utiliser de cette façon.
Bien sûr, nous pouvons également utiliser des variables au lieu de valeurs directes comme paramètres de méthode. Les noms des variables de paramètre sélectionnées n'ont pas besoin d'être les mêmes que ceux de la liste des paramètres de la méthode VB. Ils doivent seulement être les mêmes que ceux de la méthode. nombre, type et nombre de paramètres non facultatifs dans la liste des paramètres. L'ordre est le même.
aspname = eric clapton aspage = 56 aspemphasis = true strmethodreturn = objreference.examplemethod (aspname, aspage, aspemphasis)
L'utilisation de variables au lieu de valeurs rend votre code plus clair et plus gérable, surtout lorsqu'il devient long.
Il ne nous reste plus qu'à renvoyer strmethodreturn au navigateur accédant au code asp dans la méthode asp réponse.write(). Vous trouverez ci-dessous le code asp complet. À la fin du code, nous ajoutons une ligne de code qui sépare l'adresse de l'objet du composant pour effacer le code objet du composant :
<%
'///// Instancier l'objet composant
set objreference = server.createobject (exampleproject.exampleclass)
'///// Définir les variables locales comme paramètres de méthode
aspname = Eric Clapton
page=56
aspemphis = vrai
'///// Appelez la méthode du composant et stockez la valeur de retour
strmethodreturn = objreference.examplemethod (aspname, aspage, aspemphasis)
'///// Envoyer la valeur de retour au navigateur visiteur
réponse.write(strmethodeturn)
'///// Effacer l'objet composant
définir objreference = rien
%>
Le stockage du code asp ci-dessus dans un fichier asp produira la chaîne de sortie suivante :
Eric Clapton a plus de 20440 jours.
Activer le code asp pour appeler les fichiers dll
Le test de notre composant consiste à indiquer à Windows où il est stocké et quand le code asp l'appelle. Tout d'abord, sélectionnez l'icône « Exécuter » ou « Exécuter/Démarrer » dans le menu VB, et VB enregistrera temporairement le composant auprès du système.
Astuce : Vous ne pouvez pas utiliser le navigateur pour charger des fichiers ASP directement, car le chargement des fichiers HTML doit être chargé dans le navigateur via le serveur Web.
Le navigateur affichera les mots "Eric Clapton a plus de 20 440 jours".
Pour que le composant puisse s'exécuter sur d'autres serveurs, il doit être compilé dans un fichier dll puis enregistré sur le serveur. Bien entendu, si vous souhaitez utiliser le composant de manière permanente sur l'ordinateur de développement, vous devez également le compiler et l'enregistrer. Le seul fichier requis pour exécuter ce composant sur d'autres ordinateurs est le fichier dll compilé. Bien entendu, cela nécessite que le fichier de bibliothèque d'exécution vb soit installé sur l'ordinateur.
Comment compiler le code source du composant pour obtenir le fichier dll et comment enregistrer le composant sur l'ordinateur dépassent le cadre de cet article, nous ne le décrirons donc pas en détail.
En tant que sous-produit de l'écriture de composants côté serveur IIS, nous pouvons appeler les méthodes des composants écrits à partir de n'importe quel fichier ASP et d'autres composants VB, ce qui améliorera encore la flexibilité et la modularité du code.