PDA

Ver la Versión Completa : Programacion Ciente/Servidor


patolucas
14-10-2004, 02:47:10
Hola a todos los integrantes del foro.

La verdad es que tengo muchas dudas hacerca de la programacion Cliente/Servidor ya que es la primera vez que incursiono en este metodo de programacion.

He sabido que solo se utiliza el servidor para hacer todas las transacciones y que nada mas me regrese los datos.

Ya tengo lista mi coneccion al MS SQL SERVER, pero ahora como hago las transacciones con store procedures y todas esas cosas.

Como se inician las transacciones, si alguien me pudiera orientar se los agradece muchisimo, con algun ejemplo manual o lo que sea su voluntad.

La verdad estoy muy perdido.

Gracias :(

axelbb
14-10-2004, 22:55:54
Bueno, mientras esperás que te conteste alguien que sepa, te cuento que estoy más o menos en lo mismo. Estoy probando alguito de Oracle, un poco más de PostgreSQL y algo de FireBird (e Interbase). Son opciones, pero tienen sus diferencias.

En primer lugar, los servidores SBD traen un sistema tipo consola donde podés hacer las consultas (conseguite un manual de lenguaje SQL, que hay miles en la web). Si bien SQL pretende ser un estándar, la verdad es que hay cosas que te van a funcionar en unos y no en otros... :(

En el directorio bin (al menos en los servidores que te mencioné se crea) hay una serie de ejecutables que hacen diferentes cosas en modo consola (crear bases de datos, dar alta o baja a usuarios, levantar o bajar el servidor, etc.). Habrá alguno que se llame algoSQL, que te permite ejecutar esas famosas consultas SQL.

Vienen herramientas que permiten elaborar "visualmente" las tablas, indices, procedimientos y todo eso (en realidad, generan el código SQL respectivo para después ejecutarlo). No sé qué traerá SQL Server como herramientas de desarrollo. Consultá el manual o buscate algo de información.

Desde Delphi, hay muchos componentes que permiten acceder a los motores y trabajar mediante las sentencias SQL. Lo mínimo que necesitás poner en una ficha serían un TConnection y un TQuery. El primero es el que dá la conexión, mediante propiedades como Database, Hostname, Protocol y Connected. Generalmente necesitas pasarle un usuario y un password, para lo cual están las propiedades respectivas o podés pedirlos en tiempo de ejecución con la propiedad LoginPrompt. Si todas estas palabras te resultan muy raras, tendrás que comenzar por informarte sobre ésto (por ejemplo, para poder usar una PC como servidor de prueba, vas a tener que hacer que tenga IP fija, que es el hostname).

Ah, es fundamental, obvio, que el servidor esté activo (dependerá de cada uno cómo se levanta el servicio) y tenga la base de datos creada. Eso es otra cosa que empieza a importar: antes de usar el programa cliente, habrá que llamar el servicio del SBD y antes de apagar la PC servidora hay que darle de baja al SBD de manera correcta.

Bueno, es un tema larguísimo y difícil es guiarte cómo hacer las transacciones desde tu programa o generar procedimientos almacenados (y cómo usarlos). En todo caso, vas a tener que serenar tu apuro porque la cosa exige más esfuerzo del que parece a primera vista. Hay mucho que aprender y experimentar. Yo probé bastante hasta que pude conectar una aplicación boba que tenía esos dos componentes que te dije más un grid y un datasource en una pc en red a mi servidor. Cuando ví que en el grid aparecían tres o cuatro registros que había metido vía SQL, me emocioné hasta las lágrimas. Hoy, después de eso, avanzo más rápido. Lo difícil es entender cómo funciona el sistema y cómo se configura. Después aparecen otros problemas, pero es otra historia... Tu sistema ya anda.

No dudes que el esfuerzo vale la pena. Hay muchas ventajas en el sistema cliente/servidor. Es más seguro, el tráfico de red se reduce drásticamente por lo cual la aplicación debería andar más rápido, soportan muchísimos más registros con menos problemas, el SBD se ocupa él sólo de muchas cosas molestas (verificar integridad referencial, bloqueos, etc.). Además, una red puede tener una máquina muy buena (server) y varias mediocres (estaciones de trabajo clientes), y recargar el trabajo en el servidor. Los procedimientos almacenados hacen que el trabajo pesado lo haga esa máquina y devuelva el resultado listo o casi listo para mostrar al usuario. Hay nuevas variables a considerar: por ahí conviene llevar una selección de datos al cliente y usar la capacidad de procesamiento del cliente para obtener el producto final y liberar al servidor para que siga atendiendo otras peticiones, y otras conviene hacer todo en el servidor. Son matices que hacen más compleja la cosa y por lo cual opino que empieces por estudiar:
1) Parámetros técnicos de instalación y configuración de tu SBD (SQL Server). No sea cosa que cuando tengas varios registros en un sistema que funciona OK de golpe tengas un martes 13 (Máximo tamaño elegido para la BD, por ejemplo, que por defecto debería ser muy grande, no obstante). O usuarios concurrentes máximo (licencias?).
2) Información básica de lo que es una IP, un host, una red armada sobre Windows (en tu caso), etc. O sea, si deja de andar porque alguien metió mal un dedito... que sepas dónde buscar para hacerla andar mágicamente otra vez ;)
3) Lenguaje SQL específico para tu SBD (Hay 3 mil tutoriales, escribí "tutorial de SQL" en Google, por ejemplo).
4) Componentes Delphi para accederlo (BDE, DBExpress,Zeos,etc.)

