Duda sobre arquitecura

18/05/2006 - 19:16 por Oscar Piqueras Segura | Informe spam
En mi empresa estamos pensando en migrar una aplicación cliente-servidor
tradicional hacia una arquitectura SOA utilizando servicios web.

Se trata de una aplicación de gestión tradicional. ¿Los servicios web son
una buena elección? En teoría, las aplicaciones SOA son de grano grueso
(pocas funcionalidades pero muy complejas) y en la aplicación de gestión nos
encontramos en el caso contrario. Además, por supuesto, están los temas de
rendimiento y de sincronía.

Resumiendo: ¿Es una locura implementar este tipo de soluciones? ¿Existen
casos de aplicaciones reales de gestión implementadas con servicios web?

Un saludo.
 

Leer las respuestas

#1 CESAR DE LA TORRE [MVP]
19/05/2006 - 14:04 | Informe spam
Por supuesto que NO es una locura implementar una aplicación de gestión con
WebServices y claro que hay casos de éxito. Yo llevo casi 10 años
desarrollando aplicaciones distribuidas siguiendo la filosofía 3-Tier o
N-Tier donde la capa de presentación en caso de ser Formularios Windows tiene
que comunicarse remotamente con el servidor de componentes de negocio. Hace
años lo hacíamos con componentes COM (de VB o de C++) y mediante DCOM
realizábamos la comunicación remota entre la capa de presentación y el
servidor de componentes. Hoy en día (desde el 2001) lo realizamos con
XML-WebServices y .NET REMOTING y dentro de muy poco en producción también
con Servicios SOA de WCF (INDIGO ahora está en BETA hasta Noviembre 2006) que
permite diferentes protocolos (HTTP, TCP, NamedPipes) y encoding (XML ó
Binario), lo cual aumentan las posibilidades de rendimiento.
Yo creo que no he desarrollado una Aplicación Cliente-Servidor desde hace
por lo menos el año 1995. El problema de una aplicación cliente Servidor es
que es una aplicación monolítica, toda la lógica de acceso a datos, de
negocio y de presentación al final suele quedar mezclada en la propia capa de
presentación (Formularios Windows) y por ejemplo convertir esa aplicación en
una aplicación Web es muy complejo. En una Aplicación N-Tier, pasar de
Winforms a Web es sencillo.
Por último, varias recomendaciones:
1.- En aplicaciones que utilicen WebServices, Remoting o WCF(INDIGO) es
importante minimizar el número de llamadas al servidor. Es mejor aumentar el
volumen de datos de una llamada a aumentar el número de llamadas remotas al
WebService.
2.- Es muy importante manejar datos en CACHE en la capa WinForms para
entidades que normalmente no cambian, por ejemplo países para Combos de los
Formularios, etc. en lugar de estar consultando esos datos constantemente a
la base de datos a través de los WebServices o Servicios SOA de INDIGO.
3.- En las fechas que estamos, yo comenzaría el proyecto con WCF(INDIGO). Es
mucho mas potente que Servicios-Web básicos, mejor rendimiento, desacoplado
de los protocolos, formato e incluso Hosting de tu Servicio (no tiene por qué
estar basado solamente en IIS, pueden ser tus propios procesos)
4.- .NET REMOTING tiene también mejor rendimiento que XML-WebServices, pero
NO es interoperable con otras tecnologías como JAVA, y lo mas importante,
MICROSOFT lo va a 'descontinuar' dejándolo aparcado. Está y estará soportado,
pero se descontinúa. Por el contrario, WCF(INDIGO) es la unificación de TODAS
las tecnologías distribuidas y sistemas conectados de Microsoft,
interoperable con otras tecnologías, cubre practicamente todo lo que se hacía
con .NET REMOTING y mas, etc.. Es el futuro y sale RELEASE ya en NOVIEMBRE de
este año 2006, al mismo tiempo que la RTM de Windows Vista, dentro de toda la
plataforma WinFX de desarrollo.

5.- Si por fechas, no podéis empezar con una BETA de WCF(INDIGO), yo lo
haría con Servicios Web básicos de .NET 2.0 (ASMX 2.0), porque la migración a
Servicios SOA de WCF(INDIGO) es bastante sencilla puesto que su arquitectura
es bastante migrable a WCF.
CESAR DE LA TORRE
Software Architect
[Microsoft MVP - Connected Systems]
[MCSE] [MCT]

Renacimiento
[Microsoft GOLD Certified Partner]


"Oscar Piqueras Segura" escribió:

En mi empresa estamos pensando en migrar una aplicación cliente-servidor
tradicional hacia una arquitectura SOA utilizando servicios web.

Se trata de una aplicación de gestión tradicional. ¿Los servicios web son
una buena elección? En teoría, las aplicaciones SOA son de grano grueso
(pocas funcionalidades pero muy complejas) y en la aplicación de gestión nos
encontramos en el caso contrario. Además, por supuesto, están los temas de
rendimiento y de sincronía.

Resumiendo: ¿Es una locura implementar este tipo de soluciones? ¿Existen
casos de aplicaciones reales de gestión implementadas con servicios web?

Un saludo.

Preguntas similares