एप्लिकेशन डोमेन

एक एप्लिकेशन डोमेन एक तंत्र है (एक ऑपरेटिंग सिस्टम में एक प्रक्रिया (कंप्यूटिंग) के समान) का उपयोग सामान्य भाषा अवसंरचना (CLI) के भीतर निष्पादित सॉफ़्टवेयर अनुप्रयोगों को एक दूसरे से अलग करने के लिए किया जाता है ताकि वे एक दूसरे को प्रभावित न करें। प्रत्येक एप्लिकेशन डोमेन का अपना वर्चुअल पता स्थान  होता है, जो उस एड्रेस स्पेस का उपयोग करके एप्लिकेशन डोमेन के लिए संसाधन (प्रोग्रामिंग) करता है।

.NET Core और .NET 5+ में एक ही प्रक्रिया में कई एप्लिकेशन डोमेन बनाना संभव नहीं है।

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

इस मायने में, एक सीएलआई एक मिनी-ऑपरेटिंग सिस्टम की तरह है। यह एक एकल प्रक्रिया चलाता है जिसमें कई उप-प्रक्रियाएँ या अनुप्रयोग डोमेन होते हैं।

एप्लिकेशन डोमेन का लाभ यह है कि कई एप्लिकेशन डोमेन चलाने के लिए कम संसाधनों की आवश्यकता हो सकती है, जैसे कि मेमोरी, कई ऑपरेटिंग सिस्टम प्रक्रियाओं को चलाने की तुलना में। डोमेन के बीच संचार के लिए अभी भी मार्शलिंग की आवश्यकता होती है, इसलिए ओवरहेड्स एक ही डोमेन के भीतर संचार करने की तुलना में कई प्रक्रियाओं का उपयोग करने के करीब हो सकते हैं।

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

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

संदर्भ

 * Microsoft Developer Network page on application domains
 * Unmanaged callbacks across AppDomains