Protocols de comunicació
Autor: Joan Puigcerver Ibáñez
Correu electrònic: j.puigcerveribanez@edu.gva.es
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
Introducció
Un protocol de comunicació és un conjunt de regles que defineix com s'intercanvia
la informació entre diversos dispositius o aplicacions. Aquestes regles determinen la forma
en què les dades s'estructuren per al seu enviament i recepció.
Normalment, cal tindre en compte els següents aspectes a l'hora de treballar amb un protocol o dissenyar-ne un:
-
Tipus de missatge:
- Decideix quins tipus de missatges seran necessaris per a la teua aplicació (peticions, respostes, notificacions, etc.).
- Assigna identificadors únics (codis o noms) a cada tipus de missatge.
-
Estructura del missatge: Defineix l'estructura de les dades per al seu enviament i recepció. Es poden utilitzar els següents formats:
- Objectes Serialitzats: Objectes del llenguatge programació traduïts a binari (
bytes ).
- Llenguatges de marques estructurats: Es poden utilitzar llenguatges de marques per estructurar la informació.
Els formats més comuns i utilitzats en comunicació són JSON i XML.
-
Autenticació i Autorització:
- Defineix com es gestionarà l'autenticació dels clients.
- Estableix mecanismes per gestionar permisos sobre quins clients tenen accés a quina informació.
-
Gestió d'errors:
- Defineix com es gestionaran els possibles errors durant la comunicació.
- Pots utilitzar codis per indicar l'estat de cada missatge.
-
Seqüencia:
- Estableix una seqüència lògica per a les interaccions entre el client i el servidor.
- Determina l'ordre en què es poden enviar i rebre els diferents tipus de missatges.
Una vegada dissenyat el protocol cal proporcionar una documentació detallada i completa que explique
totes les possibles interaccions, la informació que es transmet i com s'ha de processar.
Protocol HTTP
El protocol de transferència d'hipertext o HTTP (HyperText Transfer Protocol) estableix el protocol per a
l'intercanvi de documents d'hipertext i multimèdia al web.
HTTP disposa d'una variant xifrada mitjançant SSL anomenada HTTPS.
És el protocol utilitzat per la visualització de pàgines web.
Aquest protocol té una estructura client-servidor.
El protocol HTTP té diferents tipus de peticions. Els més comuns són:
GET : Sol·licita dades d'un recurs.
POST : Envia dades al servidor per processar-les.
PUT : Actualitza les dades d'un recurs o crea un nou recurs si no existeix.
DELETE : Elimina un recurs específic.
A més, HTTP utilitza una sèrie de codis per indicar si la petició efectuada s'ha pogut portar a terme i així,
poder gestionar els errors correctament.
Alguns dels codis més comuns són:
200 : La sol·licitud ha tingut èxit.
400 : La sol·licitud no s'ha pogut processar perquè el servidor no ha entés la petició, segurament per algun error del client.
404 : Indica que la sol·licitud és vàlida però que el recurs sol·licitat no existeix.
500 : Indica que el servidor ha tingut algun error mentre processava la petició del client.
503 : Indica que s'ha denegat l'accés al recurs sol·licitat.
Enviament d'objectes amb Java
Una de les maneres de poder enviar informació estructurada és mitjançant objectes serialitzats, és a dir,
objectes del llenguatge de programació que han segut convertits a bytes.
Aquesta opció té l'avantatge que és molt còmoda, ja que pots enviar i rebre objectes directament sense
la necessitat de processar el missatge. No obstant això, té l'inconvenient que la estructura dels objectes i la serialització
depén del llenguatge de programació, per tant, és poc versàtil en el sentit que cal utilitzar el mateix llenguatge de programació
per als clients i servidors.
Interfície Serializable
Abans que res, cal implementar la interfície Serializable en tots els objectes que s'utilitzaran en la comunicació.
Simplement cal implementar la interfície i no cal realitzar cap acció addicional en aquest pas.
Amb això, Java ja sap com convertir l'objecte a binari.
Exemple
- Objecte
Request que implementa una petició o comunicació entre el servidor i el client.
- Objecte
RequestType que implementa els diferents tipus de peticions que hi haurà.
Com que l'objecte Request conté un objecte RequestType , també cal serialitzar-lo.
Enviament i recepció d'objectes
L'enviament i recepció d'objectes es gestionen amb les classes ObjectOutputStream i ObjectInputStream ,
que s'inicialitzaran amb el OutputStream o InputStream del Socket corresponent.
Bibliografia
|