मुझे लगता है कि यह प्रश्न में उल्लिखित उसी सी # डेटाबेस प्रोजेक्ट से संबंधित है।
यह तकनीकी रूप से संभव सी/सी ++ या किसी अन्य भाषा में एक संपूर्ण लेखन परतों को लागू करने के लिए है। और यह तकनीकी रूप से संभव है सी # में सब कुछ है। मैं वर्तमान में ऐसे एप्लिकेशन पर काम कर रहा हूं जो कुछ उच्च प्रदर्शन वाले निम्न स्तर की सामग्री और व्यापार तर्क और ऊपरी स्तर प्रबंधन के लिए सी # के लिए अप्रबंधित कोड का उपयोग करता है।
हालांकि, कार्य की जटिलता को को कम करके कम नहीं किया जाएगा। ऐसा करने का सामान्य तरीका है, अनुबंध डिज़ाइन करना है कि दोनों पार्टियां समझ सकें। अनुबंध प्रबंधित भाषा से अवगत कराया जाएगा और प्रबंधित भाषा देशी एप्लिकेशन को कॉल ट्रिगर करेगी। यदि आपने कभी सी #+ से सी ++ विधि को कॉल करने का प्रयास किया है तो आपको विचार मिलेगा ... इसके अलावा अप्रबंधित कोड के लिए प्रत्येक कॉल में काफी महत्वपूर्ण प्रदर्शन ओवरहेड है, जो निम्न स्तर के प्रदर्शन के पूरे विचार को मार सकता है।
यदि आप वास्तव में उच्च-प्रदर्शन संबंधपरक डेटाबेस में रूचि रखते हैं, तो एकल निम्न स्तर की भाषा का उपयोग करें।
यदि आप एक बेवकूफ होना चाहते हैं, लेकिन डेटाबेस के पूरी तरह से कार्यान्वित कार्यान्वयन करना चाहते हैं, तो बस सी # का उपयोग करें। इन दो भाषाओं को तब तक न मिलाएं जब तक कि आप जटिलता को पूरी तरह समझ नहीं लेते। रेवेन डीबी देखें - एक दस्तावेज़ आधारित नोएसक्यूएल डेटाबेस जो पूरी तरह से सी # में बनाया गया है।
मेरी अप्रबंधित सी # कोड आईएल के संकलन करेंगे और CLR पर चलाया जाना?
नहीं, के रूप में अप्रबंधित सी # ऐसी कोई बात नहीं है। सी # कोड हमेशा आईएल कोड में संकलित किया जाएगा और सीएलआर द्वारा निष्पादित किया जाएगा। यह प्रबंधित कोड कॉलिंग अप्रबंधित कोड का मामला है। अप्रबंधित कोड कई भाषाओं सी/सी ++/असेंबली इत्यादि में लागू किया जा सकता है, लेकिन सीएलआर को इस कोड में क्या हो रहा है इसके बारे में कोई जानकारी नहीं होगी।
टिप्पणी से अपडेट करें। एक उपकरण (ngen.exe) है जो सी # को मूल आर्किटेक्चर विशिष्ट कोड में सीधे संकलित कर सकता है। यह टूल जेआईटी-संकलन चरण को हटाकर और देशी कोड सीधे निष्पादन योग्य छवि या पुस्तकालय में डालकर प्रबंधित अनुप्रयोग के प्रदर्शन को बेहतर बनाने के लिए डिज़ाइन किया गया है। हालांकि, यह कोड अभी भी सीएलआर होस्ट द्वारा "प्रबंधित" है - मेमोरी आवंटन और संग्रह, प्रबंधित थ्रेडिंग, एप्लिकेशन डोमेन, अपवाद हैंडलिंग, सुरक्षा और अन्य सभी पहलुओं को अभी भी सीएलआर द्वारा नियंत्रित किया जाता है। तो भले ही सी # तकनीकी रूप से देशी कोड में संकलित किया जा सकता है, यह कोड स्टैंडअलोन मूल छवि के रूप में नहीं चल रहा है।
कैसे काम करता है?
प्रबंधित कोड अप्रबंधित कोड के साथ interoperate। ऐसा करने के कुछ तरीके हैं:
- नेट इंटरऑप के माध्यम से कोड के माध्यम से। यह अपेक्षाकृत तेज़ है लेकिन कोड में थोड़ा बदसूरत दिखता है (साथ ही इसे बनाए रखना/परीक्षण करना मुश्किल है) (good article with C#/C/Assembly samples)
- एक बहुत धीमी दृष्टिकोण, लेकिन अन्य भाषाओं के लिए अधिक खुला: वेब वार्सेस (एसओएपी, डब्ल्यूएस, आरईएसटी और कंपनी), क्यूइंग (जैसे एमएसएमक्यू, एनएस सर्विसबस और अन्य), भी (संभवतः) इंटरप्रोसेस संचार। तो अप्रबंधित प्रक्रिया एक छोर पर बैठती है और एक प्रबंधित अनुप्रयोग दूसरे पर बैठता है।
आप सी # में अप्रबंधित कोड लिखने का जिक्र करते हैं। मुझे लगता है कि आप का मतलब है कि यह * सी # से * कॉलिंग * अप्रबंधित कोड * से अलग है। यदि ऐसा है, तो मैं आपके मतलब का एक उदाहरण देखना चाहता हूं। –
ओलेक्सि के उत्तर के आधार पर, जो मैं ढूंढ रहा था वह बस अस्तित्व में नहीं है। इस प्रकार, मैं वास्तव में आपको एक उदाहरण दिखाने में सक्षम नहीं हूं। 'अप्रबंधित सी #' प्रश्न के बारे में एक स्पष्ट उत्तर के लिए – kd8azz