«Wrapper» et «shim» sont-ils synonymes?

15

Les mots «wrapper» et «shim» sont-ils plus ou moins synonymes, ou y a-t-il une distinction, peut-être connotative?

DuckMaestro
la source

Réponses:

28

Un shim est généralement quelque chose d'écrit spécifiquement pour maintenir la compatibilité descendante. Par exemple, si vous avez deux versions d'une API, la version 1 et la version 2, plutôt que de maintenir la version 1 indépendamment de la version 2, vous pouvez écrire un shim qui intercepte les appels à la version 1 de l'API, traduit les paramètres dans quelle version 2 requiert, puis renvoie les résultats.

En règle générale, une cale est écrite par le fournisseur de l'API, plutôt que par le consommateur.

Un wrapper est écrit par le consommateur d'une API et est généralement écrit afin que vous puissiez changer l'API sous-jacente sans que le reste de votre code ait à le savoir. Par exemple, vous pouvez écrire un wrapper de base de données afin de pouvoir parler à MS SQL Server ou Oracle, simplement en changeant de wrappers.

Bien sûr, comme pour toute terminologie, il y a des zones grises, mais je pense que ce qui précède couvre les principales différences.

Dean Harding
la source
1
+1, le point sur qui l'écrit est une bonne façon d'expliquer.
Steve