Lo demás, suponemos que conocés Delphi :p , si es con este lenguaje que pensás trabajar.

Si lo que te describo ya lo conocés más o menos y la duda es puntualmente sobre los procedimientos almacenados, se crean con CREATE PROCEDURE o lo que soporte tu SBD. La sintaxis incluye parámetros que tenés que pasarle para trabajar, y te devuelve un cursor resultado. Se llaman con el componente TStoredProc, o aún desde una sentencia SQL tipo SELECT, como si se tratara de una tabla más, si es que el BSD lo admite. Otra manera es si disponemos del comando SQL "EXECUTE" (SQL Server lo soporta, creo). Una vez más, hay que leer sobre el SBD que usamos y los componentes que disponemos para acceder.

Te puede servir en algo: http://www.iespana.es/canalhanoi/programacion/sqlsever.htm
donde explica algo de esto para SQL Server.

Bueno, espero que te escriba pronto un moderador para que te informe y guíe de verdad.

Saludos!!

fabianbbg
19-11-2004, 23:37:55
He sabido que solo se utiliza el servidor para hacer todas las transacciones y que nada mas me regrese los datos.

Ya tengo lista mi coneccion al MS SQL SERVER, pero ahora como hago las transacciones con store procedures y todas esas cosas.


Hola: antes que nada quiero felicitarlo a "axelbb" por su extensa respuesta. Bien, por lo que pude leer de tu hilo creo que antes de meterte de lleno en la programacion, podriamos definir "que es" lo que queres hacer.. o a que apuntas y te lo digo por el tipo de aplicacion que queres desarrollar. Ya sabemos que es C-S , pero ahora bien. que tipo de C-S? cuantas capas? que tan fiel a la definicion de C-S queres llegar?
comenzando por que es un sistema c-s , transcribo una definicion:

"Sistema distribuido entre múltiples procesadores donde hay clientes que solicitan servicios y servidores que los proporcionan"

Es decir, sabemos que hay un Server y un client, pero.. donde queres colocar la logica de tu negocio?. esto es importante de definir, ahi tenes que tener en cuenta, a que tipo de cliente apuntas (pesado-liviano) , CUAL ES el escenario, p.e. si las reglas de negocio cambian muy seguido. La cantidad de Usuarios, las terminales de acceso (si tenes maquina suficiente en tu LAN), etc.. etc.. no se como ayudarte mas.. si no conozco la finalidad de tu sistema.

Pero si a lo que apuntas es a un sistema C-S con 2 capas, que es lo que mas o menos te contaba axel, tenes que tener en cuenta que la logica del negocio estara en el cliente.. y que cada vez que cambie.. tenes que actualizar el cliente.
Ahora si optas por un modelo C-S de 3 capas tendrias una serie de ventajas mas. Espero no haberme ido por las ramas. pero considere que es mejor primero ver a que apuntas con tu desarrollo, un buen diseño C-S y luego volcarte de lleno a la implementacion..
Espero tengas suerte..

Nose
22-11-2004, 15:00:56
Hola a todos los integrantes del foro.

He sabido que solo se utiliza el servidor para hacer todas las transacciones y que nada mas me regrese los datos.

Ya tengo lista mi coneccion al MS SQL SERVER, pero ahora como hago las transacciones con store procedures y todas esas cosas.

Como se inician las transacciones, si alguien me pudiera orientar se los agradece muchisimo, con algun ejemplo manual o lo que sea su voluntad.

...
Gracias :(

Hola!

El mètodo que uso son los componentes de Ado, pues son los estandard de conexiòn y que encuentro tienen buena perfomance, debes instalar el ùltimo mdac, que es el 2.8 y los encuentras en el sitio web de microsoft.

Luego debes crear los procedimientos de eliminaciòn, inserciòn, selecciòn en el motor, los que debes llamar en delphi, con los componentes TADOStoredProc, estos se deben conectar con la propiedad Connection el objeto TADOConnection y las otras propiedades que configuro es LockType lo dejo ltOptimistic, Cursortype = ctStatic, CursorLocation = clUseClient, ademàs de enlazar el procedimiento que tienes en el motor ProcedureName.

Las transacciones las ejecuto cuando se elimina, actuliza o ejecuta un proceso, no cuando un procedimiento tiene sòlo un select.

Ejemplo :



dmDataGeneral.CnnContab.BeginTrans;
try
dmMant.spBorrarBancos.Parameters.ParamByName ('@idBancos').Value := dmMant.spBrowseBancos.FieldByName( 'idBancos' ).AsString;
dmMant.spBorrarBancos.Prepared := True;
dmMant.spBorrarBancos.ExecProc;
dmDataGeneral.CnnContab.CommitTrans;
except
dmDataGeneral.CnnContab.RollbackTrans;
end


Espero que esto te sirva

Saludos