miércoles, diciembre 29, 2004

Separación en capas

Existen lenguajes con los que resulta natural la programación en capas y otros con los cuales parecería que no es necesario. En apariencia, si desarrollamos en C#.NET, debemos separar en capas puesto que el lenguaje nos “obliga a programar bien”. En cambio si hacemos una aplicación en ASP, entonces está “bien” poner “todo junto” ya que es un lenguaje de scripting en donde “todo vale”.

Nada de lo anterior es cierto. Es muy fácil programar en C#.NET sin separar en capas, de hecho, he visto muchos desarrollos en los que casi todo el código estaba concentrado en el evento Page_Load. También se puede programar en ASP separando el código en capas.

La separación en capas es, en principio, algo teórico, formal. Se diseña en capas. Podemos desarrollar una aplicación en C# con capa de presentación, de negocios y de acceso a datos en una sola DLL y, aún así, las capas seguirán existiendo. También se puede separar en capas una aplicación íntegramente desarrollada en ASP.

Son muchos los beneficios que obtenemos con esta práctica y, de entre ellos, podemos citar:
  • Clara distribución de las responsabilidades.
  • Nos permite tener múltiples presentaciones para una misma aplicación (ASPX, WebService, Win32)
  • Podemos cambiar de repositorio de datos sin impacto en el resto de la aplicación.
  • Es más fácil trabajar en equipo con otros desarrolladores y hasta armar equipos de desarrolladores para cada capa.
  • El código se vuelve mucho más claro y fácil de mantener.
En los próximos artículos vamos a hablar específicamente de cada capa. También vamos a ir mostrando cómo se puede implementar en ASP tradicional.Esto lo haremos por dos razones fundamentales. En primer lugar, no existen muchos ejemplos de cómo separar en capas con ASP tradicional en Internet. Además intento mostrar lo importante que es diseñar en capas aún cuando la implementación no separe estrictamente el código en DLLs.

8 comentarios:

Anónimo dijo...

Hay mucho comentado sobre el desarrollo en capas, pero hasta ahora no entiendo la capa de logica de negocios, que va ahi, ejemplos?

Anónimo dijo...

La capa de negocios es donde de verdad "se hace lo que hace la aplicación". Imagina una aplicación web en la que el cliente pida todos los números primos menores que X. ¿Dónde hace los cálculos esa aplicación? No en la capa de presentación, y mucho menos en la de acceso a datos. Debe hacerse en la de lógica de negocios. También es cierto que en aplicaciones simples esta capa puede ser algo supérflua.

Anónimo dijo...

Hola estoy interesado en aprender hacer la separación por capas en ASP.

Como has dicho es complicado encontrar referencias concretas en la web.

¿Podrías informar de enlaces a ejemplos o explicaciones? o ¿podrías publicarlos tu mismo?

Muchas gracias por tu trabajo.

Anónimo dijo...

En ASP el código se debe poner en DLLs que corren como componentes en IIS. El código del negocio es independiente de la presentación. Tiene que funcionar así sea invocado desde un formulario de visual basic en una aplicación de escritorio, o desde una página ASP, o desde la cónsola de DOS, etc. En otras palabras, si puedes ejecutar tu código para probarlo desde fuera de tu aplicación (fuera de las páginas), estás programando en capas. La página ASP lo que haría es llamar a los métodos y funciones de los componentes para "pintar" el HTML pero sin acceder a base de datos ni hacer cálculos, etc. Los cálculos, la lógica del negocio, el acceso a datos no pertenece al JSP sino a los componentes (Dlls)

MejorEsHablar dijo...

Estoy intentando pasar un pequeño desarrollo que hice a un desarrollo en capas. La verdad es que no logro hacerlo funcionar. Probé usar tres clases en tres proyectos diferentes. utilizar componentes COM+ y Componentes .NET. No tuve éxito. ¿Podrás pasarme o publicar un ejemplo sencillo donde se implementen las tres capas?
Lo de sencillo es porque solo necesito un ejmplo que funcione, para basandome en él.

BITTENCOURT dijo...

Estimado Damian, ante todo gracias por toda la info, me es de mucha utilidad. Necesitaría hacerte una consulta (y pido disculpas si es muy obvia, pero soy analista de seguridad y no me queda muy claro el tema de capas). Como sería a tu entender, o que debería contener cada una de las capas.
La duda surge a raíz de que la gente de desarrollo me informa que el esquema es el siguiente:

Capa 1 IIS + Component Services (que lo único que hace es llamar a capa 2)
Capa 2 Un Component Services que es consultado por el de capa 1 + los ASP propiamente dicho
Capa 3 La base de datos.


Desde ya muchas gracias por tu ayuda.

Damián Bacalov dijo...

BITTENCOURT:

Lo que te dijeron está muy bien desde el punto de vista de infraestructura.

Desde el punto de vista propiamente dicho las tres capas más conocidas son:
- Capa de presentación: aquello con lo que el usuario interactúa.
- Capa de negocio: la que define el comportamiento de la aplicación.
- Capa de datos: la que sabe comunicarse con la base de datos.

BITTENCOURT dijo...

Damian, muchas gracias por tu pronta respuesta.
Desde ya quedo a tu disposición para lo que te pueda ayudar.