लूस कपलिंग

कम्प्यूटिंग और सिस्टम डिजाइन में, एक शिथिल युग्मित प्रणाली है


 * 1) जिसमें घटक एक दूसरे के साथ कमजोर रूप से जुड़े हुए हैं (टूटने योग्य संबंध हैं), और इस प्रकार घटक में परिवर्तन किसी अन्य घटक के अस्तित्व या प्रदर्शन को कम से कम प्रभावित करते हैं।
 * 2) जिसमें इसके प्रत्येक सॉफ़्टवेयर घटक के पास अन्य अलग-अलग घटकों की परिभाषाओं के बारे में बहुत कम या कोई ज्ञान नहीं होता है, या इसका उपयोग करता है। उपक्षेत्रों में कक्षा (कंप्यूटर प्रोग्रामिंग) के  युग्मन (कंप्यूटर प्रोग्रामिंग), इंटरफेस, डेटा और सेवाएं सम्मिलित हैं। ढीला युग्मन तंग युग्मन के विपरीत है।

लाभ और हानि
शिथिल युग्मित प्रणाली में घटकों को वैकल्पिक कार्यान्वयन से बदला जा सकता है जो समान सेवाएं प्रदान करते हैं। शिथिल युग्मित प्रणाली में घटक एक ही मंच, प्रोग्रामिंग भाषा, ऑपरेटिंग सिस्टम या पर्यावरण के निर्माण के लिए कम विवश हैं।

यदि सिस्टम समय पर अलग हो जाते हैं, तो लेनदेन संबंधी अखंडता भी प्रदान करना कठिन होता है; अतिरिक्त समन्वय प्रोटोकॉल की आवश्यकता है। विभिन्न प्रणालियों में डेटा प्रतिकृति लूज कपलिंग (उपलब्धता में) प्रदान करती है, लेकिन डेटा स्थिरता (डेटा तुल्यकालन) को बनाए रखने में समस्या पैदा करती है।

एकीकरण में
व्यापक वितरित सिस्टम डिज़ाइन में ढीला युग्मन लेनदेन के उपयोग, संदेश-उन्मुख मिडलवेयर द्वारा प्रदान की गई पंक्तियों और इंटरऑपरेबिलिटी मानकों द्वारा प्राप्त किया जाता है।

चार प्रकार की स्वायत्तता, जो लूज कपलिंग को बढ़ावा देती हैं, हैं: संदर्भ स्वायत्तता, समय स्वायत्तता, स्वरूप स्वायत्तता, और मंच स्वायत्तता।

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

घटना-संचालित वास्तुकला का उद्देश्य ढीले युग्मन को बढ़ावा देना भी है।

युग्मन घटाने के तरीके
इंटरफ़ेस (कंप्यूटिंग) के ढीले युग्मन को एक मानक प्रारूप (जैसे XML या JSON) में डेटा प्रकाशित करके बढ़ाया जा सकता है।

पैरामीटर में मानक डेटा प्रकारों का उपयोग करके प्रोग्राम घटकों के बीच ढीले युग्मन को बढ़ाया जा सकता है। अनुकूलित डेटा प्रकार या ऑब्जेक्ट पास करने के लिए दोनों घटकों को कस्टम डेटा परिभाषा का ज्ञान होना आवश्यक है।

प्रमुख डेटा के लिए सेवा में दी गई जानकारी को कम करके सेवाओं के ढीले युग्मन को बढ़ाया जा सकता है। उदाहरण के लिए, सेवा जो पत्र भेजती है वह सबसे अधिक पुन: प्रयोज्य होती है जब केवल ग्राहक पहचानकर्ता पारित किया जाता है और सेवा के अंदर ग्राहक का पता प्राप्त किया जाता है। यह सेवाओं को अलग करता है क्योंकि सेवाओं को एक विशिष्ट क्रम में कॉल करने की आवश्यकता नहीं होती है (उदाहरण के लिए ग्राहक पता प्राप्त करें, पत्र भेजें)।

प्रोग्रामिंग में
युग्मन प्रत्यक्ष ज्ञान की उस मात्रा को संदर्भित करता है जो एक घटक को दूसरे घटक के पास होती है। कंप्यूटिंग में लूज कपलिंग की व्याख्या एनकैप्सुलेशन (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) और नॉन-एनकैप्सुलेशन के रूप में की जाती है।

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

यह एकीकृत मॉडलिंग भाषा आरेख है जो एक आश्रित वर्ग और ठोस वर्गों के सेट के बीच लूज कपलिंग का उदाहरण दिखाता है, जो आवश्यक व्यवहार प्रदान करता है:

तुलना के लिए, यह आरेख निर्भर वर्ग और प्रदाता के बीच मजबूत युग्मन के साथ वैकल्पिक डिज़ाइन को दिखाता है:



