Foros del Web » Programación » Programación General »

Modelo 3 Capas y Arquitectura n Capas???

Estas en el tema de Modelo 3 Capas y Arquitectura n Capas??? en el foro de Programación General en Foros del Web. He estado investigando en internet sobre el modelo 3 capas para ampliar un poco mis conocimientos al respecto y me consegui con arquitectura n capas... ...
  #1 (permalink)  
Antiguo 26/03/2003, 20:00
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 11 años, 4 meses
Puntos: 0
Modelo 3 Capas y Arquitectura n Capas???

He estado investigando en internet sobre el modelo 3 capas para ampliar un poco mis conocimientos al respecto y me consegui con arquitectura n capas... y dije... sera lo mismo??? y bueno despues de leer me di cuenta que si.... Modelo de 3 Capas es el termino que se le da a un sistema cuando se desarrolla siguiendo un modelo de 3 capas, Capa de Presentacion, Logica de Negocio, Base de Datos, y bueno, me pregunte entonces que era lo de Arquitectura n Capas y bueno la respuesta esta aquí....

Cita:
Otro de los términos de moda recientemente es el de las "arquitecturas de n-capas", siendo el caso más frecuente cuando n=3. Cuando se habla de arquitectura de n capas, también aparecen involucrados elementos ajenos al desarrollo en sí del sistema, como los detalles relacionados con la distribución de diferentes componentes de la aplicación en diferentes servidores, cada uno de ellos especializado en una función particular: entregar los datos, validar las normas del negocio y asegurarse de que las transacciones se procesen de la manera debida, generar los reportes, o los formularios de entrada, etcétera.

Pero la esencia de los modelos de desarrollo por capas es el concepto de "separación". Mantener cada componente tan separado del contexto global como sea posible. Y cada capa es, simplemente, la agrupación de todos los componentes que tienen una funcionalidad común.
El motivo entonces de este post es ampliar estos conceptos... los cuales son muy importante para el desarrollo de cualquier tipo de aplicacion bien sea un software o una aplicacion web...

Como comente en otro post, dije que estaba abierto a conversar y seguir investigando sobre este tema.. y por supuesto a compartir informacion asi que si consiguen informacion al respecto no duden postearla en este mensaje....

Antes de finalizar este post les dejo una gráfica que expresa como es el modelo de 3 capas....



Espero que les sea de interés este post...

Cuento con su apoyo y espero sus respuestas...

Saludos..
  #2 (permalink)  
Antiguo 26/03/2003, 21:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.415
Antigüedad: 12 años, 6 meses
Puntos: 119
mm .. Programo en PHP .. uso Base de datos .. separo la lógica de la presentación de los datos hacia los clientes (sean navegadores u otros médios) y a su vez (PHP bajo un servidor HTTP ya que es interpretado por este) lo uso como "interface" para mi Base de datos (para hacer las consultas pertinentes a la BD) y presentación de estos datos hacia los clientes (navegadores principalmente) ....

¿Esto sería algun modelo de n capas?

Es decir, en un ambiente de desarrollo "web" clásico a nivel "medio" usando: Un lenguaje del lado del servidor (PHP, ASP, Perl e incluso JSP (no sé si aplicaría JSP) ...), un motor de Base de datos (cualquiera) y unos clientes donde interactuar (navegadores principalmente)... Este tipo de sistemas .. se podría considerar como "trabajo en n capas"? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/03/2003, 23:11
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 11 años, 4 meses
Puntos: 0
Basicamente si..

