Cree componentes del lado del servidor asp usando vb
Este artículo presenta cómo llamar a componentes vb en código asp comparándolos con los métodos de diseño tradicionales. En este artículo, asumimos que el lector tiene conocimientos introductorios relevantes sobre VB y ASP.
Comparación de componentes del lado del servidor y componentes del lado del cliente
Existen muchas diferencias entre los componentes del lado del servidor y los componentes del lado del cliente. Los componentes del lado del servidor son archivos dll registrados en el servidor de la computadora, y los componentes del lado del cliente se registran en la computadora donde se ejecuta el navegador. En IE, estos componentes del lado del cliente se denominan componentes del complemento del navegador Activex.
Los componentes del cliente ActiveX pueden escribirse en VB y enviarse al navegador a través de Internet o intranet para generar efectos maravillosos. El problema es que los componentes del lado del cliente ActiveX se limitan a ie, mientras que los componentes del lado del servidor escritos en vb pueden generar código html puro y son adecuados para todos los navegadores. El mayor problema con los componentes del lado del servidor es que el componente debe ejecutarse en un entorno Windows+IIS o en una aplicación compatible con la API de IIS. En comparación, parece más fácil lograr esta compatibilidad en el lado del servidor.
El componente del lado del servidor IIS reside en el mismo espacio de memoria que IIS y siempre está listo para llamadas a páginas web ASP procesadas en el servidor. En teoría, podemos insertar cualquier texto o código en el código ASP devuelto al navegador, pero en términos generales, la mayoría de los componentes del lado del servidor se utilizan para manejar cálculos o búsquedas de información de bases de datos que requieren mucho tiempo, y luego el resultado. se devuelve al navegador en forma de código html.
Análisis de componentes vb.
Dado que este artículo tiene como objetivo discutir los métodos básicos para escribir componentes de VB, los ejemplos serán muy simples si pueden ilustrar el problema. Antes de discutir en detalle la escritura de componentes de VB, primero analizaremos conceptualmente los componentes de VB.
Cuando se utiliza VB para escribir componentes del lado del servidor, hay tres conceptos jerárquicos (utilizados tanto en VB como en código ASP) a los que se debe prestar atención:
·nombre del proyecto
·nombre de clase
·nombre del método
El nombre del proyecto VB es el nombre del proyecto. Muchos desarrolladores consideran el nombre del proyecto como el nombre del componente, pero VB solo lo considera como el nombre del proyecto. En nuestro ejemplo, el nombre del proyecto es proyecto de ejemplo. Por supuesto, podemos nombrar nuestro propio proyecto de forma arbitraria; el nombre de la clase es clase de ejemplo y el nombre del método es método de ejemplo.
El nombre del proyecto (nombre del componente) también puede ser el nombre del archivo dll compilado a partir del código del componente. El archivo dll contendrá el código vb compilado utilizado por iis para devolver texto o código html al navegador.
El nombre del método se refiere a la parte del código de Visual Basic que administra una función de código específica, como calcular una fecha o mostrar una lista de todos los autores en una base de datos. Los métodos de componentes son una especie de cajas negras que realizan un trabajo específico o devuelven información específica en función de la información de entrada. Generalmente, puede haber varios métodos en un componente. Para gestionar los métodos de los componentes de forma más eficaz, los métodos se pueden agrupar según clasificaciones similares. Ésta es la función de las clases de componentes.
La clase de componente puede generar una copia del código de la clase de componente en la memoria. Cuando se utiliza código ASP para crear un objeto, también se le llama objeto. Una vez que tenemos una referencia de objeto a la instancia del código de la clase componente, podemos llamar a los métodos contenidos en la clase desde el código ASP.
En nuestro ejemplo, los nombres de proyecto, clase y método se utilizarán para crear una instancia del componente VB en el código ASP y pasar valores del código ASP al código VB en forma de parámetros de método, que se reciben en el Código ASP del método VB. El valor devuelto.
Llamar al componente vb desde un archivo asp
El archivo asp que usamos para llamar al componente vb usará variables de objeto para guardar referencias al objeto vb. En un archivo ASP, puede crear un objeto utilizando el método createobject() del objeto del servidor ASP, que devolverá una referencia al objeto que creó. En el ejemplo, usaremos objreference como variable de objeto del componente. El siguiente código muestra que el código ASP necesita usar el nombre del proyecto y el nombre de la clase del componente (proyecto de ejemplo y clase de ejemplo) al crear una instancia del componente vb.
Código ASP para crear una instancia del componente vb:
establecer objreference = server.createobject(ejemploproyecto.ejemploclase)
El componente vb aceptará los valores de 3 variables del código asp y devolverá un valor al código asp, que se almacenará en la variable asp denominada strmethodreturn. El siguiente código muestra cómo el código ASP obtiene el valor devuelto por el componente vb. Pasa tres valores de parámetros llamados param1, param2 y parma3 al método vb:
strmethodreturn = objreference.examplemethod(param1, param2, param3)
Los tres parámetros param1, param2 y param3 deben ser exactamente iguales a las definiciones de los métodos en el componente VB. El siguiente es un ejemplo de dos líneas de código ASP que crea una instancia de la clase del componente VB y llama al método de clase. obtener el valor de retorno:
establecer objreference = server.createobject(ejemploproyecto.ejemploclase)
strmethodreturn = objreference.examplemethod(param1, param2, param3)
El siguiente cuadro muestra visualmente cómo los nombres de proyecto, clase y método del componente VB se coordinan con el código de creación de instancias del componente en el archivo ASP. Puede utilizar el cuadro a continuación como referencia mientras aprende paso a paso cómo escribir el código vb y los archivos asp en el ejemplo.
El papel del método vb
El componente VB simple en nuestro ejemplo obtendrá el nombre y la edad del usuario, y luego devolverá la edad del usuario en días, y hay una opción para recordarle al usuario si tiene más de 45 años.
Si pasamos un eric clapton ficticio al componente como primer valor de parámetro del método y configuramos el segundo parámetro en 56, obtendremos la siguiente cadena de retorno:
eric clapton tiene más de 20440 días.
Si configuramos el tercer parámetro opcional en verdadero (este parámetro hará que el método determine si el usuario tiene más de 45 años), obtendremos la siguiente cadena de retorno:
eric clapton tiene más de 20440 días.
Dado que se utilizan tres variables completamente diferentes: el nombre del usuario, la edad y si tiene más de 45 años, necesitamos usar tres parámetros de método para transferir esta información del archivo ASP al código VB. En VB, es muy importante considerar qué tipos de datos utilizar. Usaremos una variable de cadena llamada strname para representar el nombre del usuario, una variable entera llamada intage para representar la edad del usuario y una variable booleana llamada blnageemphasison para indicar si el usuario tiene más de 45 años.
Tres parámetros del método (variables pasadas al código del método del componente vb):
nombre_cadena (cadena)
entero (entero)
blnageemphasisison (booleano)
Crear componentes del lado del servidor en vb
Después de iniciar vb, haga doble clic en el icono "activex dll" en la ventana "Nuevo proyecto". Una vez que VB carga el nuevo proyecto dll activex, verá al menos dos ventanas abiertas: la ventana del proyecto y la ventana de propiedades. Si no se puede mostrar una ventana, puede seleccionar el elemento de menú "Ver" en el menú VB (use "Ver" -> "Administrador de proyectos", "Ver" -> "Ventana de propiedades" respectivamente).
Dado que los nombres predeterminados del primer proyecto y clase en VB son proyecto1 y clase1 respectivamente, podemos cambiarlos a proyecto de ejemplo y clase de ejemplo respectivamente. El nombre del proyecto se puede modificar en la ventana del proyecto. Hay un pequeño cuadro con + o - a la izquierda del nombre del proyecto recién ingresado en la ventana del proyecto. Si se muestra el signo +, seleccione el cuadro pequeño, el signo + se convertirá en un signo - y el nombre de clase predeterminado (clase1) se mostrará debajo del nombre del proyecto. Seleccione el nombre de clase predeterminado en la ventana del proyecto y cambie el nombre de clase predeterminado a clase de ejemplo en la ventana de propiedades.
Al guardar el proyecto, VB guardará el código que contiene la clase en un archivo con la extensión cls. La extensión del archivo del proyecto es vbp, que almacena varias configuraciones del proyecto, el nombre del archivo y la ubicación de almacenamiento del archivo.
Valores de propiedad para componentes del lado del servidor
Muestre las propiedades de la clase de clase de ejemplo en la ventana de propiedades. Tenga en cuenta que el valor de la propiedad de instanciación es "5 multiuso". Si el tipo de proyecto se establece en un proyecto exe estándar, el valor de esta propiedad cambiará en consecuencia.
Seleccione "Proyecto" -> "Propiedades de proyecto de ejemplo" en el menú VB y se mostrará la ventana de propiedades del proyecto. El valor de la propiedad "Modo de subprocesos" en la parte inferior derecha de la pestaña "General" debe establecerse en "Subprocesamiento de apartamentos", lo que permitirá que varios visitantes utilicen diferentes instancias de nuestra clase de componente al mismo tiempo. Además, seleccione las dos opciones de "Ejecución desatendida" y "Memoria residente" para evitar pérdidas de memoria en VB6.
código del método vb
Ahora necesitamos usar la ventana de código vb para ingresar el código vb. Si la ventana del código aún está en blanco, ingrese el siguiente código:
opción explícita
'Será necesario que definamos todas las variables.
método de ejemplo de función pública (byval strname como cadena, _
byval intage como número entero, _
opcional byval blnageemphasisison como booleano = falso) como cadena
En el código anterior, definimos el método como una función pública, lo que significa que cualquier código fuera del componente puede llamarlo. Dado que es una función, también devolverá un valor al código que lo llama.
método de ejemplo de función pública () como cadena
El código anterior indica que la función examplemethod() devolverá un valor de tipo cadena a su llamador.
Nuestro método vb viene con 3 variables de parámetro que aceptan valores del código asp, la última variable de parámetro es opcional. Todas las variables de parámetros utilizadas para recibir valores desde fuera del componente VB deben definirse y usarse entre paréntesis del método VB. Podemos usar las variables definidas de esta manera como parámetros del método, al igual que las variables definidas dentro del método. entre ellos está el código asp externo que determina sus valores.
Aquí están las tres variables y sus tipos de datos:
byval nombre de cadena como cadena
byval intage como entero
opcional byval blnageemphasis como booleano = falso
El código anterior define los tipos de datos de los tres parámetros del método, lo que indica que se pasan por valor y el tercer parámetro es opcional. Si no hay un tercer parámetro, su valor predeterminado es falso.
Luego, agregaremos algunas comas, espacios y guiones bajos (_) necesarios en la definición del método para que pueda cumplir con los requisitos gramaticales de VB. Pondremos la lista de parámetros entre paréntesis de la definición del método, y la definición del método resultante será la siguiente:
método de ejemplo de función pública (byval strname como cadena, _
byval intage como número entero, _
opcional byval blnageemphasisison como booleano = falso) como cadena
Ingrese la definición del método anterior en la ventana de código VB y se generará una declaración de función final. Entre la definición del método y la función final es donde escribimos nuestro propio código.
La primera línea de código que agregamos en el cuerpo del método es definir una variable de cadena para almacenar los datos de cadena devueltos por el método. En lugar de usar una variable de cadena, podemos usar una cadena para devolver datos de texto al código que llama al método.
dim strreturnstring como cadena
A continuación podemos crear la cadena devuelta. Podemos usar el valor de la variable strname pasado por el código asp a través de la lista de parámetros del método. Primero concatene el valor de la variable del parámetro strname con la cadena "ha terminado". A continuación usaremos la variable de parámetro intage para calcular la cantidad de días que una persona ha sobrevivido y luego agregaremos la cadena "edad en días" a la cadena anterior. Cabe señalar que necesitamos convertir el producto de dos enteros intage * 365 en una cadena antes de combinarlos en la cadena strreturnstring. El método cstr() en VB puede lograr este propósito.
strreturnstring = strname & ha terminado & cstr(intage * 365)
Si se supone que el nombre pasado al componente desde el código ASP es Eric Clapton y el parámetro de edad es 56, entonces strreturnstring debe contener el siguiente contenido:
eric clapton ha terminado 20440
Nuestra cadena final se agregará en función de si el valor de la variable intage excede 45 y si la variable blnageemphasison está establecida en verdadero.
"días de antigüedad" o "días de antigüedad". El siguiente código puede lograr esta función:
si blnageemphasis e intage > 44 entonces
strreturnstring = strreturnstring y días de antigüedad.
demás
strreturnstring = strreturnstring y días de antigüedad.
terminar si
Si el código ASP no pasa el valor de la variable blnageemphasison al componente como parámetro del método, su valor se establecerá en falso de forma predeterminada de acuerdo con nuestra definición de método. Si se establece en verdadero y el valor de la variable intage es mayor que 45, obtendremos el siguiente resultado:
eric clapton tiene más de 20440 días.
De lo contrario, obtenemos el siguiente resultado:
eric clapton tiene más de 20440 días.
Para devolver la cadena anterior al código ASP del componente que llama, asignamos el valor de la cadena al nombre del método:
método de ejemplo = strreturnstring
El código del método completo es el siguiente:
método de ejemplo de función pública (byval strname como cadena, _
byval intage como número entero, _
opcional byval blnageemphasisison como booleano = falso) como cadena
'///// Crear variables locales
dim strreturnstring como cadena
'///// Crea el valor de la variable devuelta
strreturnstring = strname & ha terminado & cstr(intage * 365)
'///// Mejorar strreturnstring
si blnageemphasis e intage > 44 entonces
strreturnstring = strreturnstring y días de antigüedad.
demás
strreturnstring = strreturnstring y días de antigüedad.
terminar si
'///// Cadena de retorno
método de ejemplo = strreturnstring
función final
Llamar al método vb en código asp
Crear una instancia de un objeto vb en código asp
La mayor parte del código ASP que necesitamos se analizó en una descripción general conceptual anterior. En el código ASP, todavía necesitamos completar el siguiente trabajo en secuencia:
·Utilice el método createobject() del objeto del servidor asp para crear una instancia del componente vb.
·Llame a los métodos del componente utilizando variables de parámetros de método apropiadas.
·Asigne el valor de cadena devuelto por el método vb a una variable en la variable asp.
·Luego use esta variable en el método Response.write() para enviar la cadena al navegador.
Usaremos algo de código en el archivo ASP para crear una instancia de la clase del componente vb. El siguiente es el código para la creación de instancias del componente vb:
establecer objreference = server.createobject(ejemploproyecto.ejemploclase)
El método createobject() del objeto del servidor ASP devuelve la dirección del objeto de código VB, por lo que podemos llamar a cualquier método público de la clase en ASP. Cabe señalar que como el parámetro del método asp createobject() es el nombre del proyecto y la clase vb, objreference se utiliza para mantener una referencia a la instancia del objeto de la clase del componente.
Cómo utilizar componentes en archivos asp
Ahora, podemos utilizar el método de ejemplo del método de clase del componente para obtener una indicación de la esperanza de vida de una persona en días. El siguiente código utiliza el valor del parámetro y asigna el valor de la cadena devuelta por el método a una variable denominada strmethodreturn:
strmethodreturn = objreference.examplemethod(eric clapton, 56, verdadero)
Consejo: Cuando se crea una instancia de nuestro componente, objreference representa la clase exampleproject.example que apareció en el método createobject(). Aunque podemos pensar en objreference.examplemethod como equivalente a exampleproject.exampleclass.examplemethod(), no podemos usarlo de esta manera.
Por supuesto, también podemos usar variables en lugar de valores directos como parámetros del método. No es necesario que los nombres de las variables de parámetros seleccionadas sean los mismos que los de la lista de parámetros del método VB. número, tipo y número de parámetros no opcionales en la lista de parámetros. El orden es el mismo.
aspname = eric clapton aspage = 56 aspemphasis = true strmethodreturn = objreference.examplemethod(aspname, aspage, aspemphasis)
El uso de variables en lugar de valores hace que su código sea más claro y manejable, especialmente cuando se vuelve largo.
Ahora solo nos falta devolver strmethodreturn al navegador accediendo al código asp en el método asp Response.write(). A continuación se muestra el código ASP completo. Al final del código, agregamos una línea de código que separa la dirección del objeto del componente para borrar el código del objeto del componente:
<%
'///// Crear una instancia del objeto componente
establecer objreference = server.createobject(ejemploproyecto.ejemploclase)
'///// Establecer variables locales como parámetros del método
aspname = eric clapton
como página=56
aspénfasis = verdadero
'///// Llama al método del componente y almacena el valor de retorno.
strmethodreturn = objreference.examplemethod(aspname, aspage, aspemphasis)
'///// Enviar el valor de retorno al navegador visitante
respuesta.write(stmethodreturn)
'///// Borrar el objeto componente
establecer referencia obj = nada
%>
Almacenar el código ASP anterior en un archivo ASP producirá la siguiente cadena de salida:
eric clapton tiene más de 20440 días.
Habilite el código asp para llamar a archivos dll
La prueba de nuestro componente es permitirle a Windows saber dónde está almacenado y cuándo lo llama el código ASP. Primero, seleccione el icono "Ejecutar" o "Ejecutar/Iniciar" en el menú de VB, y VB registrará temporalmente el componente en el sistema.
Consejo: No puede utilizar el navegador para cargar archivos ASP directamente, ya que los archivos ASP deben cargarse en el navegador a través del servidor web.
El navegador mostrará las palabras "eric clapton tiene más de 20440 días".
Para que el componente se ejecute en otros servidores, debe compilarse en un archivo dll y luego registrarse en el servidor. Por supuesto, si desea utilizar el componente de forma permanente en la computadora de desarrollo, también deberá compilarlo y registrarlo. El único archivo necesario para ejecutar este componente en otras computadoras es el archivo dll compilado. Por supuesto, esto requiere que la computadora tenga instalado el archivo de la biblioteca de tiempo de ejecución vb.
Cómo compilar el código fuente del componente para obtener el archivo dll y cómo registrar el componente en la computadora están fuera del alcance de este artículo, por lo que no lo describiremos en detalle.
Como subproducto de escribir componentes del lado del servidor IIS, podemos llamar a los métodos de los componentes escritos desde cualquier archivo ASP y otros componentes VB, lo que mejorará aún más la flexibilidad y modularidad del código.