लूस कपलिंग: Difference between revisions

From Vigyanwiki
m (Abhishek moved page ढीला युग्मन to लूस कपलिंग without leaving a redirect)
No edit summary
 
(20 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|System with weakly-associated components}}
{{Short description|System with weakly-associated components}}
{{Other uses|Loose coupling (disambiguation)}}
[[ कम्प्यूटिंग ]]और[[ सिस्टम डिजाइन |  सिस्टम डिजाइन]] में, एक शिथिल युग्मित प्रणाली है
[[ कम्प्यूटिंग ]] और [[ सिस्टम डिजाइन ]] में, एक शिथिल युग्मित प्रणाली एक है


# जिसमें घटक एक दूसरे के साथ कमजोर रूप से जुड़े हुए हैं (टूटने योग्य संबंध हैं), और इस प्रकार एक घटक में परिवर्तन किसी अन्य घटक के अस्तित्व या प्रदर्शन को कम से कम प्रभावित करते हैं।
# जिसमें घटक एक दूसरे के साथ कमजोर रूप से जुड़े हुए हैं (टूटने योग्य संबंध हैं), और इस प्रकार घटक में परिवर्तन किसी अन्य घटक के अस्तित्व या प्रदर्शन को कम से कम प्रभावित करते हैं।
# जिसमें इसके प्रत्येक सॉफ़्टवेयर घटक के पास अन्य अलग-अलग घटकों की परिभाषाओं के बारे में बहुत कम या कोई ज्ञान नहीं है, या इसका उपयोग करता है। उपक्षेत्रों में कक्षा (कंप्यूटर प्रोग्रामिंग) के [[ युग्मन (कंप्यूटर प्रोग्रामिंग) ]], इंटरफेस, डेटा और सेवाएं शामिल हैं।<ref>''Loosely Coupled: The Missing Pieces of Web Services'' by [[Doug Kaye]]</ref> ढीला युग्मन तंग युग्मन के विपरीत है।
# जिसमें इसके प्रत्येक सॉफ़्टवेयर घटक के पास अन्य अलग-अलग घटकों की परिभाषाओं के बारे में बहुत कम या कोई ज्ञान नहीं होता है, या इसका उपयोग करता है। उपक्षेत्रों में कक्षा (कंप्यूटर प्रोग्रामिंग) के [[ युग्मन (कंप्यूटर प्रोग्रामिंग) ]], इंटरफेस, डेटा और सेवाएं सम्मिलित हैं।<ref>''Loosely Coupled: The Missing Pieces of Web Services'' by [[Doug Kaye]]</ref> ढीला युग्मन तंग युग्मन के विपरीत है।


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


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