Bueno si en tu caso estariamos hablando de un modelo de 3 capas, aunque no se de que manera mantienes por ejemplo las tablas de la base de datos... porque un ejemplo que se me viene a la mente sobre un modelo de 3 capas es: tienes tu interfaz web de usuario y usas asp, php o asp para presentar los datos que estan almacenados en una base de datos y mediante una interfaz de mantenimiento actualizas la base de datos... Identificando las capas tendriamos... La interfaz web de usuario es la capa de presentacion, la interfaz de mantenimiento en la que por ejemplo, por medio de formularios y scripts actualizas y mantienes la base de datos seria tu capa logica de negocio y bueno tu base de datos por ejemplo mysql, sql server o access seria tu capa de datos, de todos modos como expuse en el post anterior seria bueno seguir investigando para lograr diferenciar y enfocar bien el modelo de 3 capas.....

Cuando hablamos de Arquitectura n Capas es porque posee otras capas adicionales a las 3 Capas principales... por eso se dice que es n capas pero en si el modelo principal es Modelo 3 Capas...

Espero que este en lo correcto... los invito a que sigan investigando y aporten sus ideas y conocimientos...

Saludos....
  #4 (permalink)  
Antiguo 27/03/2003, 09:54
Avatar de chesco1980  
Fecha de Ingreso: enero-2003
Mensajes: 83
Antigüedad: 11 años, 5 meses
Puntos: 1
N-Capas

¿utilizo una programacion de n-capas?
Hola me gustaria saber si utilizo la programacion n-capas


Mi forma de programar es la siguiente, tengo una parte administrativa de la web, otra de presentacion de datos, otra de manejo de los administradores web (privilegios distintos a usuarios administradores, como un super admin), otra de cara al usuario con posibilidad de coger nivel con sus acciones, ejemplo si mete noticias, enlaces se le asigna niveles automaticamente, y todo esto esta por modulo proyecto realizado por 3 personas encargadas de todo.
  #5 (permalink)  
Antiguo 04/04/2003, 22:38
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 12 años, 8 meses
Puntos: 66
Bueno... me parece que hay un poco de confusión aquí en cuánto a lo que un modelo de 3 capas representa.
Este tipo de modelos, no tiene nada que ver con la separacion de unas pantallas para usuarios, otras para administradores, etc, sino que va mucho más profundo en la metodología de desarrollo que utilicen en su programación.

Esta metodología, lo que tiende a lograr, son sistemas separados en capas funcionales independientes, que trabajando en conjunto logran los objetivos Generales del sistema. En el caso de las 3 capas, estos sistemas son la capa de Presentacion, la de Lógica del Sistema y la de Datos.

Pero a no confundirse, esto no es "una interfase, mas el codigo PHP que la ejecuta y un mySQL". No. Va mucho más allá. De lo que hablamos aqui es de una capa preparada para generar contenido final a un usuario (en el formato que sea, no solo HTML), de una capa capaz de tomar parámetros y datos y realizar operaciones sobre los mismos y una capa capaz de entregar datos.

Hay algunas "leyes" ( que no lo son tanto, pero que sirve tenerlas en cuenta ) a la hora de desarrollar software de N capas :
  • Cada capa deberia poder residir tranquilamente en un ambiente distinto al de las demás capas, haciendo al sistema completamente escalable.
  • Cada capa debe intercambiar información solamente con las capas que se encuentras abajo y encima de la misma.
  • Cada una de las capas debe poder ser intercambiable, de manera que las mismas deben implementar una API bien definida.
  • Las capas no deberian hacer más que lo que la API propia y la de las capas relacionadas permite.

Bueno, esto es un poco en comentario a lo que algunos creian que eran las 3 capas. Si quieren leer una mini introduccion a las N capas, pueden hacerlo leyendo un excelente tutorial que encuentran en : http://www.phppatterns.com/index.php...leview/18/1/1/

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #6 (permalink)  
Antiguo 05/04/2003, 20:12
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 11 años, 4 meses
Puntos: 0
Muy Interesante WebStudio bueno con tu comentario ampliastes mas el concepto de modelo de 3 capas y de esta manera poder entenderlo mejor...

Si consigues mas información al respecto pero no para un lenguaje en especifico y si se puede en español para el mayor entendimiento de esta comunidad seria excelente..

Gracias nuevamente por tu comentario...

