Supponiamo di avere un client che si interfaccia con un server che a sua volta invoca un servizio esterno per soddisfare alcune richieste del cliente. Sto progettando il client e il server e ho bisogno di soddisfare i limiti del servizio esterno. Ho queste opzioni:
- Incapsula (il più possibile) tutto il codice che si occupa delle limitazioni del servizio all'interno dell'applicazione server .
- Incapsula (per quanto possibile) tutto il codice che si occupa delle limitazioni del servizio all'interno dell'applicazione client .
- Progetta sia le applicazioni client che quelle server intorno alle limitazioni del servizio esterno.
Avevo scelto l'opzione n. 1 perché l'applicazione server era "più vicina" al servizio esterno e non volevo dover riprogettare il client se e quando il servizio esterno fosse migliorato. Tuttavia, ora mi viene chiesto di scegliere l'opzione n. 3 dal team lato server in modo che possiamo gestire le limitazioni del servizio esterno nell'API invece di gestire le eccezioni. Esiste un modello di progettazione a cui posso fare riferimento per convincerli (o me stesso) che una opzione è preferibile? ( La separazione delle preoccupazioni sembra promettente, ma non mi sono convinto che sia sufficiente perché potrebbe anche argomentare sull'opzione n. 2 )