Como ya he dicho alguna vez en este weblog, imparto en la Facultad de Informática la asignatura de
Sistemas Distribuidos. El otro día tuvimos la introducción a la asignatura en la que hacía un pequeño repaso en lo que han sido (y son) los sistemas distribuidos. Desde los sistemas centralizados a los sistemas distribuidos actuales, servicios Web, CORBA, etc. Esto suscitó una pregunta de un alumno,
Bassman contertulio de
Planet Murcia, y que no sabía que lo tenía de alumno. He aquí su pregunta (con pequeñas ediciones, ya que fue en un correo electrónico):
Todo eso está muy bien lo de CORBA, middleware y tal pero... ¿qué pasa
con los pequeños electrodomésticos o dispositivos móviles que
utilizarán servicios distribuidos? Es viable implementar esas
arquitecturas en hardware con poca capacidad? Por otra parte, las
arquitecturas middleware y los buses asíncronos de comunicación
implementan una arquitectura lógica cliente-cliente, pero sigue
existiendo la necesidad de administrar el canal común mediante algún
tipo de servidor, al igual que en redes P2P se acceden a servidores
para darse de alta en el servicio distribuido.
Todo esta duda me surge porque ya sois dos los profesores que habéis
comentado ambas tecnologías, dejando "en el aire" algo tan importante
como es la gestión de ese canal común. ¿Es tan sencilla su
implementación o está ya tan optimizada que no merece la pena
comentarlo? Quiero saber más al respecto.
En la asignatura de "Desarrollo de Aplicaciones Distribuidas" de la
intensificación del software vamos a dar de forma casi exclusiva web
services en plataforma Java, y ahí nos lo pintan todo como muy en
auge, mientras que tú nos das una imagen de decadencia.
Por último, [...] sobre
programación en C++, en la carrera no nos dan NADA de NADA, ya que el
resto del profesorado prefiere usar Java por ser más "didáctico" y más
"de moda" (me supongo).
Interesantes reflexiones. Déjame que te responda en orden.
Primero, me preguntas sobre los dispositivos de poca capacidad hardware. Supongo que te refieres a teléfonos móviles/PDAs. Me encanta que me hagas esa pregunta, porque precisamente, existen varias implementaciones de CORBA para ellos. Por ejemplo,
LUAOrb. Además, existen especificaciones como
Minimum CORBA diseñada y pensada específicamente para este tipo de periféricos. La mayoría de implementaciones de CORBA actuales permiten compilar casi sin restricciones todos los ORBs de libre distribución en PDAs. Por ejemplo, Eduardo Martínez, también de la Universidad utiliza
MICO compilado en una PDA, y muchos de los operadores de telefonía (por ejemplo Telefónica) utilizan CORBA para gestionar las conexiones telefónicas. Lo bueno de estos aparatos pequeños es que cada vez se hacen más potentes.
Hablas después de los buses de comunicación «peer-to-peer». Interesante reflexión. También hablé yo de la gestión de arquitecturas MOM («
Message-Oriented Middleware»), que se basan en un bus de comunicación. ¿Qué pasa con la gestión de ese bus? Pues que se puede realizar, como bien dices y es el caso de los sistemas p2p, gracias a un servidor. Los elementos que se conectan al bus no tienen que tener un protocolo especialmente complejo, ya que sólo indican su presencia, y recogen todos los mensajes que circulan por la red, siendo capaces de enviar también sus propios mensajes. El símil de este caso con dispositivos pequeños lo tenemos en una tecnología que utilizamos todos los días: los móviles. Imagina la red GSM como un bus en el que se envían y reciben mensajes de una aplicación distribuida. Ahí tendrás la respuesta a tu pregunta sobre dispositivos pequeños. Imagina la torre receptora como gestor de los distintos canales y ya está.
El siguiente punto que mencionas es mi particular aversión a los servicios Web. Te diría que esperes a ver ambas asignaturas y decidas por tí mismo. El paradigma de servicios web se encuentra en la actualidad ante un franco estancamiento. Sí, las empresas utilizan los servicios web, al menos eso dicen. Sin embargo, en cinco o seis años de desarrollo, no han pasado de ser utilizados para servicios simples de petición/respuesta. Mi principal crítica, resumiendo, son varias. Primero, el paradigma de servicios web se basa en un protocolo (SOAP) que no está optimizado para comunicaciones distribuidas, ya que está basado en texto y es muy ineficiente (esto, por sí solo, y teniendo en cuenta que los servicios web se utilizan para realizar aplicaciones distribuidas, ya es un error grave). Después, se ha puesto mucho hincapié en que los servicios web permiten comunicar cualquier cliente y servidor sobre Internet, etc., cosa que ya se lograba con otras tecnologías (véase CORBA) hace muchos años. Además, hay un conjunto monstruoso de especificaciones, muy difíciles de comprender y sobre las que nadie llega a un consenso. Después de 5 años no han llegado a consenso en cuestiones tan simples como el «workflow» de servicios web (totalmente necesario para realizar servicios web en cascada), etc. Todo eso ya era posible en CORBA, y de una manera mucho más natural y con estándares más sencillos. Etc, etc, etc.
Por último, el problema de C++. Veo muy mal que no se enseñe C++ en una Ingeniería Informática. Sin entrar en guerras de lenguajes de programación, pienso que C++ es hoy por hoy uno de los lenguajes más importantes y más utilizados, y un Ingeniero debería conocerlo como la palma de su mano. En la asignatura procuraremos introducirlo para que a partir de ahí seais capaces de desarrollar código CORBA/C++. Es triste, pero muchos profesores ni siquiera saben programar en C++ y no conocen sus beneficios, como la STL.
Espero haber despejado algunas dudas. Un saludo.