Los invito a seguir posteando...

Saludos...
  #7 (permalink)  
Antiguo 31/08/2004, 11:53
 
Fecha de Ingreso: febrero-2004
Ubicación: Los naranjos 328
Mensajes: 51
Antigüedad: 10 años, 5 meses
Puntos: 0
Ok vamos a ver

Segun lo que puedo entender es que el manejodo e 3 Capas
1.- la capa de Presentacion
2.- la de Lógica del Sistema
3.- la capa de Datos.

donde (1) llegaria a ser la capa vista hacia el usuarios llamemoslo asi plantillas o Templates
donde (2), llegaria a ser el modo de programacion es decir tus POO
donde(3), seria la abstracion de datos hacia cualquier Base de Datos.

ahora cada capa es mas o menos un grupo o conjunto de funciones similares.
Ahora seria necesario mantener la BD en un servidor aparte de la capa de Negocios y de Presentacion .
Respondanme esa incognita o tambien me estoy equivocando
__________________
===================
Juan Carlos Medina Ruiz
<?PHP?>
==================


Un dia sin aprender algo es un dia perdido
:aplauso:
  #8 (permalink)  
Antiguo 03/09/2004, 08:48
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 419
Antigüedad: 10 años, 8 meses
Puntos: 0
esto de las 3 capas lo entiendo así:

la capa de bases de datos, sería como una página o librería que se encargue de hacer las consultas a la DB (insertar, modificar, eliminar, ,consultar), pero la idea es que esta página o librería sea accesible desde cualquier otra página o librería, por ejemplo si tienes una aplicación con 2 pantallas (una que consulte stock y otra empleados), la idea es que ambas puedan accesar a la DB a travéz de la librería que ya tenemos (no tener que hacer toda la consulta a la DB c/vez que necesitemos sino resumirlo a un
insertar(tabla, campo) o
borrar(tabla, campo) etc...) sería más facil programarde esta forma, nos ahorramos un montón de código y el sistema se vuelve más eficiete.
-la capa de programación sería donde usamos estas instrucciones que creamos en la capa de DB.
-y la del usuario, pues son los campos y botones que él ve y que son lo único que entiende, ya que no le importa(ni debe importarle) como trabaja el sistema en sí.

no se si mi concepto es claro o si es correcto, pero es lo que entiendo de todo esto en palabras sencillas...
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #9 (permalink)  
Antiguo 03/09/2004, 11:52
 
Fecha de Ingreso: agosto-2003
Ubicación: Guatemala
Mensajes: 94
Antigüedad: 10 años, 11 meses
Puntos: 0
Es tambien lo que logro captar Vinicio:

1. La capa de datos, es una abstraccion para el uso de los datos, por medio de una libreria como mencionaste anteriormente donde se utilicen funciones como insertar(tabla,datos), consulta_registro(tabla,query) o consulta_total(consultasql), independientemente del sistema de base de datos (servidores, archivos de texto, archivos xml, etc)
2. La capa de negocios o la capa de aplicacion, es el puente de comunicacion entre la capa de datos y la capa de presentacion, donde se pueden utilizar funciones como mostrar_clientes, mostrar_estadocuenta, etc., independientemente del lenguaje de programacion a utilizar.
3. La capa de presentacion, es la interfaz de usuario con botones, dropdown, etc., tambien independientemente del sistema a utilizar (html, windows form, etc)

Que alguien me corrija si me equivoco.
__________________
Luis Pirir
Programador Web
Móvil: (502) 50623292
  #10 (permalink)  
Antiguo 18/09/2004, 11:48
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 419
Antigüedad: 10 años, 8 meses
Puntos: 0
Leyendo bien el primer comentario de este post me llega una idea similar, pero no igual a la que tenía...no se si está bien, esperemos que alguien que sepa de esto nos ayude...

3-Capa de Usuario:

imaginémos el código, este sólo diría cosas como:
(imaginemos que hay una o varias librerías que ya creamos)

