PDA

Ver la versión completa : Programacion en N-capas



McLik
07-07-2008, 21:59
Las capas de un proyecto se dan de acuerdo a lo que el grupo de trabajo requiera, la definicion dice que se concibe por la necesidad de agrupar operacoiones de misma naturaleza( para disminuir el acoplamiento y aumentar la cohesion interna), esto quiere decir que encuentra su razon de ser por el hecho de que en un proyecto las operaciones a realizar se pueden separar en grupos para su mejor manipulacion( en muchos casos se presta a confucion decir capas y niveles, no es lo mismo, capas: es la forma en que esta dividida nuestra aplicacion de forma logica y niveles : es la distribucion fisica que puede ser en varios servidores ).
Las capas por lo general son:
- Capa de presentación
- Capa de negocio
- Capa de datos

Capa de presentación:
esta capa es la que se va a relacionar con el usuario ( en unas palabra la que presenta el sistema al usuario), por lo tanto tiene que ser facil de entender ( nos tiene que ir indicando que es lo que hay que hacer ), atencion !!! en esta capa hay que controlar todos los errores como ultima instancia, desde el mas especifico al mas general ( en c# Exception es el mas general), esta capa puede ser realizada en conjunto con un diseñador. El usuario tiene que creer que puede hacer de todo ( en realidad no es asi ya que nosotros tenemos todo controlado )

Capa de negocio:
esta es la capa donde se realizan todas la validaciones que el sistema requiera y hace de intermediaria entre las capas de presentacion y la capa de datos, las validaciones simples de string.Empty() y otras parecidas se realizan en la interfaz, un ej de una validacion propia del sistema es " los usuarios no pueden tener un dni repetido con otro cliente y tampoco con algun vendedor " . Muchos diran porque hacerlo aparte si se puede hacer todo en el mismo lugar, esto no solo se hace para que el trabajo en equipo sea mas facil y rentable, sino tambien para que la aplicacion no dependa de la interfaz ( el dia de mañana queremos que nuestro proyecto sea ejecutado desde un Ipod, solo modificando y adaptando la capa de interfaz de usuario saldría andando muy bien).

Capa de datos:
aquí se da el acceso a los datos de una BD , en muchos casos es necesario hacer una interfaz ( no es lo mismo que interfaz de usuario, en realidad nada que ver ) para tratar a cualquier manejador de datos de = forma y que nuestra aplicacion tampoco dependa de una BD en particular. Se colocan las conexiones, storeprocedure / consultas / vistas , etc

Para finalizar con esta explicacion muy muy corta de capas , quiero comentarles que el acceso entre ellas es:
Capa de presentación<--->Capa de negocio<---> IDatos <--->Capa de datos.
en este mismo post colocare un ej (cuando lo termine, espero que sea rapido :D) muy util de capas donde podran ver claramente como es esta modalidad ( todo en ASP.NET(c#) porque es el lenguaje en el que estoy mas comodo ), podran decir " y porque no espero a tener el ej", porque quiero que tengan una simple vicion de lo que es dividir una aplicacion en capas y lo util que puede ser.

Saludos

PD: el tema da para horas de charla y muchas hojas escritas.

j8k6f4v9j
07-07-2008, 22:18
Cierto, de hecho hay ya varias organizaciones de estandarización que han gastado todas esas horas :p

Lo que pasa es que luego llegan ciertas tecnologías propietarias (léase ASP.NET o C#) y se arrogan el diseño de las estructuras cambiando algunos nombres.

http://en.wikipedia.org/wiki/OSI_model

Salu2


http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

gondar_f
08-07-2008, 11:54
j8 creo que te has colado, el link es el modelo de capas de red OSI no tiene que ver, directamente, nada con respecto al diseño de una aplicación estandar... aunque es cierto que indirectamente si se da una relación...

Ciertamente este esquema es principalmente útil para aplicación web, para pequeñas aplicaciones de escritorio no es práctico separar lógica de negocio de presentación (si estos de datos), pero en una aplicación web si...

Por ejemplo en .NET: de la capa de datos se puede encargar SQLServer que será la encargada de trabajar con los datos a bajo nivel, de la lógica de negocio para eso está ADO.NET con un poco código adicional y el resto presentación... aunque en la práctica donde se diferencia completamente este esquema es en Java.

Me quedo esperando tu ejemplo

Un Saludo

j8k6f4v9j
08-07-2008, 16:31
heh, no me podéis negar que son espectacularmente parecidas :rolleyes:

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

gondar_f
08-07-2008, 17:32
heh, no me podéis negar que son espectacularmente parecidas
:D:D:D Fuera de coñas realmente incluso hay relación... y la idea de este diseño parte de la misma permisa

Un Saludo

j8k6f4v9j
08-07-2008, 19:43
Es que en MłCROSOFT son tan buenos que han decidido no reinventar la rueda :D

No, en serio también, el OSI no deja de ser "el modelo". Y el lenguaje en cierto modo son comunicaciones. De algún modo hay que organizar todos esos objetos. Pocos se ciernen estrictamente al modelo, pero es que incluso sin usar tantas capas ha demostrado ser eficiente, es lógico entonces que se adopte para otros fines distintos que las arquitecturas de comunicación.

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

gondar_f
08-07-2008, 22:23
Realmente el uso moderno por capas tal como McLik lo describio partio de Java a finales de los 90, aunque ya se uso de forma similar desde hace mucho... y NET como implementación moderla similar a Java que es pues también lo tuvo en cuenta.

Y ciertamente la idea es buena, por lo menos para aplicaciones de cierta embergadura.Y como bien dices es un modelo, los modelos no deben ser tomados al pie de la letra, sino que deben ser adaptados a las circunstancias particulares, aunque esto no se puede decir muy alto, ya que muchos programadores (que de programadores tienen poco) solo saben hacer aplicaciones siguiendo guiones ya echos... Por ejemplo las aplicaciones que yo suelo desarrollar en la mayoría de los casos, pues sería complicarlo todo separar estrictamente lógica de negocio y presentación, pero desde luego la cosa cambia cuando me encargan que desarrolle alguna de más envergadura, porque ahí si que compensa.

Un Saludo

McLik
11-07-2008, 04:25
Hola a todos, bueno termine casi un 85% - 90% del proyecto ( este, mas o menos, sera mi final de programacion en la facultad, espero que les sea de utilidad ya que tiene algunas cosas lindas de aprender, no solo un buen ejemplo de capas, sino tambien para todo aquel que recien entra en el mundo de asp.net(c#)).
Paso a comentarles un poco:
En un proyecto chico para administrar partidas de poker. Los ABMs se hacen con el control ObjectDataSource para respetar la estructura en capas ( esto lo explico, porque los controles mas especificos, por lo general, trabajan mejor y con un rendimiento mucho mayor que los mas genericos, pero no podria hacer uso de sqldatasource ya que no estaria implementando programacion en capas, o si pero a medias :)).
Podran ver que las capas respetan la comunicacion, mas adelante hare un proyecto donde implemente web service ( con esto estaria completando una correcta practica de programacion en capas ).
En fin espero que les guste el proyecto y les sea de utilidad, traté de utilizar gran cantidad de cosas ( a tiene tambien un poco de ajax, lo basico ).

Bueno y por fin el Link: http://rapidshare.com/files/128776267/Trabajo_Final_Ajax_v1.rar.html

Saludos

PD: el proyecto esta en VS 2005 y tiene el backup de la bd que esta hecha en SQL server 2005. Espero que no baje tan rapido este post, gracias al debate de gondar_f y j8k6f4v9j, eso no paso :rolleyes:.

gondar_f
12-07-2008, 11:31
Muchas gracias McLik, le voy a echar un ojo...

Y tienes mucha razón, los componentes específicos dan un rendimiento muy superior, pero entonces las dependencias entre capas es superior... Eso en java no es un problema porque usualmente la conexión es a través de JDBC y ahí ya hay aislamiento...

Lo que si, cuando termines podías hacer un artículo del tema, no tiene porque ser muy amplio, y yo me comprometo a hablar con clarinetista para que lo fije. Es algo que pregunta mucha gente pero que no suele estar bien explicado en los tutoriales que circulan por inet.

Un Saludo

.Yok3R.
21-07-2008, 15:41
Mira lo que son las cosas, tu utilizas el módelo de programación en capas, para un proyecto en ASP, en estos momentos yo lo estoy utilizando en un proyecto basado en Java, a eso le llamo estandar, como mencionaron las capas de módelo OSI (aunque claro éste para las comunicaciones), pero eso sí, no desviandose de la esencia que es la uniformidad de lo que se hace, en éste caso, sin importar en donde se base la aplicación que estamos desarrollando, utilizamos la misma lógica de programación o mejor dicho el mismo patrón de diseño.

Suerte y éxito en tu proyecto
Saludos

¡Abur!

gondar_f
21-07-2008, 21:36
Lo cierto es que aunque la idea es más antigua, ese modelo de capas se empezo a usar en Java y como el modelo va muy bien pues... al final está triunfando.

Un Saludo

McLik
23-07-2008, 03:58
Espero que el ej. haya sido de su agrado. Con respecto a la implementacion de capas en java, la idea es la misma, ya que no es un modelo propio de Microsoft por ahi, no se, capas lo difundio( pero de ellos no es ). Si nos detenemos a ver solo a nuestro alrededor, veremos que esta necesidad no es solo de la programacion, ni tampoco de la informatica ( si hilamos fino ), solo hay que saber que se puede implementar y tener la claridad para hacerlo.

Saludos

Audio35
19-10-2008, 20:55
Hola a todos hace algunos dias que estoy dando vueltas por el foro y hoy me registre. Disculpen por revivir un post medio viejo, pero me parece que este post tendria que estar como fijo (no soy quien para decir eso pero por sentido comun lo digo). Estaba viendo que hay posta como Coleccion de ejercicios (sin ningun ejercicio) que estan fijos y no algo como esto, no se si alguien vio el codigo del proyecto que subio McLik pero esta muy bueno el proyecto y utiliza muchas cosas lindas de saber. Desde ya McLik muchas gracias, y espero que no te desmotives y sigas subiendo cosas como esta que le haces muy bien a los que quieren aprender .net.

Un saludos a todos.

gondar_f
21-10-2008, 10:23
Tranquilo y bienvenido Audio35, realmente solo tiene un par de meses con lo cual no se puede calificar de verdaderamente antiguo.

Además tienes razón, a ver si j8 o clari ven el post y lo ponen fijo, yo no tengo suficientes privilegios.

Un Saludo

clarinetista
21-10-2008, 11:43
Ya esta, vosotros pedid y se os concedera :D