Red de conocimiento informático - Material del sitio web - Cómo implementar la arquitectura ASP de tres niveles

Cómo implementar la arquitectura ASP de tres niveles

ASP tiene buena escalabilidad. Cuando accedemos a la base de datos, usamos el objeto ADO. Cuando accedemos al archivo, usamos el objeto del sistema de archivos (FSO). Esto sólo es posible gracias al uso de objetos integrados. Estos objetos siguen la interfaz COM/ActiveX, por lo que desarrollamos nuestros propios objetos para seguir esta interfaz. A continuación, utilizaremos los criterios de "elegibilidad" anteriores como ejemplo para demostrar cómo crear su propia aplicación ASP de tres niveles.

1. Cree la siguiente tabla de base de datos en el sistema de base de datos:

Empleado: EMPLID char (5) no nulo,

Nombre char (10) no nulo. ,

Género char (1) no nulo,

Puntuación int no nula

Esta tabla almacena información de los empleados y puntuaciones de las pruebas. Para simplificar, solo contiene números. , nombre y sexo, y solo una prueba, EMPLID es la clave principal.

2. Cree una biblioteca de enlaces dinámicos

Inicie VB (aquí está VB como ejemplo, puede usar cualquier herramienta de desarrollo que desee que admita la interfaz ActiveX para el desarrollo), cree una. Nuevo proyecto, el tipo de proyecto es ActiveX

DLL. Cree una nueva clase llamada Empleado en el proyecto. Puedes visualizar la clase

Builder. Puede agregar propiedades y métodos a una clase visualmente en el generador de clases o editarlos manualmente. Primero complete la propiedad EMPLID de la siguiente manera:

Privado msEMPLID como cadena

Propiedad Let EMPLID(sEMPLID como cadena)

msEMPLID=sEMPLID

Propiedad final

Propiedad Obtener EMPLID() como cadena

EMPLID=msEMPLID

Propiedad final

En términos generales, generalmente diga: cada propiedad debe tener un método Property

Let y Property

Get. Métodos, llamados al asignar valores a propiedades y leer valores de propiedad. Si una propiedad solo se asigna y nunca se lee (lo que suele ser el caso de las propiedades que corresponden a la clave primaria de una tabla de base de datos), se puede omitir el método Property

Get y el Property

El método Let no se puede omitir. Puede crear tres propiedades más: Nombre, Género y Puntuación siguiendo el procedimiento anterior.

Luego cree el siguiente método:

Public Sub Create(EMPLID as string)

dim conn as new Connection

dim rs as new Recordset

dim sql as string

'Suponiendo que creó un DSN en el panel de control, el atributo de cadena de conexión

'también puede ser una cadena sin dsn

conn .ConnectionString= "dsn=dsnname;uid=nombre de usuario;contraseña=pwd"

conn.open

sql="seleccione * de Empleado donde EMPLID='" & EMPLID & "' "

con rs

.open sql,conn,1,3

si .eof y .bof entonces

salir de sub

else

msEMPLID=trim(.Fields("EMPLID"))

msName= trim(.Fields("Nombre"))

msGender=trim(.Fields("Gender"))

msScore=.Fields("Score")

finaliza si

.close p>

terminar con

set rs=nada

conn.close

set conn=nada

End Sub

p>

Aquí se crea un objeto Empleado basado en EMPLID. Tenga en cuenta que los valores en la base de datos se asignan a tres variables privadas, en lugar de asignarse directamente a atributos.

A continuación creamos otra clase Empleados y completamos los siguientes métodos:

colQualifiedList privado como nueva Colección

mnCurrentIndex privado como número entero

Public Sub GetQualifiedList()

dim conn como nueva conexión

dim rs como nuevo conjunto de registros

dim sql como cadena

'Supongamos que Cuando crea un DSN en el panel de control, la cadena de conexión es la misma que la cadena de conexión .ConnectionString="dsn=dsnname;uid=username;password=pwd"

conn.open

sql="seleccione EMPLID de Empleado donde Puntuación>=60 ordenar por Puntuación desc"

con rs

.open sql, conn,1,3

si .eof y .bof entonces

salir de sub

p>

else

hacerlo mientras no .eof

dim oEmployee como nuevo Empleado

oEmployee.Create trim(.Fields("EMPLID"))

colQualifiedList.Add oEmployee

set oEmployee=nada

bucle

finaliza si

.close

p>

finaliza con

.p>

terminar con

establecer rs=nada

conn.Fields("EMPLID ").cerrar

establecer oEmployee=nada

bucle

finaliza si

.close

finaliza con

.close

set conn=nada

End Sub

Primero, tenga en cuenta que la sintaxis para crear instancias de clase en VB es tenue

oEmpleado como nuevo

