Protocols de comunicació
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
CinemaMessage
que implementa una petició o comunicació entre el servidor i el client.
- Objecte
CinemaMessageType
que implementa els diferents tipus de peticions que hi haurà.
Com que l'objecte CinemaMessage
conté un objecte CinemaMessageType
, 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
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.