"Wrapper" e "shim" são sinônimos?

15

As palavras "invólucro" e "calço" são mais ou menos sinônimos, ou existe uma distinção, talvez conotativa?

DuckMaestro
fonte

Respostas:

28

Um calço é geralmente algo escrito especificamente para manter a compatibilidade com versões anteriores. Por exemplo, se você possui duas versões de uma API, versão 1 e versão 2, em vez de manter a versão 1 independentemente da versão 2, você pode escrever um calço que intercepta chamadas para a versão 1 da API, converte os parâmetros para qual versão 2 requer e, em seguida, retorna os resultados.

Normalmente, um shim é gravado pelo provedor da API, e não pelo consumidor.

Um wrapper é gravado pelo consumidor de uma API e normalmente é gravado para que você possa alternar a API subjacente sem que o restante do seu código precise saber. Por exemplo, você pode escrever um wrapper de banco de dados para poder conversar com o MS SQL Server ou Oracle apenas trocando os wrappers.

Obviamente, como em qualquer terminologia, existem áreas cinzentas, mas acho que o exposto acima cobre as principais diferenças.

Dean Harding
fonte
1
+1, o ponto sobre quem escreve é ​​uma boa maneira de explicar.
10119 Steve