lunes, 21 de abril de 2008

Arquitecturas Cliente/Servidor vs Web

Es frecuente en nuestros días oir hablar de las arquitecturas Web como algo diferente a una arquitectura Cliente/Servidor, cuando en realidad estamos hablando de lo mismo.

Me gustaría dejar aquí una cita de un libro (Client/Server Survival Guide) que tengo hace tiempo (de mi época de estudiante) que dice algo así: "In no way does Internet computing replace client/server computing. That´s because it already is client/server computing". Creo que por si misma es autoexplicativa.

En este tipo de arquitecturas, el cliente se define como un solicitante de servicios, mientras que el servidor es un proveedor de servicios que va a responder a nuestras peticiones.

Una aplicación típicamente desarrolla en Visual Basic que utiliza formularios y que se conecta a una base de datos está siguiendo una arquitectura cliente/servidor. Concretamente será una arquitectura con dos capas. En este caso se dice que el cliente es un cliente pesado, ya que además de ocuparse de la presentación de datos tendrá capacidad para procesar reglas de negocio. La parte del servidor estará representada por el servidor de base de datos (Mysql, Oracle, Postgre, SQL Server).

Pero es que si tomamos una típica aplicación Web, como por ejemplo la web de Marca (esto es publicidad subliminal) el papel de cliente lo desempeña el browser (IE, Firefox, Netscape, etc). El browser realizará la petición, por ejemplo vía http, a un servidor de aplicaciones que se encargará de procesarla. Además este servidor de aplicaciones es muy posible que necesite acceder a una base de datos para responder a la demanda del cliente. En este caso estamos hablando de una arquitectura en tres capas; 1) capa de presentación realizada por el browser, que en este caso es un cliente ligero debido a que no tiene capacidad de proceso o tiene muy poca, 2) capa de negocio que al contrario que en la arquitectura de dos capas será un servidor pesado que procesará nuestra petición (el servidor de aplicaciones se encarga de ello) y 3) capa de datos.




He puesto aquí una imagen que representa el contraste entre una arquitectura con dos capas, cliente pesado y servidor ligero y una con tres capas con cliente ligero y servidor pesado.

Por supuesto que toda esta explicación es muy simplista. En un próximo blog me gustaría profundizar un poco en las ventajas y desventajas de utilizar una arquitectura en n capas frente a una de 2 capas, pero por hoy creo que es suficiente.

Para todo aquel que quiera profundizar más en el tema, podéis consultar la web de Software Engineering Institute

http://www.sei.cmu.edu/str/descriptions/clientserver_body.html

3 comentarios:

Anónimo dijo...

Hola Fer...

Aunque no me he enterado mucho de todo paece que entiendees bastante :).

Me estoy leyendo un libro buenísimo. Es sobre el desarrollo del descapotable apple, la bicicleta a motor microsoft y el tanque Linux. También hay batmóviles pero estos son menos conocidos.

Un desarrollo metafórico de la historia del software de microsoft contra el hardware de apple.

Ya te lo pasaré te gustará y si es así lo referenciaras en tu blog :)

Anónimo dijo...

Hola fernando, me podrias dar la pagina y el titulo con sus autores de la cita que mencionas, me gustaria añadirla a un articulo.

Saludos,

Juan

Fernando dijo...

Juan,

Puedes verlo por ejemplo en la Web de Amazon. Ahí también verás los autores del libro.

http://www.amazon.com/Client-Server-Survival-Guide-3rd/dp/0471316156