11.21.2009

WCF en una Arquitectura n-layer

Cuando desarrollamos aplicaciones n-layer y utilizamos diferentes tecnologías del framework, nos empezamos a cuestionar: ¿ y donde va esto? ¿qué rol juega esto en toda nuestra arquitectura? Esto es lo que normalmente sucede cuando empezamos a crear servicios – nótese que digo servicios no solamente servicios web – para exponer funcionalidad del negocio. La pregunta entonces es ¿Donde ponemos nuestros servicios? Es por esta razón que decidí escribir un post acerca de donde se deben ubicar los servicios en una arquitectura n-layer.

Esquema n-layer

En un esquema n-layer, debemos crear una capa de servicios – una librería -  la cual se ubicará sobre la capa de lógica de negocios. Esto nos va a permitir que los diversos usuarios se conecten siempre a la lógica de negocios ya sea con referencias directas a estas librerías o ingresando a través de la capa de servicios.

En el siguiente diagrama podemos ver esta distribución.

image En primera instancia este esquema nos permite darle mantenimiento a la aplicación de forma sencilla, ya que todos los cambios que le apliquemos a la lógica del negocio, se van a ver reflejados. Seguidamente nos permite activar workflows de negocio – que deberían ser parte de la lógica de negocios – ya sea directamente o a través de la capa de servicios.

Desde el punto de vista físico, acceder los componentes vía capa de servicios nos va a permitir tener un repositorio de componentes, desde donde podemos reutilizar nuestra lógica de negocios. Un escenario idea sería utilizar varios endpoints para cada servicio, permitiendo esto que si los servicios son consumidos dentro de la organización la comunicación se haga vía TCP, y si son consumidores externos que la comunicación se haga vía HTTP o HTTPS. Esto se puede lograr utilizando WCF y IIS 7.0 o superior + WAS.

Por último y no menos importante, usar la capa de servicios nos permitir programar usando contratos. Esto quiere decir que puedo cambiar la forma en que mi lógica de negocios este programada sin necesidad de solicitarle a los consumidores del servicio que realicen cambio alguno en sus sistemas – claro siempre y cuando no afecte el contrato ( la interface ).

Technorati Tags: ,,

2 comentarios:

Anónimo dijo...

Hola

Estoy haciendo una aplicacion en visual basic 2008, en 4 capas:

Entidad
Datos
Negocio
Presentacion

y he agregado un servicio WCF
¿Como debo relacionar ahora las capas con este servicio?

Por ejemplo:
Para insertar y leer datos con un cliente que seria windows form

Unknown dijo...

muy buena explicacion no tendras algun articulo que hable de como hacer para que propiedades de la capa de negocios las pueda usar en la presentacion que he estado batallando pero lo unico que he podido hacer es volver a hacer un objeto en el service con datacontract y asi poder acceder a esas propiedades, sera posible hacer esto que te platico.