Sòcols i serveis
Com es comuniquen dos programes per la xarxa, des dels bytes que viatgen per un sòcol fins a les APIs que fan servir les aplicacions web i mòbils. Pressuposa el bloc anterior: un servidor atén diversos clients alhora, i això és concurrència (Processos i fils).
Com llegir aquests documents
Els documents pugen de nivell, de la xarxa cap a l’aplicació:
- Regles. Abans d’enviar res, cal saber quines regles segueixen els dos extrems. Els protocols de xarxa (IP, TCP, UDP, HTTP) en són exemples, i també es pot dissenyar un protocol propi.
- Implementar-les. Els sòcols són l’eina per implementar un protocol a Java, tant amb TCP com amb UDP. Aquí apareixen els problemes reals: timeouts, tancament de connexions i comunicació asíncrona.
- Serveis. Un nivell més amunt, la pregunta ja no és com enviar bytes sinó on posar cada part de l’aplicació (arquitectures) i com exposar-la als clients (APIs). HTTP passa a ser la base comuna.
- APIs. Les dues formes habituals de construir una API sobre HTTP: REST, sense estat al servidor, i streaming, amb una connexió oberta.
flowchart TD
P["Protocols"] --> S["Sòcols"]
P --> V["Serveis"]
S --> V
V --> A["APIs sobre HTTP"]
Comunicació en xarxa
- Protocols: models de capes, IPv4 i IPv6, HTTP i com dissenyar un protocol propi sobre TCP o UDP
- Sòcols: comunicació TCP i UDP amb sòcols, amb protocols d’exemple, timeouts, tancament i comunicació asíncrona
Serveis i APIs
- Serveis: arquitectures distribuïdes, què és una API i el paper d’HTTP
- APIs sobre HTTP: APIs RESTful (stateless) i APIs de streaming (stateful)
Després
Un servei exposat a la xarxa s’ha de protegir. Criptografia explica com xifrar la comunicació (TLS), i Seguretat com autenticar els clients i protegir una API.
Referències
- OSI Model
- HTTP (Mozilla)
- HttpURLConnection
- reqbin.com
- A guide to Java sockets
- Do a Simple HTTP Request in Java
- Core Java Networking (eugenp)
- Read an InputStream using the Java Server Socket
- REST vs Websockets (baeldung)
- A Guide to the Java API for WebSocket (baeldung)
- All About Sockets (The Java Tutorials)
- SSL Handshake Failures (baeldung)
- HTTP: The Protocol Every Web Developer Must Know (part 1)
- HTTP: The Protocol Every Web Developer Must Know (part 2)
- REST API Tutorial
- Blocking I/O and non-blocking I/O
- A Guide to NIO2 Asynchronous Socket Channel
- Java NIO Tutorial (Jenkov)
- How Single-Page Applications Work
- What Is a Single Page Application and Why Do People Like Them so Much?
- Guía práctica para la publicación de Datos Abiertos usando APIs
- Local-first software