== एकीकरण में ==
== एकीकरण में ==
व्यापक वितरित सिस्टम डिज़ाइन में ढीला युग्मन लेनदेन के उपयोग, संदेश-उन्मुख मिडलवेयर द्वारा प्रदान की गई कतारों और इंटरऑपरेबिलिटी मानकों द्वारा प्राप्त किया जाता है।<ref>Pautasso C., Wilde E., [http://www2009.eprints.org/92/1/p911.pdf Why is the Web Loosely Coupled?], Proc. of WWW 2009</ref>
व्यापक वितरित सिस्टम डिज़ाइन में ढीला युग्मन लेनदेन के उपयोग, संदेश-उन्मुख मिडलवेयर द्वारा प्रदान की गई पंक्तियों और इंटरऑपरेबिलिटी मानकों द्वारा प्राप्त किया जाता है।<ref>Pautasso C., Wilde E., [http://www2009.eprints.org/92/1/p911.pdf Why is the Web Loosely Coupled?], Proc. of WWW 2009</ref>
चार प्रकार की स्वायत्तता, जो ढीली युग्मन को बढ़ावा देती हैं, हैं: [[ संदर्भ स्वायत्तता ]], समय स्वायत्तता, स्वरूप स्वायत्तता, और मंच स्वायत्तता।<ref>F. Leymann [http://esocc2016.eu/wp-content/uploads/2016/04/Leymann-Keynote-ESOCC-2016.pdf Loose Coupling and Architectural Implications] {{Webarchive|url=https://web.archive.org/web/20161002141057/http://esocc2016.eu/wp-content/uploads/2016/04/Leymann-Keynote-ESOCC-2016.pdf |date=2016-10-02 }}, ESOCC 2016 keynote</ref>
 
ढीला युग्मन सेवा-उन्मुख आर्किटेक्चर में एक वास्तु सिद्धांत और डिजाइन लक्ष्य है; लूज़ कपलिंग के ग्यारह रूप और उनके टाइट कपलिंग समकक्षों को इसमें सूचीबद्ध किया गया है:<ref>N. Josuttis, SOA in Practice. O'Reilly, 2007, {{ISBN|978-0-596-52955-0}}.</ref> * मध्यस्थ के माध्यम से शारीरिक संबंध,
चार प्रकार की स्वायत्तता, जो लूज कपलिंग को बढ़ावा देती हैं, हैं:[[ संदर्भ स्वायत्तता | संदर्भ स्वायत्तता]], समय स्वायत्तता, स्वरूप स्वायत्तता, और मंच स्वायत्तता।<ref>F. Leymann [http://esocc2016.eu/wp-content/uploads/2016/04/Leymann-Keynote-ESOCC-2016.pdf Loose Coupling and Architectural Implications] {{Webarchive|url=https://web.archive.org/web/20161002141057/http://esocc2016.eu/wp-content/uploads/2016/04/Leymann-Keynote-ESOCC-2016.pdf |date=2016-10-02 }}, ESOCC 2016 keynote</ref>
* [[ अतुल्यकालिक संचार ]] शैली,
 
* सरल सामान्य प्रकार केवल [[ डेटा मॉडल ]] में,
लूज कपलिंग सेवा-उन्मुख आर्किटेक्चर में एक वास्तु सिद्धांत और डिजाइन लक्ष्य है; लूज़ कपलिंग के ग्यारह रूप और उनके टाइट कपलिंग समकक्षों को इसमें सूचीबद्ध किया गया है:<ref>N. Josuttis, SOA in Practice. O'Reilly, 2007, {{ISBN|978-0-596-52955-0}}.</ref>
* मध्यस्थ के माध्यम से शारीरिक संबंध
*[[ अतुल्यकालिक संचार |अतुल्यकालिक संचार]] शैली,
* सरल सामान्य प्रकार केवल[[ डेटा मॉडल | डेटा मॉडल]] में,
* कमजोर प्रकार प्रणाली,
* कमजोर प्रकार प्रणाली,
* डेटा-केंद्रित और स्व-निहित संदेश,
* डेटा-केंद्रित और स्व-निहित संदेश,
* प्रक्रिया तर्क का वितरित नियंत्रण,
* प्रक्रिया तर्क का वितरित नियंत्रण,
* [[ डायनेमिक बाइंडिंग (कंप्यूटिंग) ]] (सेवा उपभोक्ताओं और प्रदाताओं की),
* [[ डायनेमिक बाइंडिंग (कंप्यूटिंग) |डायनेमिक बाइंडिंग (कंप्यूटिंग)]] (सेवा उपभोक्ताओं और प्रदाताओं की),
* मंच स्वतंत्रता,
* मंच स्वतंत्रता,
* सिस्टम-स्तरीय लेन-देन के बजाय व्यवसाय-स्तर का मुआवजा,
* सिस्टम-स्तरीय लेन-देन के अतिरिक्त व्यवसाय-स्तर का प्रतिदान,
* अलग-अलग समय पर तैनाती,
* अलग-अलग समय पर तैनाती,
* वर्जनिंग में निहित उन्नयन।
* वर्जनिंग में निहित उन्नयन।
[[ उद्यम सेवा बस ]] (ईएसबी) मिडलवेयर का आविष्कार कई आयामों में ढीले युग्मन को प्राप्त करने के लिए किया गया था;<ref>M. Keen et al, [http://www.redbooks.ibm.com/abstracts/sg246346.html?Open Patterns: Implementing an SOA using an Enterprise Service Bus], IBM, 2004</ref> हालांकि, अति-इंजीनियर और गलत तरीके से रखे गए ईएसबी का विपरीत प्रभाव भी हो सकता है और अवांछित तंग युग्मन और एक केंद्रीय वास्तुशिल्प हॉटस्पॉट बना सकता है।
[[ उद्यम सेवा बस | उद्यम सेवा बस]] (ईएसबी) मिडलवेयर का आविष्कार कई आयामों में ढीले युग्मन को प्राप्त करने के लिए किया गया था;<ref>M. Keen et al, [http://www.redbooks.ibm.com/abstracts/sg246346.html?Open Patterns: Implementing an SOA using an Enterprise Service Bus], IBM, 2004</ref> चूंकि, अति-इंजीनियर और गलत विधि से रखे गए ईएसबी का विपरीत प्रभाव भी हो सकता है और अवांछित तंग युग्मन और केंद्रीय वास्तुशिल्प हॉटस्पॉट बना सकता है।


[[ घटना-संचालित वास्तुकला ]] का उद्देश्य ढीले युग्मन को बढ़ावा देना भी है।<ref>[http://soa-eda.blogspot.com/2006/11/how-eda-extends-soa-and-why-it-is.html How EDA extends SOA and why it is important] Jack van Hoof</ref>
[[ घटना-संचालित वास्तुकला ]]का उद्देश्य ढीले युग्मन को बढ़ावा देना भी है।<ref>[http://soa-eda.blogspot.com/2006/11/how-eda-extends-soa-and-why-it-is.html How EDA extends SOA and why it is important] Jack van Hoof</ref>




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


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


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


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


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


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


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


[[File:Strong Coupling Example.JPG]]
[[File:Strong Coupling Example.JPG]]


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


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


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


उदाहरण को एक कदम आगे बढ़ाते हुए, कॉल करने वाला कॉल प्राप्त करने वाले से कह सकता है, कृपया मेरे लिए यह काम करें। जब आप समाप्त कर लें तो मुझे इस नंबर पर वापस कॉल करें। रिसीवर को दिया जाने वाला 'नंबर' कॉल-बैक कहलाता है। फिर, इस कार्यात्मक वस्तु की ढीली युग्मन या विघटित प्रकृति स्पष्ट है। कॉल-बैक का रिसीवर इस बात से अनभिज्ञ होता है कि क्या और किसे कॉल किया जा रहा है। वह केवल यह जानती है कि वह कॉल कर सकती है और कॉल करने का समय स्वयं तय करती है। हकीकत में, कॉल-बैक उस व्यक्ति के लिए भी नहीं हो सकता है जिसने कॉल-बैक प्रदान किया था। इस स्तर का संकेत वह है जो कार्य वस्तुओं को शिथिल युग्मित कार्यक्रमों को प्राप्त करने के लिए एक उत्कृष्ट तकनीक बनाता है।
उदाहरण को एक कदम आगे बढ़ाते हुए, कॉल करने वाला कॉल प्राप्त करने वाले से कह सकता है, कृपया मेरे लिए यह काम करें। जब आप समाप्त कर लें तो मुझे इस नंबर पर वापस कॉल करें। रिसीवर को दिया जाने वाला 'नंबर' कॉल-बैक कहलाता है। फिर, इस कार्यात्मक वस्तु की ढीली युग्मन या विघटित प्रकृति स्पष्ट है। कॉल-बैक का रिसीवर इस बात से अनभिज्ञ होता है कि क्या और किसे कॉल किया जा रहा है। वह केवल यह जानती है कि वह कॉल कर सकती है और कॉल करने का समय स्वयं तय करती है। वास्तव में, कॉल-बैक उस व्यक्ति के लिए भी नहीं हो सकता है जिसने कॉल-बैक प्रदान किया था। इस स्तर का संकेत यह है जो कार्य वस्तुओं को शिथिल युग्मित कार्यक्रमों को प्राप्त करने के लिए एक उत्कृष्ट तकनीक बनाता है।
 
शिथिल युग्मित घटकों के बीच संचार तंत्र की एक वनस्पति पर आधारित हो सकता है, जैसे उल्लिखित अतुल्यकालिक संचार शैली या [[ तुल्यकालिक संदेश गुजर रहा है ]] शैली <ref name="Mielle">{{cite web |last1=Mielle |first1=Grégoire |title=माइक्रोसर्विसेज पैटर्न: सिंक्रोनस बनाम एसिंक्रोनस कम्युनिकेशन|url=https://greeeg.com/issues/microservices-patterns-synchronous-vs-asynchronous |website=माइक्रोसर्विसेज पैटर्न: सिंक्रोनस बनाम एसिंक्रोनस कम्युनिकेशन|publisher=greeeg |access-date=18 February 2022}}</ref>


 
शिथिल युग्मित घटकों के बीच संचार तंत्र की वनस्पति पर आधारित हो सकता है, जैसे उल्लिखित अतुल्यकालिक संचार शैली या [[ तुल्यकालिक संदेश गुजर रहा है |तुल्यकालिक संदेश गुजरने की]] शैली।<ref name="Mielle">{{cite web |last1=Mielle |first1=Grégoire |title=माइक्रोसर्विसेज पैटर्न: सिंक्रोनस बनाम एसिंक्रोनस कम्युनिकेशन|url=https://greeeg.com/issues/microservices-patterns-synchronous-vs-asynchronous |website=माइक्रोसर्विसेज पैटर्न: सिंक्रोनस बनाम एसिंक्रोनस कम्युनिकेशन|publisher=greeeg |access-date=18 February 2022}}</ref>
=== [[ डेटा तत्व ]] युग्मन मापना ===
=== डेटा तत्व युग्मन मापना ===
ढीले युग्मन की डिग्री को डेटा तत्वों में परिवर्तन की संख्या को ध्यान में रखते हुए मापा जा सकता है जो भेजने या प्राप्त करने वाली प्रणालियों में हो सकता है और यह निर्धारित कर सकता है कि क्या कंप्यूटर अभी भी सही ढंग से संचार करना जारी रखेंगे। इन परिवर्तनों में आइटम शामिल हैं जैसे:
ढीले युग्मन की डिग्री को डेटा तत्वों में परिवर्तन की संख्या को ध्यान में रखते हुए मापा जा सकता है जो भेजने या प्राप्त करने वाली प्रणालियों में हो सकता है और यह निर्धारित कर सकता है कि क्या कंप्यूटर अभी भी सही विधि से संचार करना जारी रखेंगे। इन परिवर्तनों में आइटम सम्मिलित हैं जैसे:
# संदेशों में नए डेटा तत्व जोड़ना
# संदेशों में नए डेटा तत्व जोड़ना
# डेटा तत्वों का क्रम बदलना
# डेटा तत्वों का क्रम बदलना
Line 73: Line 73:
* [[ कैस्केडिंग विफलता ]]
* [[ कैस्केडिंग विफलता ]]
* [[ सामंजस्य (कंप्यूटर विज्ञान) ]]
* [[ सामंजस्य (कंप्यूटर विज्ञान) ]]
* Connascence (कंप्यूटर प्रोग्रामिंग)
* सहजता (कंप्यूटर प्रोग्रामिंग)
* [[ युग्मन (कंप्यूटर विज्ञान) ]]
* [[ युग्मन (कंप्यूटर विज्ञान) ]]
* [[ उद्यम सेवा बस ]]
* [[ उद्यम सेवा बस ]]
Line 83: Line 83:




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


{{Software quality}}
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[श्रेणी:उद्यम अनुप्रयोग एकीकरण]]
[[श्रेणी: सेवा-उन्मुख (बिजनेस कंप्यूटिंग)]]
[[श्रेणी: प्रोग्रामिंग सिद्धांत]]
[[श्रेणी: सॉफ्टवेयर गुणवत्ता]]
 
 
[[Category: Machine Translated Page]]
[[Category:Created On 30/12/2022]]
[[Category:Created On 30/12/2022]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates using TemplateData]]
[[Category:Webarchive template wayback links]]

Latest revision as of 12:20, 2 November 2023

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

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

लाभ और हानि

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

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

एकीकरण में

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

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

लूज कपलिंग सेवा-उन्मुख आर्किटेक्चर में एक वास्तु सिद्धांत और डिजाइन लक्ष्य है; लूज़ कपलिंग के ग्यारह रूप और उनके टाइट कपलिंग समकक्षों को इसमें सूचीबद्ध किया गया है:[4]

  • मध्यस्थ के माध्यम से शारीरिक संबंध
  • अतुल्यकालिक संचार शैली,
  • सरल सामान्य प्रकार केवल डेटा मॉडल में,
  • कमजोर प्रकार प्रणाली,
  • डेटा-केंद्रित और स्व-निहित संदेश,
  • प्रक्रिया तर्क का वितरित नियंत्रण,
  • डायनेमिक बाइंडिंग (कंप्यूटिंग) (सेवा उपभोक्ताओं और प्रदाताओं की),
  • मंच स्वतंत्रता,
  • सिस्टम-स्तरीय लेन-देन के अतिरिक्त व्यवसाय-स्तर का प्रतिदान,
  • अलग-अलग समय पर तैनाती,
  • वर्जनिंग में निहित उन्नयन।

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

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


युग्मन घटाने के तरीके

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

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

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

प्रोग्रामिंग में

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

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

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

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

Strong Coupling Example.JPG

अन्य रूप

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

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

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

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

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

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

डेटा तत्व युग्मन मापना

ढीले युग्मन की डिग्री को डेटा तत्वों में परिवर्तन की संख्या को ध्यान में रखते हुए मापा जा सकता है जो भेजने या प्राप्त करने वाली प्रणालियों में हो सकता है और यह निर्धारित कर सकता है कि क्या कंप्यूटर अभी भी सही विधि से संचार करना जारी रखेंगे। इन परिवर्तनों में आइटम सम्मिलित हैं जैसे:

  1. संदेशों में नए डेटा तत्व जोड़ना
  2. डेटा तत्वों का क्रम बदलना
  3. डेटा तत्वों के नाम बदलना
  4. डेटा तत्वों की संरचना बदलना
  5. डेटा तत्वों को छोड़ना

यह भी देखें


संदर्भ

  1. Loosely Coupled: The Missing Pieces of Web Services by Doug Kaye
  2. Pautasso C., Wilde E., Why is the Web Loosely Coupled?, Proc. of WWW 2009
  3. F. Leymann Loose Coupling and Architectural Implications Archived 2016-10-02 at the Wayback Machine, ESOCC 2016 keynote
  4. N. Josuttis, SOA in Practice. O'Reilly, 2007, ISBN 978-0-596-52955-0.
  5. M. Keen et al, Patterns: Implementing an SOA using an Enterprise Service Bus, IBM, 2004
  6. How EDA extends SOA and why it is important Jack van Hoof
  7. Mielle, Grégoire. "माइक्रोसर्विसेज पैटर्न: सिंक्रोनस बनाम एसिंक्रोनस कम्युनिकेशन". माइक्रोसर्विसेज पैटर्न: सिंक्रोनस बनाम एसिंक्रोनस कम्युनिकेशन. greeeg. Retrieved 18 February 2022.