DESARROLLO EN 3 CAPAS

10/11/2005 - 02:58 por rafael | Informe spam
Bueno , perdonen la pregunta reiterada pero no encuentro el post anterior.
Explico mi problema, Trabajo con Visual Basic 6.0 SP 6, y SQL Server 2000
Profesional.
Estoy programado con capas, y ya tengo la capa de acceso a datos y la capa
de entidades
Por ejemplo :
Clase entidadPersona
Private Nombre as string
Private Apellido as string
.
.
Propiedades para cada una de las variables publicas
Let Nombre
Get Nombre.
...

Clase EntidadHabilidad
Private Habilidad as string
Propiedades para cada una de las variables publicas
Let Nombre
Get Nombre.
...

clase datosPersonas
Public function Grabar(nuevaPersona as entidadPersona) as boolean
Dim Coneccion As ADODB.Connection
Dim Comando As ADODB.Command
Codigo para grabar datos de persona en la tabla persona
Comando.Execute
Comando.ActiveConnection = Nothing
Coneccion.Close
Set Comando = Nothing
Set Coneccion = Nothing
Grabar = True
end function


Clase DatosHabilidad
Public function Grabar(nuevaHabilidad as entidadHabilidad) as boolean
Dim Coneccion As ADODB.Connection
Dim Comando As ADODB.Command
Codigo para grabar datos de habilidad
Comando.Execute
Comando.ActiveConnection = Nothing
Coneccion.Close
Set Comando = Nothing
Set Coneccion = Nothing
Grabar = True
end function

Bueno hasta ahi no hay problema
Ahora estaba pensando armar la capa de logica de negocios asi
clase LogicaPersona(nuevaPersona as entidadPersona, nuevaHabilidad as
entidadHabilidad)
Dim Coneccion As ADODB.Connection
Dim Comando As ADODB.Command
dim dPersona as datosPersona
dim dHabilidad as datosHabilidad
codigo para establecer la conexion
Coneccion.BeginTrans
if dPErsona.Grabar(nuevaPersona) then
if dHabilidad.Grabar(nuevaHabilidad) then
Coneccion.ComitTrans
else
Coneccion.RollbackTrans
else
Coneccion.RollbackTrans
end if

Bueno lo hice y funciona. Graba tanto los datos de persona y habilidad.
Pero el problema que no aplica la transaccion. es decir se puede grabar
persona y no necesariamente la habilidad
todo como un bloque
Lo he tenido que implementar ambas clases en un solo procedimiento.
No se porque no funcione el begintrans.
Lo unico que se me puede ocurrir es que en cada funcion de las clases de
acceso a datos
uso una conexion propia.
Agradezo de antemano cualquier ayuda

Preguntas similare

Leer las respuestas

#6 Alfredo Novoa
11/11/2005 - 19:08 | Informe spam
On Thu, 10 Nov 2005 22:51:21 -0500, "rafael"
wrote:

Alfredo Novoa:
Tu comentario me parecio algo inquientante porque no lo comprendi bien,
porque hasta el momento
siempre he leido sobre capas o componentes de aplicacion , pero no
mencionadas como sistema.
Espero me puedas proporcionar algun link .



Lo que es preocupante es el estado de la industria del software de
gestión, casi todo lo que se publica está mal.

Mucha gente confunde aplicaciones y sistemas de información.

Un sistema es multicapa cuando está formado por varias aplicaciones.

Un sistema de información que consiste en una única aplicación que usa
un procesador de archivos como MS Jet es un sistema de una capa o
sistema monolítico y da igual las tonterías que se puedan leer por
Internet.

Un sistema de información que consiste en una serie de aplicaciones
que se conectan directamente a un SGBD es un sistema de dos capas. Y
en el caso en que la lógica de negocio estuviese implementada en las
aplicaciones sería un sistema de información terriblemente mal
diseñado.

Un sistema de información en el que las aplicaciones se conectan a un
servidor intermedio "middleware" o servidor de aplicaciones y este a
su vez se conecta con uno o varios SGBD sería un sistema de tres
capas.

Aquí tienes algunos enlaces de los más decente que me he encontrado
por la red (olvídate de encontrar algo decente en español).

