Conferencia ASP 10: Escriba componentes usted mismo
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:54:53
En el contenido anterior, aprendimos cómo usar componentes. Aunque hay muchos componentes en Internet, a menudo un componente pequeño requiere desembolsar dólares estadounidenses y hay muy pocos componentes de producción nacional. Si desea gastar algo de RMB. No puede encontrar el lugar, es fácil, olvídelo, simplemente escríbalo usted mismo. De hecho, escribir componentes no es difícil, es solo una cuestión de comenzar a escribir componentes de bajo nivel y comenzar lentamente a escribir componentes de alto nivel. Para escribir componentes de servidor ActiveX, hay muchas herramientas para elegir: Visual Basic, C++, Java, etc. Aquí elegimos el VB6.0 más simple. Siempre que haya usado VB antes, puede crear uno en menos de 1 hora. . Sale el widget.
1. Escritura rápida de componentes: los pasos más básicos para escribir componentes. Esta parte explica principalmente los pasos básicos para escribir componentes. Si desea obtener más información, consulte la sección "Creación de DLL ActiveX" en la ayuda de VB6.0. documento (documentación en la biblioteca MSDN. El nombre del archivo es Vbcon98.chm).
Propósito: escribir el componente sumador más simple. Este componente tiene dos propiedades y un método. Comencemos desde el lugar más familiar, que es asumir que este componente ya existe y mirar el código que usa este componente en ASP:
<%
Suma de objetos tenue
'Primero cree el componente, el identificador del componente es TestDll.Sum
Establecer objSum = Server.CreateObject("TestDll.Sum")
'Recuerde "TestDll", "Sum" en TestDll.Sum.
objSum.augend = 10.52 'el atributo augend es el sumando
objSum.addend = 382.41 'el atributo del complemento es el sumando
Resultado = objSum.Plus 'Suma del método Plus
Respuesta.Escribir resultado
Establecer objSum = Nada
%>
Asegúrese de recordar estas palabras clave: TestDll, Sum, augend, addend, Plus, que estarán estrechamente relacionadas con el próximo trabajo. Aquí están los pasos detallados:
1. Ejecute VB6.0, en el menú "Archivo", haga clic en "Nuevo proyecto" → en el cuadro de diálogo "Nuevo proyecto", haga doble clic en el icono "ActiveX DLL" → Visual Basic agregará automáticamente un módulo de clase al nuevo proyecto Class1 (se puede ver en el "Explorador de proyectos", como se muestra en la Figura 1).
2. Presione la tecla F4 para abrir la ventana Propiedades. Haga doble clic en el atributo "Nombre" y cambie "Clase1" a Suma.
3. En el menú Proyecto, haga clic en Propiedades del proyecto 1 para abrir el cuadro de diálogo Propiedades del proyecto. Complete TestDll en "Nombre del proyecto" y "Crear ejemplo de DLL ActiveX" en "Descripción del proyecto". Como se muestra en la Figura 2.
Consejo: ¿Comprende el significado de los dos identificadores TestDLL.Sum en el componente de creación de ASP?
4. En el menú "Archivo", haga clic en "Guardar proyecto" y guarde los archivos del proyecto con los siguientes nombres: SetupDll.cls y SetupDll.vbp.
5. Cree propiedades para la clase Suma:
(1) En el menú "Herramientas", seleccione "Agregar proceso" para abrir el cuadro de diálogo "Agregar proceso". En el cuadro "Nombre", ingrese augend, haga clic en "Propiedades" y luego haga clic en "Aceptar", como se muestra en la Figura 3 (Nota: el foco actual debe estar en la ventana de código; de lo contrario, el menú "Agregar procedimiento" no será válido ).
(2) En el menú "Herramientas", seleccione "Agregar proceso" para abrir el cuadro de diálogo "Agregar proceso". En el cuadro Nombre, ingrese el complemento, haga clic en Propiedades y luego haga clic en Aceptar.
6. Crea un método para la clase Sum:
En el menú Herramientas, haga clic en Agregar procedimiento para abrir el cuadro de diálogo Agregar procedimiento. En el cuadro "Nombre", ingrese Más. En el tipo, puede seleccionar "Subrutina" o "Función". En este ejemplo, como desea devolver la suma del sumando y el sumando, haga clic en "Función" y luego haga clic. Haga clic en Aceptar.
Ahora, se han utilizado las cinco palabras clave del código ASP anterior, por lo que ahora comprende muchas cosas.
7. Todos los códigos en la ventana de código de suma del módulo de clase son los siguientes:
Opción explícita
Privado mdbl_augend como doble
Privado mdbl_addend como doble
Propiedad pública Obtenga augend() como doble
aumentar = mdbl_augend
Propiedad final
Propiedad pública Let augend(ByVal vNewValue As Double)
mdbl_augend = vNuevoValor
Propiedad final
Propiedad pública Obtener addend() como doble
complemento = mdbl_addend
Propiedad final
Propiedad pública Let addend(ByVal vNewValue As Double)
mdbl_addend = vNuevoValor
Propiedad final
Función Pública Plus()
Más = sumando + sumando
Función final
Ha notado que el código anterior es ligeramente diferente del código generado por el sistema, principalmente porque la parte Propiedad pública Obtener augend() como variante se reemplaza por el tipo de datos real Doble.
Nota: De hecho, cuando se ejecuta la instrucción x = objSum.augend, se llama al procedimiento Property Get para obtener el valor de mdbl_augend. Cuando se ejecuta la instrucción objSum.augend = 10.52, se llama al procedimiento Property Let y se asigna 10.52. a mdbl_augend.
8. El último paso es hacer clic en "Generar .Dll(K)..." en el menú "Archivo" para generar el archivo SetupDll.dll.
En este punto, el componente ha sido creado. Ahora, primero podemos escribir un proyecto de prueba en VB6 para probar si el archivo es correcto.
1. En el menú "Archivo", haga clic en "Nuevo proyecto" → haga doble clic en "EXE estándar".
2. En el menú "Proyecto", haga clic en "Referencia" → presione el botón "Examinar" en el cuadro de diálogo "Referencia", seleccione el archivo "SetupDll.dll" recién compilado → haga clic en "Aceptar".
3. Finalmente escriba el siguiente código en la ventana de código:
Opción explícita
Subformulario privado_Load()
Dim objSum como TestDll.Sum
Establecer objSum = Nueva suma
objSum.augend = 10,52
objSum.addend = 382,41
MsgBox objSum.Plus
Subtítulo final
Ejecútelo y el resultado es correcto. A continuación usamos este componente en ASP. Copie SetupDll.dll al servidor web y utilice el comando "Regsvr32.exe setupdll.dll" para registrar el componente y luego ejecute el programa ASP al principio de esta sección en el navegador. Si eso no funciona, primero puede intentar empaquetarlo con la herramienta de empaquetado VB6 y luego instalarlo. Los componentes se registrarán automáticamente y algunos archivos de ejecución de VB6 necesarios también se instalarán automáticamente.
Nota: Todos los programas de esta parte se encuentran en el archivo Setupdll.zip del paquete de descarga.
En el ejemplo anterior, utilizamos los procedimientos de propiedad Property Get y Property Let para agregar propiedades (Property Get lee el valor de la propiedad y Property Let asigna el valor a la propiedad. Si necesita verificar el valor establecido, puede hacerlo). escriba el código apropiado en el proceso Property Let. Como el siguiente código:
Propiedad pública Let augend(ByVal vNewValue As Double)
Si vNewValue < 100 Entonces
MsgBox "¡Qué estás haciendo! Si el valor es menor que 100, haz los cálculos tú mismo".
Demás
mdbl_augend = vNuevoValor
Terminar si
Propiedad final
2. Otras formas de agregar propiedades y métodos a los componentes
1. La forma más sencilla de agregar atributos: agregar variables públicas, como en el ejemplo anterior, el código más simple es el siguiente:
Opción explícita
Aumentar público como doble 'Agregar atributo aumentar
Suplemento público como doble 'Agregar atributo de sumando
Función pública Plus() como doble
Más = sumando + sumando
Función final
Sin embargo, este método solo puede establecer propiedades de lectura/escritura y no puede verificar el valor asignado. Si solo necesita agregar un atributo de solo lectura: en el ejemplo anterior, elimine el proceso Public Property Let augend(ByVal vNewValue As Double), luego augend se convierte en un atributo de solo lectura y no se le puede asignar un valor. Por supuesto, si desea agregar una propiedad de solo escritura, simplemente elimine el procedimiento de obtención de propiedad.
2. Usando la utilidad de creación de clases
También hay una herramienta para agregar propiedades y métodos en VB6: en el menú "Complementos", haga clic en "Administrador de complementos", seleccione "Utilidad VB Class Builder" en el cuadro de diálogo emergente Administrador de complementos y cargar Seleccione "Cargar/Descargar" en el comportamiento (Figura 4). Luego haga clic en Utilidad Class Builder en el menú Complementos y sabrá cómo usarla.
3. Te cuento algunas cuestiones a las que debes prestar atención.
1. El ejemplo anterior es un componente extremadamente simple. Los componentes más prácticos generalmente tienen al menos un módulo.
2. Si no tiene cuidado, Visual Basic puede producir componentes de "un solo subproceso".
Quizás uno de los errores más comunes sea el uso de componentes que no están diseñados para ejecutarse en ASP, como los componentes de "un solo subproceso". Por lo tanto, asegúrese de que el módulo de subprocesos esté configurado en "Subprocesamiento de apartamentos" en la pestaña "General" de la página "Propiedades del proyecto".
3. Acerca del error "tipo no coincidente".
Una buena sugerencia es declarar el parámetro Out como Variante. Tenga en cuenta que esto no está configurado en el ejemplo anterior.
4. Sobre el uso de variables globales.
Intente evitar el uso de variables globales en los componentes. En términos de Visual Basic, esto significa que no hay variables públicas o globales en un módulo .BAS estándar. Porque las variables globales no son verdaderamente globales. Cada hilo tiene su propia copia, y si se ejecutan varios métodos en el mismo hilo, verán las mismas variables; de lo contrario, accederán a diferentes copias de estas variables; Esto significa que puede asignar un valor a una variable global (en el hilo A), pero otro usuario de la misma (que se ejecuta en el hilo B) no puede ver el nuevo valor. La razón de esto es que Visual Basic utiliza internamente "Thread Local Storage (TLS)" para hacer referencia a variables globales. Esto significa que cada hilo tiene su propia copia de la variable pública y, debido a que hay varias copias de ella, los datos globales no son realmente "globales". Es decir, los usuarios que estén ejecutando el mismo hilo accederán a la misma variable, lo esperen o no.
Finalmente, por cierto, VB6.0 introduce un nuevo tipo de aplicación de Visual Basic: la aplicación IIS. Puede crear aplicaciones IIS tal como crea archivos DLL de ActiveX. Cualquier aplicación creada con Active Server Pages se puede crear en el entorno de desarrollo de VB. Puede reemplazar completamente todas las páginas de Active Server con una sola aplicación de VB.