insertar(valor, parametros) //insertar algun valor en alguna tabla de la DB, x ej.
validar(numero, parámetros); //accesa una librería para validar, en este caso números
validar(texto, parámetros);//accesa una librería para validar, en este caso texto

---------------------se reduce mucho el código ¿cierto?

2-La capa de lógica de negocios estaría compuesta por esas librerías que acabamos de usar, x ej:

Librería validar(función, parámetro)
{
función texto()
{
validación del texto
}

fución numero()
{
validación del número
}

}

librería insertar(valor, tabla, tipo_valor)
{
validar(tipo_valor, valor) //llamamos la otra librería
si la validación es correcta
DB(insertar, valor, tabla) //este sería el otro nivel
}

-----------------la ventaja de las librerías es que son reusables y es + ordenado

1- capa de DB

librería de DB(funcion, valor, tabla)
{
Insertar()
{
procedimiento
}
modificar()

{
procedimiento
}
Eliminar

{
procedimiento
}

}

alguien que me corrijo por favor...
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #11 (permalink)  
Antiguo 12/10/2004, 21:14
 
Fecha de Ingreso: mayo-2002
Mensajes: 204
Antigüedad: 12 años, 2 meses
Puntos: 8
En realidad creo que la capa de de presentación no debería conocer la existencia de una tabla.

Por ej: Sistema de Sueldos

Pantalla de ABM de Empleados

Tiene un objeto empleado, llama al método cagar, el cual llena el objeto con los datos, y los muestra en el formulario. Cuando el Usuario pone en Aceptar, el formulario llama al metodo guardar del objeto .

Capa de Negocios:

El objeto empleado tiene conocimiento si se debe insertarse o actualizarse con respecto a la base de datos, pero sigue sin conocer la ubicación de la base de datos, el string de conexion o el nombre de la tabla. Cuando se llama a guardar, el objeto llama según corresponda, al metodo insertar o actualizar de la Capa de Acceso a Datos

Capa de Acceso a Datos:

Esta capa recibe el pedido de actualizarse o insertarse del objeto empleado, y a partir de ahí se conecta a la base de datos y hace el insert o update.

En Conclusión:

Si cambiamos la Base de Datos por otra, se modifica la Capa de acceso a datos, y ninguna de las otras 2.

Si ahora validamos que el empleado debe tener una condición en particular, modificamos solo la Capa de Negocios, mientras la de acceso a datos ni se entera.

Si utilizamos como salida de nuestro sistema formularios o páginas web, la capa de negocio no debe darse por enterada.

Esto nunca se logra al 100%, ya que cuando cambiamos una validación en la Capa de Negocios, la Capa de presentación deberá responder a un error que antes no era esperado, pero el cambio es mínimo.

Además, también depende de la manera en que se comunican la capas entre sí. Esto puede ser a traves de XML, o si trabajamos en VB y ASP, a traves de ADODB, por ej. y a veces estas tecnologías tienen limitaciones.

Espero haber clarificado un poco y no haber oscurecido :)
__________________
No se puede poner nada en las firmas
  #12 (permalink)  
Antiguo 20/10/2004, 11:37
 
Fecha de Ingreso: septiembre-2003
Mensajes: 51
Antigüedad: 10 años, 10 meses
Puntos: 0
Bueno que tal. Mi aporte:
estuve averiguando esto de las tres capas y DEDUJE lo siguiente:
1 capa de presentacion: La que ven los usuarios
2 capa de negocios: los ocx, dll, etc.
3 capa de datos: las bases de datos y tablas que creas.

y estoy de acuerdo con nico y eaguilar que deben ser lo mas independiente posible requiere planificarlo y pensarlo muy bien.
ESPERO QUE SEA DE AYUDA.
  #13 (permalink)  
Antiguo 21/10/2004, 22:10
 