अन्य रूप
कोर मॉड्यूल ( कार्यात्मक प्रोग्रामिंग देखें) वस्तुओं के रूप में, कार्यों के रूप में या कार्यों की धारणा वाली कंप्यूटर प्रोग्रामिंग भाषा शिथिल युग्मित प्रोग्रामिंग के उत्कृष्ट उदाहरण प्रदान करती है। कार्यात्मक भाषाओं में निरंतरता, [[ क्लोजर (कंप्यूटर प्रोग्रामिंग) ]], या जेनरेटर के पैटर्न होते हैं। क्लोजर और लिस्प (प्रोग्रामिंग भाषा) को फंक्शन प्रोग्रामिंग लैंग्वेज के उदाहरण के रूप में देखें। स्मॉलटाक और रूबी (प्रोग्रामिंग भाषा) जैसी ऑब्जेक्ट-ओरिएंटेड भाषाओं में कोड ब्लॉक होते हैं, जबकि एफिल (प्रोग्रामिंग लैंग्वेज) में एजेंट होते हैं। मूल विचार ऑब्जेक्टिफाई (ऑब्जेक्ट के रूप में एनकैप्सुलेट) करना है, जो किसी अन्य एनक्लोजिंग कॉन्सेप्ट से स्वतंत्र एक फंक्शन है (उदाहरण के लिए किसी ऑब्जेक्ट फंक्शन को एनक्लोजिंग ऑब्जेक्ट के किसी भी प्रत्यक्ष ज्ञान से अलग करना)। वस्तुओं के रूप में कार्यों में और अंतर्दृष्टि के लिए प्रथम श्रेणी के कार्य देखें, जो प्रथम श्रेणी के कार्य के एक रूप के रूप में योग्यता प्राप्त करता है।

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

फ़ोन नंबर एक उत्कृष्ट एनालॉग हैं और आसानी से इस डिकूप्लिंग की डिग्री का वर्णन कर सकते हैं।

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

उदाहरण को एक कदम आगे बढ़ाते हुए, कॉल करने वाला कॉल प्राप्त करने वाले से कह सकता है, कृपया मेरे लिए यह काम करें। जब आप समाप्त कर लें तो मुझे इस नंबर पर वापस कॉल करें। रिसीवर को दिया जाने वाला 'नंबर' कॉल-बैक कहलाता है। फिर, इस कार्यात्मक वस्तु की ढीली युग्मन या विघटित प्रकृति स्पष्ट है। कॉल-बैक का रिसीवर इस बात से अनभिज्ञ होता है कि क्या और किसे कॉल किया जा रहा है। वह केवल यह जानती है कि वह कॉल कर सकती है और कॉल करने का समय स्वयं तय करती है। वास्तव में, कॉल-बैक उस व्यक्ति के लिए भी नहीं हो सकता है जिसने कॉल-बैक प्रदान किया था। इस स्तर का संकेत यह है जो कार्य वस्तुओं को शिथिल युग्मित कार्यक्रमों को प्राप्त करने के लिए एक उत्कृष्ट तकनीक बनाता है।

शिथिल युग्मित घटकों के बीच संचार तंत्र की वनस्पति पर आधारित हो सकता है, जैसे उल्लिखित अतुल्यकालिक संचार शैली या तुल्यकालिक संदेश गुजरने की शैली।

डेटा तत्व युग्मन मापना
ढीले युग्मन की डिग्री को डेटा तत्वों में परिवर्तन की संख्या को ध्यान में रखते हुए मापा जा सकता है जो भेजने या प्राप्त करने वाली प्रणालियों में हो सकता है और यह निर्धारित कर सकता है कि क्या कंप्यूटर अभी भी सही तरीके से संचार करना जारी रखेंगे। इन परिवर्तनों में आइटम सम्मिलित हैं जैसे:
 * 1) संदेशों में नए डेटा तत्व जोड़ना
 * 2) डेटा तत्वों का क्रम बदलना
 * 3) डेटा तत्वों के नाम बदलना
 * 4) डेटा तत्वों की संरचना बदलना
 * 5) डेटा तत्वों को छोड़ना

यह भी देखें

 * कैस्केडिंग विफलता
 * सामंजस्य (कंप्यूटर विज्ञान)
 * Connascence (कंप्यूटर प्रोग्रामिंग)
 * युग्मन (कंप्यूटर विज्ञान)
 * उद्यम सेवा बस
 * अप्लिकेशन प्रोग्रामिंग अंतरफलक
 * डेमेटर का नियम
 * चिंताओ का विभाजन
 * सेवा उन्मुख संरचना
 * अंतरिक्ष-आधारित वास्तुकला (SBA)

इस पेज में लापता आंतरिक लिंक की सूची

 * सॉफ्टवेयर घटक
 * वर्ग (कंप्यूटर प्रोग्रामिंग)
 * लेन-देन की अखंडता
 * डेटा संगतता
 * वितरित प्रणाली
 * संदेश उन्मुख मिडलवेयर
 * सेवा उन्मुख संरचना
 * डेटा केंद्रित
 * छोटी बात
 * एफिल (प्रोग्रामिंग भाषा)
 * प्रथम श्रेणी समारोह
 * विस्तार
 * ज्ञान (कंप्यूटर प्रोग्रामिंग)
 * डेमेटर का कानून
 * अंतरिक्ष आधारित वास्तुकला