As palavras "invólucro" e "calço" são mais ou menos sinônimos, ou existe uma distinção, talvez conotativa?
fonte
As palavras "invólucro" e "calço" são mais ou menos sinônimos, ou existe uma distinção, talvez conotativa?
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.