Modulo De Comunicaciones - Protocolo

Introducción

Este documento define el formato con el que intercambia datos el módulo de comunicaciones del servidor con el exterior, así como otros detalles relacionados.

Formato de un mensaje

Un mensaje es la unidad mínima de información intercambiable entre el módulo de comunicaciones y cualquier aplicación externa (applets de juegos, páginas web del portal que necesiten comunicarse con éste…). Como una primera aproximación se puede considerar la siguiente estructura.

Nombre Descripcion
Longitud Entero con signo de 4 bytes que contiene la longitud del mensaje (incluidos los 4 bytes de este mismo campo)
Metadatos Serialización XML de una clase que exponga los metadatos de un paquete (longitud variable)
Cuerpo Serialización XML de una clase que contiene lo que realmente se quería transmitir

Descripción de los campos

  • Longitud : A pesar de que el serializador xml no necesita conocer la longitud de lo que enviamos previamente (lo infiere de la clase que serializa) necesitamos conocer este dato puesto que nada nos garantiza que un mensaje nos llegue de una sola vez al servidor. El protocolo TCP garantiza que llegará todo y en orden pero no que llegará sin fraccionarse. Utilizando este valor podemos determinar si la información ha llegado completa y por tanto podemos procesarla o bien si nos ha llegado un fragmento y aun debemos esperar al resto.
  • Metadatos : Como su nombre indica son datos sobre los datos. Entre otras cosas aquí podríamos encontrar un identificador del protocolo sobre el que se define el mensaje, un contador para numeros de mensaje , flags para indicar la prioridad… En principio solo hace falta el identificador del protocolo pero es algo abierto y facilmente modificable (antes de hacer el resto de cosas claro)
  • Cuerpo : Es la "chicha" del mensaje. Contiene los datos reales que quería enviar el emisor sin adornos. Esta parte del mensaje le será pasada al módulo correspondiente de una manera aun por determinar (probablemente en una cola de mensajes pero eso queda más en la Estructura del Módulo Servidor)

Comentarios

  • Como serializador xml propongo usar XStream (del cual hay enlaces en la página de Tutoriales de Tecnologías ya que nos ofrece una cierta independencia respecto a los cambios en las clases serializadas que los métodos de serialización propios de Java no ofrecen