Problema con 3 capas...

30/06/2005 - 18:05 por Demian | Informe spam
Hola, tengo una duda en cuanto al modelo de tres capas..

En general no se donde deben escribirse los comando sql de mi aplicacion, no
se si es parte de la capa de datos o bien es parte de la capa logica...

Entiendo que puedo programar procedimientos almacenados para recuperar la
información y despues mediante los proveedores de datos de .net ejecutarlos,
con lo cual obviamente mis sentecnias sql estarian en el lado de la capa de
datos y obtendría una aplicacion mas migrable, sin embargo, todas mis
aplicaciones estarían en un servidor y esto podria afectar el rendimiento del
mismo.

Otra opcion es tener una funcion de datos para cada accion que desee
realizar en el servidor, por ejemplo un metodo InsertarPedido, otro
InsertarFactura, y otro mas llamado InsertarAmortizaciones. Esto estaria
bien, sin embargo alarga el tiempo de desarrollo de aplicaciones.

La opcion que estopy tomando es tener funciones de datos generales, por
ejemplo
InsertarRegistro o bien InsertarRegistros, a las cuales les paso comandos
sql o bien una lista de parametros que la funcion pueda reconocer y con ello
construior un comando que ejecutaria posteriormente. El asunto con esto que
mi applicacion no es tan migrable y apartentemente mezcla un poco la logica
de negocio con la capa de datos, sin embargo me gustaría saber si lo que
estoy haciendo es conveniente y de no serlo cuales son las razones por las
cuales no debo programar de esta forma.

Preguntas similare

Leer las respuestas

#1 Maxi
30/06/2005 - 20:27 | Informe spam
Hola, dejame darte mi opinon:

Se deberia usar de cada herramienta lo mejor o sea: .NEt es un lenguaje
mucho mas potente que tsql con lo cual las cosas complejas a .net. Pero Tsql
es un lenguaje muy apto para muchas cosas, dandote un beneficio q es la
performance.

Si trabajas con Sp's bien desarrollados y delegas las cosas como corresponde
no deberias tener ningun tipo de problema. Los grandes problemas los veo
cuando se pasa al modelo extremista (todo dentro de un sp o todo fuera del
motor). Mi criterio para hacer las cosas es otro, dentro del motor lo que
corresponda y fuera lo que corresponda. La ventaja de tener Sp's dentro del
motor son muchas, pero el mal uso de estos mismos puede ser catastrofico
para el sistema (no hablo solo del soft sino del sistema en general).

Yo te cuento como lo hago, tengo mi capa de acceso a datos q mapea a mis
Sp's. Que tienen estos Sp's? depende, si la logica es simple y se puede
resolver con tql de forma facil estara ahi, si es una logica compleja donde
necesite un lenguaje mas poderoso que tsql entonces estara afuera. Pero me
he cansado de ver aplicaciones que hasta la integridad la tienen fuera de la
base porque la consideran regla de negocio, pues los problemas luego que
suceden por no pensar las cosas puede ser muy grande.

No uses tsql para lo que no fue pensado, usalo para lo que si fue pensado,
mientras puedas aislar a tu aplicacion de la base de datos es mas simple la
cosa, pensa que si usas sp los desarrolladores solo deben conocer el nombre
y los param sin importar lo que haga este por dentro. Ni hablar de como
mejoras la seguridad, la performance es considerablemente superior.

Un abrazo!!!


Salu2
Maxi


"Demian" escribió en el mensaje
news:
Mostrar la cita
#2 Demian
01/07/2005 - 01:22 | Informe spam
Muchas gracias.. megusta mas tu idea que la que me han propuesto en otros
lados.. solo me queda una pregunta por hacer, si decido no utilizar SP's sino
.Net, como deberían actuar mis clases, lo pongo de la siguiente manera:

Imagina que quiero efectuar un cambio en el impuesto que se debe deducir a
un empleado, tengo dos opciones la primera la describo a continuacion:


1 Efectuar el calculo en mi capa logica de negocio algo asi como
Dim NuevoValorDeCalculo as Decimal= Empleado.CalcularImpuesto()
2 Posteriormente llamar a una funcion especifica que actualiza el calculo
del empleado,
CapaDatos.Empleados.ActualizarImpuesto(NumeroDeEmpleado, NuevoValorDeCalculo)

Todo lo anterior dentro de una funcion en la capa logica llamada actualizar
impuesto..


O bien, la segunda opcion sería:
Dim NuevoValorDeCalculo as Decimal= Empleado.CalcularImpuesto()
Dim StrComando as string = "update empleado_empuesto set impuesto = " &
NuevoValorDeCalculo
CapaDatos.Empleados.Actualizar(StrComando)

Obviamente con la segunda opcion no tengo que estar creando funciones
simples de acceso y actualizacion a datos pero no se si esto traiga algunos
inconvenientes.
Creo que me explico bien con este ejemplo, y me ayudarías mucho si me
dijeras cual de las dos opciones utilizarias y porque?? Saludos y muchas
gracias por tu tiempo...


"Maxi" wrote:

Mostrar la cita
#3 Maxi
01/07/2005 - 02:06 | Informe spam
Hola, a mi no me gusta que el codigo sql este fuera del motor ;-)


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Demian" escribió en el mensaje
news:
Mostrar la cita
#4 Demian
01/07/2005 - 16:01 | Informe spam
"Maxi" wrote:

Mostrar la cita
#5 Demian
01/07/2005 - 16:02 | Informe spam
Se me fue vacio el mensaje anterior, soloq ueria agradecerte tu recomendacion
y asi lo voy a hacer... Saludos!

"Maxi" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida