2010-01-22 23 views
81

एक शिम की परिभाषा क्या है?शिम क्या है?

+22

मुझे यह प्रश्न पसंद है। – shim

+1

@shim तो बेहतर सवाल होगा "शिम कौन है?"। – Gondil

+0

@ शिम नरसंहार चेतावनी: डी जब आप _this_ कहते हैं, तो यह मुझे तीसरे व्यक्ति - a Third Person Person उदाहरण के लिए एस्टरिक्स कॉमिक्स में जूलियस सीज़र की याद दिलाता है। search for text "third person" harshvchawla

उत्तर

68

विकिपीडिया से:

कंप्यूटर प्रोग्रामिंग में, एक shim एक छोटा सा पुस्तकालय है कि स्पष्ट रूप से एक एपीआई को बीच में रोक, मानकों को पारित कर दिया बदलने, आपरेशन खुद से निपटने, या ऑपरेशन कहीं और पुनः निर्देशित है। शिम्स आम तौर पर जब एक API परिवर्तन के व्यवहार, जिससे पुराने अनुप्रयोगों है कि अभी भी पुराने कार्यक्षमता पर भरोसा करते हैं के लिए संगतता समस्याओं के कारण के बारे में आते हैं। इन मामलों में, पुराने एपीआई को अभी भी नए कोड के शीर्ष पर पतली संगतता परत द्वारा समर्थित किया जा सकता है। शिम्स का इस्तेमाल विभिन्न सॉफ़्टवेयर प्लेटफ़ॉर्म पर प्रोग्राम चलाने के लिए भी किया जा सकता है, जिनके लिए उन्हें विकसित किया गया था।

+6

जावास्क्रिप्ट बोलने में बहुत कुछ फेंक दिया जाता है। – coderatchet

+18

यह उत्तर विकिपीडिया पर वास्तविक Google खोज करने से अलग नहीं है। एक उदाहरण अच्छा होगा। – Sung

+1

यह लाइब्रेरी इंटरफेसिंग के लिए फेकाडे डिज़ाइन पैटर्न के उपयोग की तरह लगता है। – blz

12

शब्द, quoth एप्पल के शब्दकोश विजेट के मूल के रूप में

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 

यह कैसे वेब डिजाइनर शब्द का उपयोग के साथ बहुत अच्छी तरह से फिट करने के लिए लगता है।

10

shims, .net 4.5 माइक्रोसॉफ्ट नकली ढांचे to isolate your application from other assemblies for unit testing में किया जाता है। Shims आपके परीक्षण

+0

यह एकमात्र उत्तर है जो एक शब्दकोश से नहीं पढ़ता है .... – RJB

33

विकिपीडिया में परिभाषित "शिम" शब्द को तकनीकी रूप से वर्गीकृत किया जाएगा, इसकी परिभाषा के आधार पर "संरचनात्मक" डिज़ाइन पैटर्न के रूप में। कई प्रकार के "स्ट्रक्चरल" डिज़ाइन पैटर्न स्पष्ट रूप से वर्णित हैं (कुछ डिफैक्टो कहते हैं) ऑब्जेक्ट ओरिएंटेड सॉफ़्टवेयर डिज़ाइन पैटर्न संदर्भ "Design Patterns, Elements of Reusable Object-Oriented Software""Gang of Four" के रूप में जाना जाता है।

"Gang of Four" पाठ कम से कम 3 अच्छी तरह से स्थापित के रूप में, "प्रॉक्सी", "एडाप्टर" और "फसाड" जो सब प्रदान करते हैं "शिम" प्रकार कार्यक्षमता ज्ञात पैटर्न की रूपरेखा। सबसे क्षेत्रों में यह अक्सर बार इस्तेमाल करते हैं और या याद आती है एक ही रूट अवधारणा है कि लोगों को भ्रम का कारण बनता लिए अलग-अलग शब्दों के संक्षिप्त रूप फायदा नहीं है। अधिक विशिष्ट "संरचनात्मक" डिजाइन पैटर्न "Proxy", "Adapter" और "Facade" का वर्णन करने के लिए शब्द "शिम" का उपयोग करना निश्चित रूप से इस प्रकार की स्थिति का एक स्पष्ट उदाहरण है। एक "शिम" बस "स्ट्रक्चरल" पैटर्न "प्रॉक्सी", "एडाप्टर", "फसाड" और संभवतः दूसरों के अधिक विशिष्ट प्रकार के लिए एक अधिक सामान्य शब्द है।

+8

यह सरल विकिपीडिया की तुलना में 'वास्तविक' उत्तर की तरह लगता है @Prasoon सौरव द्वारा कॉपी और पेस्ट करें ... – Sung

