Download Visual FoxPro SQL Server y ASP

Document related concepts

Microsoft SQL Server wikipedia , lookup

Procedimiento almacenado wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Adaptive Server Anywhere wikipedia , lookup

Adobe Flash Media Server wikipedia , lookup

Transcript
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
1
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Edición 1.0
Prohibida la reproducción total o parcial
Sin nuestro consentimiento
Derechos de copia reservados
www.LibrosDigitales.NET
2
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
El modelo Cliente-Servidor
Definición
La tecnología Cliente-Servidor es el procesamiento cooperativo de la información
por medio de un conjunto de procesadores, en el cual múltiples clientes,
distribuidos geográficamente, solicitan requerimientos a uno o más servidores
centrales. Desde el punto de vista funcional, se puede definir la computación
Cliente-Servidor como una arquitectura distribuida que permite a los usuarios
finales obtener acceso a la información en forma transparente aun en entornos
multiplataforma.
En el modelo cliente servidor, el cliente envía un mensaje solicitando un
determinado servicio a un servidor, y este envía uno o varios mensajes con la
respuesta. En un sistema distribuido cada máquina puede cumplir el rol de servidor
para algunas tareas y el rol de cliente para otras. Además como veremos en el
modelo de implementación, el concepto es utilizado en forma constante para varias
funciones e implementado de distintas formas.
La idea es tratar a una computadora como un instrumento, que por sí sola pueda
realizar muchas tareas, pero con la consideración de que realice aquellas que son
mas adecuadas a sus características. Si esto se aplica tanto a clientes como
servidores se entiende que la forma más estándar de aplicación y uso de sistemas
clientes/servidores es mediante la explotación de las PC a través de interfaces
gráficas de usuario; mientras que la administración de datos y su seguridad e
integridad se deja a cargo de computadoras centrales tipo mainframe.
Como se desprende de las definiciones anteriores, tanto clientes como servidores
son entidades independientes que operan conjuntamente a través de una red para
realizar una tarea. Pero para hacer la distinción respecto de otras formas de
arquitecturas o software distribuidos, se presenta una lista de características que
debieran cumplir los sistemas Cliente-Servidor:
ü
Se establece una relación entre procesos distintos, los cuales pueden ser
ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo
largo de la red.
ü
Existe una clara distinción de funciones basada en el concepto de "servicio", que
se establece entre clientes y servidores.
ü
La relación establecida puede ser de muchos a uno, en la que un servidor puede
dar servicio a muchos clientes, regulando su acceso a recursos compartidos.
3
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
ü
Los clientes corresponden a procesos activos en cuanto a que son éstos lo que
hacen peticiones de servicios a los servidores. Estos últimos tienen un carácter
pasivo ya que esperan las peticiones de los clientes.
ü
No existe otra relación entre clientes y servidores que no sea la que se
establece a través del intercambio de mensajes entre ambos. El mensaje es el
mecanismo para la petición y entrega de solicitudes de servicio.
ü
Las plataformas de software y hardware entre clientes y servidores son
independientes. Precisamente una de las principales ventajas de esta
arquitectura es la posibilidad de conectar clientes y servidores
independientemente de sus plataformas.
ü
El concepto de escalabilidad tanto horizontal como vertical es aplicable a
cualquier sistema Cliente-Servidor. La escalabilidad horizontal permite agregar
más estaciones de trabajo activas sin afectar significativamente el rendimiento.
La escalabilidad vertical permite mejorar las características del servidor o
agregar múltiples servidores.
4
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Componentes del modelo Cliente-Servidor
Como se ha dicho, Cliente-Servidor es un modelo basado en la idea del servicio, en
el que el cliente es un proceso consumidor de servicios y el servidor es un proceso
proveedor de servicios. Además esta relación está establecida en función del
intercambio de mensajes que es el único elemento de acoplamiento entre ambos.
De estas líneas se desprenden los tres elementos fundamentales sobre los cuales se
desarrollan e implantan los sistemas Cliente-Servidor: el proceso cliente que es
quien inicia el diálogo, el proceso servidor que pasivamente espera a que lleguen
peticiones de servicio y el middleware que corresponde a la interfaz que provee la
conectividad entre el cliente y el servidor para poder intercambiar mensajes.
Para entender en forma más ordenada y clara los conceptos y elementos
involucrados en esta tecnología se puede aplicar una descomposición o arquitectura
de niveles. Esta descomposición principalmente consiste en separar los elementos
estructurales de esta tecnología en función de aspectos más funcionales de la
misma:
ü
Nivel de Presentación: Agrupa a todos los elementos asociados al componente
Cliente.
ü
Nivel de Aplicación: Agrupa a todos los elementos asociados al componente
Servidor.
ü
Nivel de comunicación: Agrupa a todos los elementos que hacen posible la
comunicación entre los componentes Cliente y servidor.
ü
Nivel de base de datos: Agrupa a todas las actividades asociadas al acceso de
los datos.
ü
Este modelo de descomposición en niveles, como se verá más adelante, permite
introducir más claramente la discusión del desarrollo de aplicaciones en
arquitecturas de hardware y software en planos.
Cliente
El cliente es el proceso que permite al usuario formular los requerimientos y
pasarlos al servidor, se lo conoce con el término front-end. Este normalmente
maneja todas las funciones relacionadas con la manipulación y despliegue de datos,
por lo que están desarrollados sobre plataformas que permiten construir interfaces
gráficas de usuario (GUI), además de acceder a los servicios distribuidos en
cualquier parte de la red.
Las funciones que lleva a cabo el proceso cliente se resumen en los siguientes
puntos:
ü
ü
ü
ü
ü
ü
Administrar la interfaz de usuario.
Interactuar con el usuario.
Procesar la lógica de la aplicación y hacer validaciones locales.
Generar requerimientos de bases de datos.
Recibir resultados del servidor.
Formatear resultados.
5
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Servidor
Es el proceso encargado de atender a múltiples clientes que hacen peticiones de
algún recurso administrado por él. Al proceso servidor se lo conoce con el término
back-end. El servidor normalmente maneja todas las funciones relacionadas con la
mayoría de las reglas del negocio y los recursos de datos.
Las funciones que lleva a cabo el proceso servidor se resumen en los siguientes
puntos:
ü
ü
ü
ü
Aceptar los requerimientos de bases de datos que hacen los clientes.
Procesar requerimientos de bases de datos.
Formatear datos para trasmitirlos a los clientes.
Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de
datos.
Middleware
En su definición más simple, middleware es la interfaz que provee la conectividad
entre aplicaciones clientes y aplicaciones servidoras, y entre aplicaciones y bases de
datos. Es una capa de software que protege a los desarrolladores de tener que
manejar detalles de bajo nivel de diferentes protocolos de comunicación, sistemas
operativos y arquitecturas de bases de datos. Este tipo de interfaces incluyen API’s,
PRC’s, Pipes, mensajería de red y accesos a bases de datos.
6
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Componentes del Software
Toda aplicación está compuesta por las siguientes capas:
Capa de Datos
Es la parte compuesta por la Base de Datos, tablas y vistas
Capa de Negocios
La capa de las Reglas de Negocio o Lógica de Negocio, está compuesta por el
conjunto de condiciones sobre la cual corre de la aplicación.
Capa de Presentación
Es la interfaz que usa el Cliente para acceder a la aplicación, está compuesta por
los formularios, sistemas de menús, diálogos, cajas de herramienta.
Las tres capas están relacionadas unas con otras, la capa de Presentación recibirá
la petición del Cliente, se la envía a la capa de Negocios para que procese la
petición, luego accede a la capa de Datos para generar un resultado.
J La distribución de estas capas en el Servidor o en el Cliente, dará origen a los distintos modelos que
a continuación se describe.
7
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Clasificación de modelos Cliente-Servidor
Uno de los aspectos claves para entender la tecnología Cliente-Servidor, y por lo
tanto contar con la capacidad de proponer, promocionar y llevar a cabo soluciones
de este tipo, es llegar a conocer la arquitectura de este modelo y los conceptos o
ideas asociados al mismo. Más allá de entender los componentes
cliente/middleware/servidor, es preciso analizar ciertas relaciones entre éstos, que
pueden definir el tipo de solución que se ajusta de mejor forma a las estadísticas y
restricciones acerca de los eventos y requerimientos de información que se
obtuvieron en la etapa de análisis de un determinado proyecto. De hecho el analista
o líder deberá conocer estos eventos/restricciones del negocio para, a partir de allí,
hacer las consideraciones y estimaciones de la futura configuración, teniendo en
cuenta aspectos como por ejemplo, la oportunidad de la información, tiempo de
respuesta, tamaños de registros, tamaño de bases de datos, estimaciones del
tráfico de red, distribución geográfica tanto de los procesos como los datos, etc.
Una de las más comunes y discutidas distinciones entre las diferentes arquitecturas
Cliente-Servidor se basan en la idea de planos (tier), la cual es una variación sobre
la división o clasificación por tamaño de componentes (clientes grandes y
servidores amplios). Esto se debe a que se trata de definir el modo en que las
prestaciones funcionales de la aplicación serán asignadas, y en que proporción,
tanto al cliente como al servidor. Dichas prestaciones se deben agrupar entre los
tres componentes clásicos para Cliente-Servidor: interfaz de usuario, lógica de
negocios y los datos compartidos, cada uno de los cuales corresponde a un plano.
Dentro de esta categoría tenemos las aplicaciones en dos planos (two-tier), tres
planos (three-tier) y multi planos (multi-tier).
Cliente-Servidor Dos Planos
Esta estructura se caracteriza por la conexión directa entre el proceso cliente y un
administrador de bases de datos. Dependiendo de donde se localice el grupo de
tareas correspondientes a la lógica de negocios se pueden tener a su vez dos tipos
distintos dentro de esta misma categoría:
Cliente inteligente
8
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
En este esquema el cliente envía mensajes con solicitudes SQL al servidor de bases
de datos y el resultado de cada instrucción SQL es devuelto por la red, no
importando si son uno, diez, cien o mil registros. Es el mismo cliente quien debe
procesar todos los registros que le fueron devueltos por el servidor de base de
datos, según el requerimiento que él mismo hizo. Esto hace que este tipo de
estructura se adecue a los requerimientos de aplicaciones orientadas a los sistemas
de apoyo y gestión, pero resultan inadecuados para los sistemas críticos en que se
requieran bajos tiempos de respuesta.
Ventajas:
ü
Presenta una estructura de desarrollo bastante simple por cuanto el
programador típicamente maneja un único ambiente de desarrollo (es más
simple respecto de Cliente-Servidor en tres planos, puesto que reduce una capa
de programación, como se verá más adelante).
Desventajas:
ü
La gran cantidad de información que viaja al cliente congestiona demasiado el
tráfico de red, lo que se traduce en bajo rendimiento.
ü
Por su bajo rendimiento esta estructura tiene un bajo espectro de aplicación,
limitándose a la construcción de sistemas no críticos.
Implementado con Procedimientos Almacenados
En este esquema el cliente envía llamadas a funciones que residen en la base de
datos, y es ésta quien resuelve y procesa la totalidad de las instrucciones SQL
agrupadas en la mencionada función.
9
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Ventajas:
ü
Presenta las mismas ventajas de una arquitectura dos planos con
procedimientos almacenados, pero mejora considerablemente el rendimiento
sobre ésta, dado que reduce el tráfico por la red al procesar los datos en la
misma base de datos, haciendo viajar sólo el resultado final de un conjunto de
instrucciones SQL.
Desventajas:
ü
Si bien la complejidad de desarrollo se ve disminuida, se pierde flexibilidad y
escalabilidad en las soluciones implantadas (especialmente respecto de ClienteServidor en tres planos, como se verá mas adelante).
ü
Obliga a basar el grueso de la aplicación en SQL extendido, propios del
proveedor de la base de datos que se elija. Debiera considerarse que sí bien los
procedimientos almacenados (stored procedures), los desencadenantes
(triggers) y las reglas (constraint) son útiles, en rigor son ajenos al estándar de
SQL:
§
No existen dos implementaciones de proveedores iguales.
§
El lenguaje para la descripción de los procedimientos almacenados y
probablemente su funcionalidad varía de un proveedor a otro. Lo que implica
que los procedimientos almacenados no son totalmente exportables entre
plataformas de distintos proveedores.
§
Se pierde la independencia entre el código de la aplicación (conocimiento y
reglas del negocio) y los datos.
10
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Cliente-Servidor Tres Planos.
Esta estructura se caracteriza por elaborar la aplicación en base a dos capas
principales de software, más la capa correspondiente al servidor de base de datos.
Al igual que en la arquitectura dos capas, y según las decisiones de diseño que se
tomen, se puede balancear la carga de trabajo entre el proceso cliente y el nuevo
proceso correspondiente al servidor de aplicación.
En este esquema el cliente envía mensajes directamente al servidor de aplicación el
cual debe administrar y responder todas las solicitudes. Es el servidor, dependiendo
del tipo de solicitud, quien accede y se conecta con la base de datos.
Ventajas:
ü
Reduce el tráfico de información en la red por lo que mejora el rendimiento de
los sistemas (especialmente respecto de la estructura en dos planos).
ü
Brinda una mayor flexibilidad de desaarrollo y de elección de plataformas sobre
la cual montar las aplicaciones.
ü
Provee escalabilidad horizontal y vertical.
ü
Se mantiene la independencia entre el código de la aplicación (reglas y
conocimiento del negocio) y los datos, mejorando la portabilidad de las
aplicaciones.
ü
Los lenguajes sobre los cuales se desarrollan las aplicaciones son estándares lo
que hace más exportables las aplicaciones entre plataformas.
ü
Dado que mejora el rendimiento al optimizar el flujo de información entre
componentes, permite construir sistemas críticos de alta confiabilidad.
11
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
ü
El mismo hecho de localizar las reglas del negocio en su propio ambiente, en
vez de distribuirlos en la capa de interfaz de usuario, permite reducir el impacto
de hacer mantenimiento, cambios urgentes de última hora o mejoras al
sistema.
ü
Disminuye el número de usuarios (licencias) conectados a la base de datos.
Desventajas:
ü
Dependiendo de la elección de los lenguajes de desarrollo, puede presentar
mayor complejidad en comparación con Cliente-Servidor dos planos.
ü
Existen pocos proveedores de herramientas integradas de desarrollo con
relación al modelo Cliente-Servidor dos planos, y normalmente son de alto
costo.
ü
Debido a estas desventajas es aquí la mayor importancia del Generador
(aplicación creada en el presente trabajo).
12
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Implementando Cliente-Servidor
Una de las caracteristicas potenciales de Visual FoxPro es la sencillez del lenguaje.
Podemos implementar Cliente Servidor de las siguiente formas:
Mediante el uso de Vistas remotas
Esta es la herramienta apropiada para implementar Cliente Inteligente. En Visual
FoxPro se dispone de una Asistente denominado Upsizing, mediante el cual
podemos migrar una aplicación Monolitica a Cliente Inteligente, durante el
procedimiento se generan Vistas Remotas. De forma similar a las Vistas Locales, se
dispone de un Diseñador para Vistas Remotas, mediante el cual basandose en un
DSN podemos acceder a cualquier Base de Datos, ya sea para consultar o realizar
actualizaciones.
Usando el Paso a través de SQL
El Paso a través es la alternativa para la solucion de Servidor Inteligente,
basandose en un DSN, podemos interactuar con los objetos del Servidor: Tablas,
Vistas, Procedimientos Almacenados, etc.
A través de ADO OLEBD
Representa la tecnologia novedosa de Microsoft que ofrece conectividad total a
bases de datos de arquitectura abierta, de un modo directo, por tanto supone un
modo mas rápido y seguro.
Todas las tecnicas anteriores se detallarán a continuación.
J En ésta primera entrega nos ocuparemos del desarrollo de Vistas Remotas, las siguientes técnicas
estarán disponibles en la siguiente edición de éste libro.
13
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Implementando Cliente Inteligente
Upzising a SQL Server
A diferencia de una aplicación multiusuaria basado en un sistema operativo de
escritorio, ésta queda restringida a un número limitado de usuarios y no ofrece
mayor seguridad a los datos.
Para implementar Cliente-Servidor, requerirá un servidor basado en Windows NT
Server, un administrador de Base de Datos para el Servidor como SQL Server. El
Cliente puede estar basado en alguna versión de Windows.
Implementar una aplicación Cliente-Servidor, supone crear la Base de Datos en el
Servidor, establecer la conexión desde el Cliente y desarrollar el programa a ser
usado en las PC Cliente.
Visual FoxPro incluye una herramienta mediante la cual puede migrar una
aplicación de escritorio al entorno Cliente-Servidor, tal procedimiento se conoce
como Upsizing a SQL Server. Mediante este procedimiento fácilmente se migra la
Base de Datos al Servidor, las Vistas Locales automáticamente se convertirán en
Vistas remotas, asi mismo por cada una de las tablas se generán Vistas Remotas.
Una aplicación optima Cliente-Servidor supone administrar cuidadosamente el
trafico de acceso al Servidor de modo que se evite la congestión, hecho el Upsizing
el siguiente procedimiento será la de optimizar la aplicación, en algunos casos
reemplazando el acceso a los datos mediante Vistas remotas por otros métodos
más óptimos como el Paso a través de SQL o a través de OLEDB.
J El uso de vistas locales en el diseño de una aplicación facilita el proceso de Upsizing, una vez
concluida, no tendrá que modificar absolutamente nada.
14
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Preparando el Servidor
Para realizar esta tarea necesitará derechos de acceso al Servidor como
Administrador, por razones didácticas asumiremos que el Administrador tiene por
Id de inicio de sesión “sa” y sin contraseña.
En el Servidor se debe reservar el espacio para los objetos de la Base de Datos.
Este espacio se llama Dispositivo, por cada Base de Datos se creará dos
dispositivos:
ü
Dispositivo de Base de Datos, es un archivo con la extensión MDF, contiene
las tablas de datos, vistas, procedimientos almacenados, desencadenantes, etc.
ü
Dispositivo para el Registro de Transacciones, también es un archivo con
la extensión LDF, aquí se guarda los cambios que se realiza en una Base de
Datos de manera automática.
Veamos el procedimiento para crear los Dispositivos:
1. SQL Server, incorpora una herramienta de
Administrador Corporativo o Enterprise Manager.
administración
llamada
2. Inicie el Administrador Corporativo, verifique que el Servidor este registrado y
activo, expanda sus opciones y sitúese en Bases de Datos.
3. Haga click en el botón derecho del mouse sobre la opción Bases de Datos y elija
la opción Nueva Base de Datos.
15
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
4. Asigne un nombre a la Base de Datos, por ejemplo svrPCVentas, así mismo
indique un tamaño para el Dispositivo, por ejemplo 10 Mb.
5. En el mismo dialogo en la pagina Registro de Transacciones, especifique el
tamaño, que debe ser entre el 25 a 30% del tamaño del Dispositivo de Base de
Datos, en nuestro caso unos 3 Mb.
16
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Una vez que pulse el botón Aceptar se habrá creado los archivos correspondientes
para estos dispositivos.
J El tamaño de la Base de Datos es referencial, es decir si al cabo de un par de meses la Base de
Datos supera el tamaño indicado automáticamente crecerá dependiendo si en el diálogo Propiedades del
dispositivo, indicó el crecimiento en Megabytes o en Porcentaje .
17
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Preparando el Cliente
Preparar el Cliente supone preparar la Aplicación. Tome en cuenta las siguientes
consideraciones:
ü
La condición para que una Aplicación migre a Cliente-Servidor sin dificultades es
que el acceso a la Base de Datos este basada en Vistas Locales.
ü
Para optimizar el acceso a la Base de Datos, parametrice las Vistas.
La aplicación a migrar, corresponde al desarrollado en el libro Fundamentos de
programación en Visual FoxPro, la cual funciona perfectamente en una red de
recursos compartidos Windows:
J Si su aplicación accede directamente a las tablas, no se preocupe, tambien puede migrar a Cliente
Servidor, solo que finalizado el proceso deberá realizar algunos ajustes.
18
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Estableciendo la conexión al Servidor
Para acceder a una fuente de datos externa podemos usar ODBC o algún
controlador interno (OLEDB).
Windows provee de un conjunto de controladores mediante los cuales podemos
acceder a fuentes de datos foráneas de tipo relacional, ya sea para actualización o
consulta, operación que se realiza desde el Administrador ODBC.
El procedimiento consiste en crear un DSN (Data Source Name) u Origen de Datos.
1. Diríjase al Panel de Control y haga doble click en el icono ODBC 32 Bits
Puede crear tres tipos de DSN:
ü DSN de usuario, podrá ser usado solo por el usuario que lo creó
ü DSN de sistema podrá ser usado por cualquier usuario de esa PC
ü DSN de archivo generará un archivo el que luego podrá trasladarse como
archivo con extensión DSN a otra PC.
En nuestro caso definiremos un DSN de sistema.
2. Haga click en el botón Agregar.
3. En el dialogo Crear nuevo origen de datos, ubique el controlador SQL Server.
19
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
4. En el dialogo siguiente asigne un nombre al DSN: dsnPCVentas e identifique el
Servidor (EduTec en este caso).
5. A continuación señale que el acceso al Servidor de datos se hará usando la
autenticación SQL Server, indique el Id de inicio de sesión: “sa” y sin
contraseña.
20
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
6. Ahora ubique la Base de Datos svrPCVentas.
7. Ya para terminar se mostrará un diálogo señalando que el procedimiento ha
finalizado, conviene que haga click en el botón Probar origen de datos, si se
muestra el mensaje “Las pruebas se han completado con éxito”, todo habrá
terminado.
21
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
J Un DSN de Usuario, puede ser usado solo por el usuario que lo ha definido, el DSN de Sistema, está
disponible para cualquier usuario, el DSN de Archivo es transportable.
22
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Efectuando el Upsizing
A veces el proceso de upsizing es interrumpido por un problema de red, del
servidor o por la aplicación, dado que este proceso efectúa cambios irreversibles en
la Aplicación, conviene mantener una copia de la Aplicación.
Dada la recomendación, iniciemos con el Upsizing.
1. Abra la Base de Datos PCVentas
2. En el menú Herramientas, ubique la opción Asistentes, luego seleccione la
opción Upsizing.
3. Visual FoxPro, presenta dos Asistentes para Upsizing, una hacia SQL Server y
otra hacia Oracle. En nuestro caso elegiremos Asistente para upsizing SQL
Server.
4. En el primer paso, seleccione o confirme la Base de datos que migrará a SQL
Server: PCVentas.DBC
23
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
5. Luego ubique el DSN que se usará para conectarse al Servidor: dsnPCVentas
6. A continuación señale las tablas que migraran al Servidor.
24
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
7. En el dialogo siguiente verifique que los tipos de campo que el asistente
propone para las tablas SQL Server, sean los adecuados.
8. En el quinto paso confirme el Dispositivo de Base de Datos creado en SQL
Server: svrPCVentas
25
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
9. Revise los atributos que tendrán las tablas en el Servidor, asi mismo indique los
cambios que se realizarán en la Aplicación, por ejemplo si por cada Vista Local
se creará una Remota, si por cada tabla DBF se obtendrá una Vista Remota.
10. Por ultimo haga click en el botón Finalizar y ejecute la aplicación, está
funcionando en Cliente-Servidor.
J En caso ocurriera un error durante el proceso y no hubiera concluido satisfactoriamente el Upsizing,
borre la aplicación y los objetos generados en el Servidor, corrija el error, e inicie nuevamente la
operación. Por esa razón al principio se le recomendó mantener una copia de la Aplicación.
26
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Luego del Upsizing
En el servidor se habrá creado la estructura de las tablas, para revisar el contenido
de ellas diríjase al Administrador Corporativo, haga clic derecho sobre la Base de
Datos SvrPCVentasy en el menú emergente elija Refrescar o en su caso pulse F5.
Puede inspeccionar la estructura de las tablas, expandiendo la Base de Datos y en
la sección Tablas, seleccione una tabla y haga doble click en él.
27
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Otra forma es mediante el Analizador de Consultas, para iniciarlo en el
Administrador Corporativo vaya al menú Herramientas y elija la opción Analizador
de Consultas.
Antes de efectuar pruebas, seleccione la Base de Datos a usar en la lista de la parte
superior derecha.
El Analizador de Consultas esta dividido en dos partes, en la parte superior puede
anotar instrucciones SQL, el resultado se mostrará en la parte inferior, por ejemplo
pruebe:
SELECT * FROM Articulo
Por el lado del Cliente en la Base de Datos PCVentas se habrá creado un conjunto
de Vistas Remotas, las tablas que en ella figura ya no serán necesarias, así que
puede removerlas.
28
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Optimizando la Aplicación
Una forma de aliviar el tráfico en la red es minimizando la cantidad de datos que
deba viajar a través de él.
Las Vistas Remotas recogen los datos del Servidor, para recién ser procesadas en el
Cliente, siendo por esta razón no son tan adecuadas.
El método adecuado de optimización es mediante la implementación de un
programa que permita resumir los datos necesarios en el Servidor para ser
enviados al Cliente, estos programas son los llamados Procedimientos
Almacenados, como ya se mencionó residen en el Servidor.
29
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Implementando Servidor Inteligente
Procedimientos Almacenados
En un modelo multicapa, conviene que ciertas acciones deban realizarse en el
Servidor, las ligadas a datos. El Servidor manipula los datos actuales, que envuelve
búsquedas de registros, añadir, actualizar y borrar registros. Mientras que el cliente
controla la lógica, diciendo al Servidor qué hacer y en qué orden lo debe de hacer.
Un Procedimiento Almacenado es un precompilado conjunto de órdenes SQL.
Debido a que están precompiladas se gana en optimización a la hora de usarla.
Visual FoxPro le dice al Servidor qué Procedimiento Almacenado debe ejecutar pero
no sabe qué es lo que hay en cada uno de los Procedimientos Almacenados. Visual
FoxPro solo sabe, y de hecho, sólo necesita saber, si los Procedimientos
Almacenados funcionan.
El uso de Procedimientos Almacenados en el Servidor para acciones que se realizan
frecuentemente mejora radicalmente la velocidad de los procesos. Una vez que el
Procedimiento Almacenado ha sido satisfactoriamente creado en el servidor, el
Servidor ya no tiene que comprobar la sintaxis y compilar antes de ejecutar, lo cual
enlentece la Aplicación.
30
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Implementación
Para crear procedimientos almacenados, siga los pasos siguientes:
1. Usando el Administrador Corporativo, expanda la Base de Datos SvrPCVentas y
haga click derecho en Procedimientos Almacenados, luego seleccione Nuevo.
2. A continuación defina el Procedimiento Almacenado:
CREATE PROCEDURE TotalVentas AS
SELECT mes = DATENAME(mm, Fecha),
Total = SUM(PreVenta*Cantidad)
FROM Factura, Detalle
WHERE Facturas.IdFactura = Detalle.IdFactura
GROUP BY DATENAME(mm, Fecha)
31
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
3. Puede hacer click en el botón Comprobar la sintaxis
4. Finalmente haga click en Aceptar para grabarlo
32
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Uso de Parámetros
Los Parámetros son el medio por el cual se enviará datos del Cliente al
Procedimiento Almacenado o viceversa.
Parámetros de entrada
Crearemos un Procedimiento que nos permita calcular las comisiones de un
vendedor en un determinado mes.
Usaremos un parámetro de entrada: el mes a consultar, los parámetros deben
estar antepuestos del símbolo @ seguido del nombre del parámetro y del tipo de
parámetro.
CREATE PROCEDURE spComision
@Mes SmallInt
AS
SELECT Vendedor.NomVendedor,
Comision = SUM(PrecVenta*Cantidad) * 0.10
FROM Detalle, Vendedor
WHERE Factura.IdFactura = Detalle.IdFactura AND
Factura.IdVendedor = Vendedor.IdVendedor AND
DATEPART(mm,Fecha) = @Mes
GROUP BY Vendedor.NomVendedor
Parámetros de salida
Se usará para recuperar un dato proveniente del Servidor, un parámetro de salida
se define anteponiéndole el símbolo @ seguido del nombre del parámetro, del tipo
de parámetro y el término OUTPUT.
Por ejemplo vamos a obtener el total de las ventas realizadas.
CREATE PROCEDURE spVentasAnno
@TotVen Int OUTPUT
AS
SELECT @TotVen = SUM(PreVenta*Cantidad)
FROM Detalle
33
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Lo usual es usar parámetros de entrada y salida, un ejemplo muy simple seria la de
sumar dos números y recoger el resultado:
CREATE PROCEDURE spSuma
@Num1 Int,
@Num2 Int,
@Rpta Int OUTPUT
AS
SELECT @Rpta = @Num1 + @Num2
A continuación se expone las distintas técnicas que se puede usar para acceder a
los objetos del Servidor desde el Cliente.
J Las consideraciones para implementar Procedimientos Almacenados, el manejo de Transacciones,
uso de Vistas, Desencadenantes se analizará en la próxima entrega.
34
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Vistas Remotas
A diferencias de las Vistas Locales, las Vistas Remotas toman como origen de datos
una Fuente de Datos externa a la cual se accede mediante controladores ODBC.
Ventajas
ü
La principal ventaja radica en la simplicidad de su creacion.
ü
Mediante la opcion Criterios de Actualizacion, facilmente puede actualizar la
fuente de datos foranea.
ü
Todas las especificaciones de la Vista se guarda en la Base de Datos de Visual
FoxPro, facilitando el diseño de informes y formularios puesto que podra
incluirlos en el Entorno de Datos.
Desventajas
ü
El resultado generador por una Vista puede resultar mas lento que las otras
tecnicas.
ü
Las Vistas Remotas no puede ejecutar objetos distintos a las tablas como los
Procedimientos Almacenados y Consultas del Servidor.
35
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Un ejemplo
Veamos un ejemplo de Vista Remota, obtendremos los datos de un determinado
Cliente
1. Sobre la Base de Datos PCVentas haga click derecho y señale Nueva Vista
Remota.
2. Seleccione el DSN dsnPcVentas
3. Seleccione la tabla Clientes
4. Será necesario definir un parámetro de tipo carácter para el código del Cliente,
al que llamaremos codCliente
36
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
5. A continuación establezca el filtro
6. Establezca las propiedades de Actualización
7. Proporcione un nombre a la vista, por ejemplo: vrCliente
8. Para realizar una prueba, anote:
CodCliente = “C13”
USE Farmacia!vrCliente
BROWSE
9. Deberá mostrarse los datos del cliente C13
37
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
J Respecto al diseño de formularios, deberá tener en cuenta las mismas consideraciones señaladas en
el uso de Vistas Locales, puede revisar dicho teme en nuestro libro Fundamentos de programación en
Visual FoxPro, www.LibrosDigitales.NET
Cómo actualizo la tabla remota?
Puede forzar la actualización de datos usando la función TableUpdate(.T.) o con una
órden USE.
L Si usará funciones en el diseño de sus Vistas Remotas, deberá usar las correspondientes en SQL
Server.
El cuadro siguiente muestra las funciones SQL Server homólogas a las de Visual
FoxPro:
En Visual FoxPro
.T.
.F.
ASC()
AT()
SUBSTR()
CHR()
CTOD()
DTOC()
CTOT()
TTOC()
TTOD()
DTOT()
DTOR()
RTOD()
MTON()
NTOM()
DATE()
DATETIME()
DAY()
MONTH()
YEAR()
DOW()
CDOW()
CMONTH()
HOUR()
MINUTE()
En SQL Server
1
0
ASCII()
CHARINDEX()
SUBSTRING()
CHAR()
CONVERT(datetime, …)
CONVERT(varchar, …)
CONVERT(datetime, …)
CONVERT(char, …)
CONVERT(datetime, …)
CONVERT(datetime, …)
RADIANS()
DEGREES()
CONVERT(money, …)
CONVERT(float, …)
GETDATE()
GETDATE()
DATEPART(dd,…)
DATEPART(mm,…)
DATEPART(yy,…)
DATEPART(dw,…)
DATENAME(dw,…)
DATENAME(mm,…)
DATEPART(hh,…)
DATEPART(mi,…)
38
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Paso a través de SQL
Este técnica proporciona al Desarrollador un modo de acceso mas directo al
Servidor.
Ventajas
ü
La recuperación de datos es más rápido
ü
Puede usar cualquier orden nativa del Servidor SQL
ü
Se puede enviar al Servidor varias ordenes y recibir varios resultados a través
de una sola conexión
ü
Se tiene mayor control sobre las Transacciones remotas
Desventajas
ü
El resultado no puede incluirse en el Entorno de Datos como las Vistas.
ü
El resultado generado es de solo lectura, la actualizacion debe realizarse en
base a una instrucción SQL diferente.
39
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Conectándose al Servidor
Este metodo hace uso de un DSN, asumiremos el creado al principio del capitulo:
dsnPcVentas
La función que permite definir una conexión se llama SQLCONNECT(), ésta función
devuelve un número. Si el número es –1 es por que no se logro establecer la
conexión satisfactoriamente, caso contrario el numero generado identificará la
conexión.
n = SQLCONNECT( dsn, IdUsuario, Contraseña)
Por ejemplo:
n = SQLCONNECT( “dsnPcVentas”, “sa”, “”)
Ahora verificamos el valor devuelto:
? n
Si el valor devuelto es 2, indica que la conexión se realizó satisfactoriamente, a la
conexión se le indentificará mediante el número dos.
40
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Desconectándonos del Servidor
Usemos una conexión para realizar todas nuestra operaciones con el Servidor, en el
momento que no sea necesario puede remover la conexión mediante la función:
SQLDISCONNECT(Conexión)
Por ejemplo:
SQLDISCONNECT(n)
Ejecución de sentencias SQL
Para acceder a las tablas y realizar operaciones con ellas asi como ejecutar los
Procedimientos Almacenados, usaremos la funcion SQLEXEC(), cuya sintaxis es la
siguiente:
SQLEXEC(Conexión, OrdenSQL, cursor)
Se generará un Cursor solo cuando la orden SQL es una instrucción SELECT.
Por ejemplo para acceder a la tabla Cliente podemos usar:
SQLEXEC(n, “SELECT * FROM Cliente”, “cCliente”)
SELECT cCliente
BROWSE
Tambien podemos parametrizar una consulta, definimos el parámetro:
codCliente = “C01”
cSQL = “SELECT * FROM Cliente WHERE IdCliente = ?codCliente”
SQLEXEC(n, cSQL, “cCliente”)
SELECT cCliente
BROWSE
41
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Si desea actualizar el telefono del cliente con Id “C01”, anotariamos:
cSQL = “UPDATE Cliente SET TelCliente=‘C01’ WHERE IdCliente=‘C01’ ”
SQLEXEC(n, cSQL, “cCliente”)
42
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Ejecución de Procedimientos Almacenados
La función SQLEXEC() se puede usar para enviar no solo órdenes SQL tales como
Insert y Update, sino también puede usar para decir a SQL Server que ejecute un
procedimiento almacenado.
Para ejecutar un Procedimiento Almacenado se usa la orden T-SQL:
EXEC ProcAlm @parámetro = valor
Por ejemplo para ejecutar el procedimiento almacenado spTotalVentas:
SQLEXEC(n,”EXEC spTotalVentas”)
43
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Procedimientos almacenados con parámetros
En el caso de procedimientos almacenados que presenten parámetros tiene dos
opciones:
Para el caso del procedimiento spComision que tiene un parametro de entrada:
SQLEXEC(n,”EXEC spComision @Mes=3”)
Puede que le resulte más cómodo usar la otra forma, al menos cuando se presenta
parámetros de salida, veamos el resto de casos:
* Se define una valor inicial para nTotal
nTotal = 0
SQLEXEC(n,”{CALL spVentasAnno(?@nTotal)}”)
* Recibimos el resultado en la misma variable
? nTotal
Para el caso de la suma de dos números:
nSuma = 0
X = 7
Y = 5
SQLEXEC(n,”{CALL spSuma(X, Y,?@nSuma)}”)
? nSuma
J Como ve el acceso al servidor es sumamente sencillo, la integración las técnicas y consideraciones
en el desarrollo será para la siguiente entrega, recuerde que sus opiniones y sugerencias son muy
importantes para nosotros, www.LibrosDigitales.NET
44
Aplicaciones Cliente-Servidor e Internet con Visual FoxPro, SQL Server y ASP
Próxima Entrega
Edición 1.1
Dentro de una semana
Prohibida la reproducción total o parcial
Sin nuestro consentimiento
Derechos de copia reservados
www.LibrosDigitales.NET
45