Empleado, como usted Como veremos más adelante, la sintaxis para crear instancias de clases en ASP es diferente. Este método recupera números de trabajo de empleados con calificaciones mayores o iguales a 60, crea un objeto Empleado a partir de ellos y luego agrega este objeto a un objeto de colección privada.

Las siguientes dos funciones iterarán sobre los elementos de la colección:

Función pública GetFirst() as Employee

si colQualifiedList.count>0 entonces

mnCurrentIndex= 1

set GetFirst=colQualifiedList.Item(1)

else

set GetFirst=nada

end if

Función final

Función pública GetNext() como Empleado

mnCurrentIndex=mnCurrentIndex+1

si mnCurrentIndex>colQualifiedList.count entonces

establecer GetNext=nada

finalizar si

Función final

Función pública GetNext()

else

set GetNext =colQualifiedList.Item(mnCurrentIndex)

End if

End Function

Quizás dirás, ¿por qué no declarar la colección como pública para que pueda ¿Se puede hacer referencia directamente en ASP? Podría decir: "¿Por qué no declarar la colección como Pública para poder hacer referencia a ella directamente en ASP? Sí, esto es posible y más fácil de programar, pero rompe el principio de encapsulación. Porque el formato de almacenamiento de datos es Cosas en el negocio La capa lógica no tiene nada que ver con la capa de interfaz de usuario. Supongamos que un día, por diversas razones, abandona el diseño del almacenamiento de recopilación de datos y utiliza matrices o conjuntos de registros (Recordset) para el almacenamiento. Entonces solo necesita modificar los dos GetFirst. y la función GetNext, no es necesario modificar la capa de la interfaz de usuario en absoluto.

Después de crear este tipo de archivo, guarde el archivo del proyecto como test.vbp y seleccione la opción Crear test.dll en. menú de archivos para compilarlo

p>

3. Registre la biblioteca de enlaces dinámicos

Inicie Microsoft Transaction Server en el servidor web

(Inicio - Windows). NT

Optionpack4--Internet Information Server--Servicio de Internet

Administrador), expanda Microsoft Transaction Server--Computadora--Mi PC--Paquete

Instalado , haga clic derecho y seleccione Nuevo--Paquete--Crear paquete vacío--Crear paquete vacío.

Paquete: crear

paquete vacío, ingrese el nombre del paquete Prueba (aquí Prueba es un nombre opcional, no necesariamente el mismo nombre que la DLL), OK-Usuario interactivo: el

Inicio de sesión actual

usuario--Finalizar Haga doble clic en Componente de prueba, haga clic con el botón derecho en Componente-Nuevo-Componente-Instalar nuevo

componente(s) - Agregar

.

Archivo, seleccione el archivo DLL que acaba de compilar, MTS encontrará que hay dos clases en el DLL: Empleado y Empleados. La DLL ahora está registrada.

4. Escribir programa ASP

Lista de empleados calificados

< borde de la tabla = 1 espacio entre celdas = 0 relleno de celda = 0>

ID del empleado

td>

Género

Lista de empleados calificados

<table border=1 espacio entre celdas =1 lt;/td>

Puntuación

<%

conjunto oEmployees= server.createobject("Test.Employees" )

oEmployees.GetQualifiedList

establecer oEmployee=oEmployees.GetFirst()

hacer mientras no oEmployee no es nada

p>

%>

<%=oEmpleado.EMPLID%>

< %=oEmpleado.Nombre%>

<.Género%>

<%=oEmpleado.Puntuación %>

<%

establecer oEmployee=oEmployees.GetNext()

bucle

% >

Tenga en cuenta que en ASP, la sintaxis para crear se establece una instancia de clase

oEmployees=server.createobject("Test.Employees"), donde Prueba es el nombre de la DLL y Empleados es el nombre de la clase;

De Por supuesto, si el valor de retorno de la función es un objeto, también puede usar una sintaxis como set oEmployee=oEmployees.GetFirst().

En este punto, se ha completado una solicitud completa de tres niveles. Echemos un vistazo si desea cambiar la definición de "transferencia": solo los primeros 100 dígitos del resultado se consideran calificados. necesita modificar el programa. Realice estos cambios.

De hecho, si su sistema de base de datos es SQL Server, solo necesita cambiar la instrucción SQL a:

sql="select top 100 EMPLID from Employee order by Score desc "Eso es todo, incluso nosotros solo necesitamos Make los siguientes cambios en GetQualifiedList:

sql="select EMPLID from Employee order by Score desc"

with rs

.open sql, conn, 1, 3

si .eof y .bof entonces

salir de sub

else

i=1

hacer while (no .eof) y (i<=100)

dim oEmployee as new Employee

oEmployee.Create trim(.Fields("EMPLID"))

colQualifiedList.Add oEmployee

set oEmployee=nada

i=i+1

loop

end if

.close

terminar con

...

Luego recompila la DLL y regístrala, y el programa ASP no necesita ser modificado en absoluto .

No es necesario modificar el programa ASP en absoluto.