+1

यह उत्तर इंगित करता है कि एक शिम है डिज़ाइन पैटर्न (कई में से एक), कुछ समान डिज़ाइन पैटर्न का नाम देता है, और इस बारे में एक स्पर्शरेखा पर चला जाता है कि लोग विभिन्न शब्दकोषों से कैसे भ्रमित हो जाते हैं। लेकिन यह वास्तव में मूल सवाल का जवाब नहीं देता है कि एक शिम क्या है, यह क्या करता है, या कैसे उपयोग किया जाता है। –

+0

दौर और दौर और दौर:/ – harshvchawla

5

Microsoft का लेख "Demystifying Shims" के अनुसार:

यह एक प्रतीक अंग्रेजी भाषा शब्द शिम, जो एक इंजीनियरिंग लकड़ी या धातु का एक टुकड़ा है कि है को दो वस्तुओं के बीच डाला वर्णन करने के लिए प्रयोग किया जाता है पर आधारित है उन्हें एक साथ फिट करने के लिए बेहतर बनाओ। कंप्यूटर प्रोग्रामिंग में, एक शिम एक छोटी लाइब्रेरी है जो पारदर्शी रूप से एपीआई को रोकती है, पारित पैरामीटर को बदलती है, ऑपरेशन को स्वयं संभालती है, या ऑपरेशन को कहीं और रीडायरेक्ट करती है। की परतें भी अलग सॉफ्टवेयर प्लेटफार्मों की तुलना में वे के लिए विकसित किए गए पर कार्यक्रमों को चलाने के लिए इस्तेमाल किया जा कर सकते हैं।

मैं व्याख्या इसका मतलब यह है कि एक शिम कोड के किसी भी पुस्तकालय है कि या एक बिचौलिया के रूप में कार्य करता है और आंशिक रूप से पूरी तरह से व्यवहार या एक कार्यक्रम के संचालन में परिवर्तन के लिए एक सामान्य शब्द है। एक सच्चे मध्यस्थ की तरह, यह उस कार्यक्रम को पारित डेटा को प्रभावित कर सकता है, या उस कार्यक्रम से लौटाए गए डेटा को प्रभावित कर सकता है।

लेख एक उदाहरण के रूप में Windows API का उपयोग करता है, और मैं प्रासंगिक निम्नलिखित वाक्य पाया:

आवेदन आम तौर पर अनजान हैं कि अनुरोध बजाय विंडोज खुद के शिम DLL जा रहा है है, और विंडोज़ इस बात से अनजान है कि अनुरोध एप्लिकेशन के अलावा किसी स्रोत से आ रहा है (क्योंकि शिम डीएलएल एप्लिकेशन की प्रक्रिया के अंदर सिर्फ एक और डीएलएल है)।

इस उद्धरण के सामान्यीकरण करने के लिए, दो कार्यक्रमों है कि "शिम सैंडविच" की "रोटी" बनाने के अपने समकक्ष कार्यक्रम से बात कर और शिम से बात कर के बीच अंतर करने में सक्षम नहीं होना चाहिए।

शिम्स का उपयोग करने के कुछ पेशेवर और विपक्ष क्या हैं?

फिर, लेख से:

आप स्रोत कोड की पहुंच के बिना अनुप्रयोगों ठीक कर सकते हैं, या बिना उन पर सब बदल रहा है। आपको कम से कम प्रबंधन ओवरहेड प्राप्त होता है ... और आप इस तरह के अनुप्रयोगों की उचित संख्या को ठीक कर सकते हैं। डाउनसाइड के रूप में समर्थन करता है अधिकांश विक्रेता shimmed अनुप्रयोगों का समर्थन नहीं करते हैं। आप शिम्स का उपयोग करके प्रत्येक एप्लिकेशन को ठीक नहीं कर सकते हैं। अधिकांश लोग आम तौर पर अनुप्रयोगों के लिए शिम पर विचार करते हैं जहां विक्रेता व्यवसाय से बाहर है, सॉफ्टवेयर समर्थन की आवश्यकता के लिए पर्याप्त रणनीतिक नहीं है, या वे कुछ समय खरीदना चाहते हैं।

इस प्रश्न के संदर्भ में, उपरोक्त लिंक पढ़ने के बाद "प्रॉक्सी", "एडाप्टर" और "मुखौटा" जैसे शब्द अधिक समझते हैं (कम से कम मेरे लिए)।

+1

डाउनवोट द्वारा उलझन में। अगर मेरा जवाब गलत है, तो मुझे यह जानना अच्छा लगेगा कि मैं इसे और भविष्य के उत्तरों में क्यों सुधार कर सकता हूं। –