Shim的定義是什麼?什麼是墊片?
什麼是墊片?
回答
維基百科:
在計算機程序中,shim是透明地截取的API,改變傳遞的參數,處理操作本身,或其他地方重定向的動作的小庫。墊片通常在API的行爲發生變化時出現,從而導致仍依賴舊功能的舊應用程序出現兼容性問題。在這些情況下,較新的代碼之上的較薄的兼容層仍然可以支持較舊的API。墊片也可以用於在不同的軟件平臺上運行程序,而不是開發它們。
在javascript中引發了很多討論。 – coderatchet 2014-05-30 02:15:45
此答案與在wikipedia上進行實際的谷歌搜索沒有區別。一個例子會很好。 – Sung 2016-01-01 03:08:58
這聽起來像是使用Facade設計模式來連接庫。 – blz 2016-10-20 16:25:19
至於字,答曰蘋果的字典小的起源
noun
a washer or thin strip of material used to align parts,
make them fit, or reduce wear.
verb (shimmed, shimming) [ trans. ]
wedge (something) or fill up (a space) with a shim.
ORIGIN early 18th cent.: of unknown origin
這似乎符合得很好用的網頁設計師如何使用這個術語。
墊片用於.net 4.5微軟假貨框架to isolate your application from other assemblies for unit testing。 Shims將呼叫轉移到特定的方法,以編寫代碼作爲測試的一部分
這是唯一不能從字典中讀取的答案.... – RJB 2016-06-11 20:22:29
維基百科定義的術語「墊片」在技術上將根據其定義在「結構」設計模式中進行分類。在許多類型的「結構」設計模式中,很清楚地描述了(有些人會說事實上)面向對象的軟件設計模式,其參考"Design Patterns, Elements of Reusable Object-Oriented Software"更好地被稱爲"Gang of Four"。
的"Gang of Four"文本概述至少3點被稱爲「代理」,「適配器」和「正面」,這都提供了「墊片」類型的功能很好地建立的模式。在大多數領域中,常常會出現使用和不使用不同縮略詞的相同根概念,導致人們混淆。使用「墊片」一詞來描述更具體的「結構」設計模式"Proxy","Adapter"和"Facade"肯定是這種情況的一個明顯例子。 「墊片」只是更具體類型的「結構」模式「代理」,「適配器」,「外觀」以及其他可能的更普遍的術語。
這種感覺更像是一個真正的答案,而不是簡單的維基百科複製和粘貼@Prasoon Saurav ... – Sung 2016-01-01 03:10:23
這個答案表明墊片是設計模式(許多人之一)設計了一些類似的設計模式,並且關於人們如何被不同縮略詞混淆的切線出發。但它實際上並沒有回答什麼是墊片的原始問題,它做了什麼,或者如何使用墊片。 – 2017-03-21 18:15:47
一輪又一輪:/ – harshvchawla 2017-05-11 09:09:22
根據微軟的文章"Demystifying Shims":
它是基於英語單詞墊片,這是用來形容一塊木頭或金屬的被插入到兩個物體之間 的 工程項的隱喻讓他們更好地融合在一起。在 計算機編程中,墊片是一個小型庫,它透明地攔截API,更改傳遞的參數,處理操作本身或將操作重定向到其他地方。墊片也可以用 在不同的軟件平臺上運行程序,而不是它們的開發目的。
我將其解釋爲意味着墊片是任何充當中間人的代碼庫的一般術語,部分或完全改變程序的行爲或操作。像真正的中間人一樣,它可能會影響傳遞給該程序的數據,或者影響從該程序返回的數據。
文章使用Windows API作爲一個例子,我發現有關下面的句子:
應用程序通常不知道該請求是要一個 墊片DLL,而不是到Windows本身, Windows不知道 請求來自應用程序以外的源(因爲 shim DLL只是應用程序進程內的另一個DLL)。
爲了概括這段引文,製作「墊片三明治」的「麪包」的兩個程序應該無法區分與對方程序交談並與墊片交談。
使用墊片有什麼優點和缺點?
再次,從文章:
您可以修復應用,而無需訪問源代碼,或不 改變它們。您會產生極少量的額外管理開銷......並且您可以通過這種方式修復合理數量的應用程序。不利的一面是支持,因爲大多數供應商不支持SHIMED應用程序,因此 。您無法使用墊片修復每個 應用程序。大多數人通常認爲墊片爲 應用程序,其中供應商停業,該軟件不是 足夠的戰略需要支持,或者他們只是想購買一些 時間。
在這個問題中,像「代理」,「適配器」和「外觀」這些術語在閱讀上述鏈接後更有意義(至少對我而言)。
由downvote困惑。如果我的答案錯了,我很想知道爲什麼我可以改進這個和未來的答案。 – 2017-04-11 15:02:10
- 1. 什麼是墊片庫?
- 2. 什麼是加墊和減墊?
- 3. 什麼是模式:墊片實際在做什麼?
- 4. 什麼是墊提交?
- 5. 什麼是從簡歷墊
- 6. CoreJS到墊片或不墊片
- 7. 創建墊片流
- 8. HTML5墊片後備?
- 9. ODBC鉤子/墊片
- 10. 織物chaincode中的墊片代表什麼?
- 11. 墊片和立面/適配器模式有什麼區別?
- 12. Angular2爲什麼我們需要ES6-墊片
- 13. Browserify與jQuery的墊片導致大的條目javascript。爲什麼?
- 14. JavaScript是否有i18n(Intl)墊片?
- 15. 什麼是碎片
- 16. Rbenv沒有正確地使用墊片和墊片
- 17. Windows Installer中的32位墊片和64位墊片
- 18. 爲什麼「尺碼墊」和「尺碼(墊子)」不同?
- 19. 墊片A無效方法
- 20. 阿波羅墊片 - 算法
- 21. Cannote爲System.Data.SqlClient.SqlDataReaderSmi生成墊片
- 22. 轉換CV ::墊Magick ::圖片
- 23. 如何墊片OpenFileDialog.ShowDialog方法
- 24. RequireJS - 墊片爲CoffeeScipt腳本
- 25. PhoneGap/Cordova的getUserMedia()墊片?
- 26. 墊片的系統開銷
- 27. 墊片和私人方法
- 28. 什麼默認類型墊圖像OpenCV4Android?
- 29. 爲什麼墊子類型不同?
- 30. 什麼是片斷的FN
我喜歡這個問題。 – shim 2016-01-22 16:46:44
@shim所以更好的問題是「誰是墊片?」。 – Gondil 2016-11-04 14:11:44
@shim自戀警報:D 當你說_this_時,它讓我想起阿斯特里克斯漫畫中的朱利葉斯漫畫,指第三人稱自己 - a Third Person Person search for text "third person" – harshvchawla 2017-05-17 09:31:23