Fecha de Ingreso: mayo-2002
Mensajes: 204
Antigüedad: 12 años, 2 meses
Puntos: 8
Indagando un poco más en el tema, descubrí que puede hacer una capa más entre la de negocios y la de presentación:

WorkFlow

¿Qué es esto?

Vendría a ser la que implementa que acción continúa después de que cada acción termina. Por ejemplo, en VB, estamos en un ABM, que requiere eligir un valor de una serie. Podríamos poner esta seríe dentro de un ComboBox, pero si esta seríe crece y crece, llega un momento que se hace poco usable el combo. Entonces hacemos un formulario que oficie de buscador. Entonces, desde el Formulario de ABM ponermos un botón buscar, que llama al formulario. ¿Pero que pasa si luego, necesitamos que la llamada a ese formulario de busqueda cambie según si estamos haciendo un alta o una modificación?. El codigo de ese botón empieza a crecer y crecer, llenandose de If anidados, según la situación. ¿Y que pasa si luego, ese botón tenemos que ponerlo en muchos ABM distintos?. Nos encontramos con un montón de código repetido, que a la hora de cambiarlo hay que buscar por todo el proyecto.

Como solución a esto podemos implementar un controlador, que se encarge de ir llevando la línea de ejecución según corresponda. Para implementar esto, en vez del que el botón llame a un formulario particular, llamaría a una función de una dll, por ej: WorkFlow.BuscarAlgo. Esta Clase vendría llevando registro de lo que el usuario está haciendo, y mostraría el formulario correspondiente. De esta manera, la capa de presentación se abstrae aún más de las reglas de negocio.

Esto, en lenguajes web, ya está recontra pensado e implementado. Es el famoso pattern MVC, que tiene Modelos (las clásicas clases que representan a los objectos del sistema), Vistas (las páginas web en sí) y un Controlador, que se encarga justamente del ordén de secuencia. a traves de acciones.

Es decir, supongamos un sistema de RRHH por web. Tenemos una acción que es alta de empleado. Esta acción, cuando es lllamada, muestra una Vista con el formulario para ingresar los datos. Cuando uno pulsa en enviar, esta acción toma los datos envíados, instancia la clase empleado, la llena con los datos, llama al método grabar, que inserta un nuevo registro en la base de datos, y luego muestra un mensaje de listo.

¿Se entiende?

Acá les paso un link muy interesante para este tipo de cosas, basado en php:

www.phppatterns.com
__________________
No se puede poner nada en las firmas
  #14 (permalink)  
Antiguo 27/04/2005, 13:18
Avatar de LoganNeoZero  
Fecha de Ingreso: diciembre-2004
Ubicación: Cochabamba
Mensajes: 106
Antigüedad: 9 años, 7 meses
Puntos: 0
porque no le hechan un vistazo a esta pagina http://www.microsoft.com/spanish/msd...ces/art140.asp

aclare algunas dudas al respecto de arq. 3 capas...espero que les sirva, aunque se aplica directamente a VB .NET el concepto de 3 capas esta ahí

Nos vemos
Nivardo
  #15 (permalink)  
Antiguo 03/11/2007, 21:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 1
Antigüedad: 6 años, 8 meses
Puntos: 0
Re: Modelo 3 Capas y Arquitectura n Capas???

No se hagan bolas....! Checken sobre programacion COM esa es la respuesta a las dudas.
  #16 (permalink)  
Antiguo 05/11/2007, 09:51
 
Fecha de Ingreso: febrero-2004
Ubicación: Los naranjos 328
Mensajes: 51
Antigüedad: 10 años, 5 meses
Puntos: 0
Re: Modelo 3 Capas y Arquitectura n Capas???

Pero las COM solo funcionan en Windows que pasa cuando lo lleves a LINUX :S
__________________
===================
Juan Carlos Medina Ruiz
<?PHP?>
==================


Un dia sin aprender algo es un dia perdido
:aplauso:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 09:59.
SEO by vBSEO 3.3.2