http://www.sei.cmu.edu/str/descript..._body.html
http://www.sei.cmu.edu/str/descript...tml#512860
http://www.sei.cmu.edu/str/descript...etier.html
http://www.sei.cmu.edu/str/descriptions/momt.html

Internet es una fuente muy peligrosa para conseguir información sobre
diseño de sistemas de gestión, por que por cada artículo que está bien
hay 100 que dicen disparates.


Saludos
Alfredo
Respuesta Responder a este mensaje
#7 Alfredo Novoa
15/11/2005 - 10:15 | Informe spam
On Mon, 14 Nov 2005 23:36:20 -0700, "Antonio Ortiz"
wrote:

cuestion de enfoques cero yo, y del ambito del que se hable, pues incluso hay diseños de software 'multicapa' o diseños logicos. O esquemas/jerarquias de objetos llamados 'capas'.



Ya, la informática es un caos, cada uno le llama cualquier cosa a
cualquier cosa.

Lo importante es que quede claro que es un disparate implementar las
reglas de negocio en cada una de las aplicaciones en lugar de en el
SGBD.

Saludos
Alfredo
Respuesta Responder a este mensaje
#8 Gustavo Fernández
15/11/2005 - 11:34 | Informe spam
Probablemente sea yo quien diga un disparate ahora, pero...
Y si quieres distintas aplicaciones con distintas reglas de negocio y el
mismo SGBD?
Lo mismo no tengo el mismo concepto de SGBD, como has dicho tu:

Ya, la informática es un caos, cada uno le llama cualquier cosa a
cualquier cosa.
Respuesta Responder a este mensaje
#9 Alfredo Novoa
15/11/2005 - 12:11 | Informe spam
On Tue, 15 Nov 2005 11:34:37 +0100, "Gustavo Fernández"
wrote:

Probablemente sea yo quien diga un disparate ahora, pero...
Y si quieres distintas aplicaciones con distintas reglas de negocio y el
mismo SGBD?



Si las reglas de negocio no entran en conflicto las unas con las otras
no hay ningún problema, se implementan todas en el SGBD y ya está.

Si hay reglas que entran en conflicto y no hay manera de resolver el
conflicto pues habría que usar bases de datos separadas, pero esto no
debería pasar dentro de una misma empresa. Esto sería una señal de que
las reglas de negocio están mal expresadas.

Lo mismo no tengo el mismo concepto de SGBD, como has dicho tu:



Lo que también puede ser distinto es el concepto de regla de negocio.
Por ejemplo algo como: "las cuentas con saldo negativo se deben de ver
en color rojo" no es en ningún caso una regla de negocio.

Las reglas de negocio se pueden clasificar en 3 tipos:

- Reglas de integridad de los datos: los datos tienen que ser siempre
consistentes.
- Reglas de inferencia: obtener nuevos datos a partir de los datos que
ya tenemos.
- Reglas de estímulo respuesta: procesos que hay que disparar cuando
se producen una serie de condiciones. Por ejemplo enviar un email
cuando se recibe un pedido.


Saludos
Respuesta Responder a este mensaje
#10 rafael
21/11/2005 - 18:48 | Informe spam
Muchas gracias alfredo por tu aporte, es gratificante ver, el grado de
colaboración de los grupos y el nivel de sus miembros, si entendi bien tu
explicación, no hay que confundir aplicación con sistema de información.
correcto?
Un sistema de información puede tener varias aplicaciones, asi como varios
niveles
A su vez una aplicación puede tener varios componentes, que reciben cierta
clasificacion similar a la de los sistemas de informacion.

Porque estuve leyendo la guia Arquitectura de aplicaciones
de .net : Diseno de aplicaciones y servicio.
http://www.microsoft.com/spanish/ms...stapp.asp, y
menciona capa de accesso a datos dentro de una aplicacion, pero usa el
termino algo ambiguo , porque esa capa de acceso a datos se transforma en un
componente.

Ahora si entendi bien, (eso espero :) ) , si creo una sistema de
informacion, con un .exe que contenga los formularios y reglas de formato,
validacion simple, una dll para accesar a los datos,el sistema de
informacion seria cliente servidor de 2 capas, y si le agrego una dll para
reglas de negocio seria de 3 capas, independientemente de donde esten las
dlls o es que para que cumplan con la definicion estas deben estar en una
maquina distinta a la que tiene el programa (.exe).
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida