“래퍼 (wrapper)”와 “심 (shim)”이라는 단어는 어느 정도 동의어입니까, 아니면 구별적인 의미가 있습니까?
답변
심은 일반적으로 이전 버전과의 호환성을 유지하기 위해 특별히 작성된 것입니다. 예를 들어, 버전 1과 버전 2의 두 가지 버전의 API가 있고 버전 2와 독립적으로 버전 1을 유지하는 대신 API 버전 1에 대한 호출을 가로 채고 매개 변수를 어떤 버전으로 변환 하는 shim 을 작성할 수 있습니다. 2가 필요하고 결과를 반환합니다.
일반적으로 shim은 소비자가 아닌 API 공급자가 작성합니다.
랩퍼는 API 소비자 가 작성하며 일반적으로 나머지 코드를 몰라도 기본 API를 전환 할 수 있도록 작성됩니다. 예를 들어, 랩퍼를 전환하여 MS SQL Server 또는 Oracle과 대화 할 수 있도록 데이터베이스 랩퍼를 작성할 수 있습니다.
물론 다른 용어와 마찬가지로 회색 영역이 있지만 위의 주요 차이점을 다루는 것 같습니다.