Le parole "involucro" e "shim" sono più o meno sinonimi, oppure esiste una distinzione, forse connotativa?
Le parole "involucro" e "shim" sono più o meno sinonimi, oppure esiste una distinzione, forse connotativa?
Risposte:
Uno shim è in genere qualcosa di scritto appositamente per mantenere la compatibilità con le versioni precedenti. Ad esempio, se hai due versioni di un'API, la versione 1 e la versione 2, quindi anziché mantenere la versione 1 indipendentemente dalla versione 2, potresti scrivere uno shim che intercetta le chiamate alla versione 1 dell'API, traduce i parametri in quale versione 2 richiede, quindi restituisce i risultati.
In genere, uno shim viene scritto dal provider dell'API, anziché dal consumatore.
Un wrapper è scritto dal consumatore di un'API ed è in genere scritto in modo da poter cambiare l'API sottostante senza che il resto del codice lo sappia. Ad esempio, è possibile scrivere un wrapper di database in modo da poter parlare con MS SQL Server o Oracle, semplicemente cambiando wrapper.
Naturalmente, come con qualsiasi terminologia, ci sono aree grigie, ma penso che quanto sopra copre le principali differenze.