क्या पदानुक्रम सीएलआर खुला-स्रोत है?


9

बिल्ट-इन पदानुक्रम एक सीएलआर है जो एक कुशल बाइनरी फॉर्म में पथ संग्रहीत करता है, और अन्य उपयोगी कार्यक्षमता प्रदान करता है।

दुर्भाग्य से, इस बात की सीमा है कि प्रतिनिधित्व किए गए मार्ग कितने गहरे हो सकते हैं, और यह बाइनरी ट्री के लिए ~ 1427 है। मैं एक जटिल मौजूदा एप्लिकेशन के लिए उस सीमा को बढ़ाना चाहूंगा जो इस सीमा को हिट करने के लिए बाध्य है। मैं प्रकार के इंटरफ़ेस को बदलना नहीं चाहता। मुझे विश्वास नहीं है कि मैं सभी कोड में सूक्ष्म बगों को पेश किए बिना टाइप के इंटरफ़ेस को बदल सकता हूं, जिसके परिणामस्वरूप बदलना होगा।

मैं (सिद्धांत रूप में) एक "द्विअर्थीवाद" सीएलआर यूडीटी बना सकता हूं जो पदानुक्रम के समान इंटरफ़ेस को लागू करता है, लेकिन केवल बाइनरी पेड़ों का समर्थन करता है। 900 बाइट सीमा के अंदर रहते हुए मुझे ~ 7000 की गहराई मिलनी चाहिए। यकीन नहीं है कि कितना बड़ा उपक्रम होगा।

क्या इस पदानुक्रम सीएलआर का स्रोत कहीं उपलब्ध है, ताकि मैं इसके आधार पर अपना स्वयं का निर्माण कर सकूं जो गहरी संरचनाओं का समर्थन करता है?


मुझे यह जानने में दिलचस्पी थी कि आप क्या मॉडलिंग कर रहे हैं। क्या आप विस्तार से बता सकते हैं?
w याकूब

जवाबों:


6

बहुत से .NET सोर्स कोड उपलब्ध है, और इसका बहुत सारा ओपन सोर्स है, हालाँकि विभिन्न लाइसेंस के तहत। अभी भी अन्य कोड उपलब्ध है, लेकिन केवल संदर्भ उद्देश्यों के लिए और आपके कोड में उपयोग नहीं किया जा सकता है।

यह देखते हुए कि निर्धारित लक्ष्य है:

मैं एक जटिल मौजूदा एप्लिकेशन के लिए उस सीमा को बढ़ाना चाहूंगा जो इस सीमा को हिट करने के लिए बाध्य है। मैं प्रकार के इंटरफ़ेस को बदलना नहीं चाहता। मुझे विश्वास नहीं है कि मैं सभी कोड में सूक्ष्म बगों को पेश किए बिना टाइप के इंटरफ़ेस को बदल सकता हूं, जिसके परिणामस्वरूप बदलना होगा।

यदि इरादा वर्तमान पदानुक्रम प्रकार को अपडेट करने का है, तो कोड ओपन सोर्स है या नहीं, क्योंकि यह अप्रासंगिक है, भले ही आप समग्र प्रणाली में किसी भी परिवर्तन को लागू करने में सक्षम नहीं होंगे: भले ही आप विधानसभा की जगह ले सकें SQL सर्वर, आप इसे एक ही प्रमाणपत्र / निजी कुंजी के साथ साइन नहीं कर पाएंगे और इसलिए यह सिस्टम द्वारा उपयोग नहीं किया जाएगा।

हालाँकि, आप अपनी कार्यक्षमता बनाने के लिए अपनी SQLCLR उपयोगकर्ता-निर्धारित प्रकार (UDT) का निर्माण कर सकते हैं।

फिर भी , चूंकि यह .NET फ्रेमवर्क की बेहतर समझ प्राप्त करने से संबंधित है:

आप यहां अधिकांश सामग्री का स्रोत कोड देख सकते हैं: https://github.com/Microsoft/referencesource

और यहां तक ​​कि अधिक सामान: https://github.com/dotnet/corefx

ऊपर उल्लिखित दोनों रिपॉजिटरी ओपन सोर्स हैं और ज्यादातर एमआईटी लाइसेंस के तहत शासित होते हैं, हालांकि आपको प्रत्येक स्थान में लाइसेंसिंग की जानकारी की समीक्षा करने की आवश्यकता होती है, और कभी-कभी विभिन्न फ़ोल्डरों में, निश्चित होने के लिए।

शेष कोड का एक बहुत कुछ यहाँ पाया जा सकता है: http://referencesource.microsoft.com/

ReferenceSource.Microsoft.com पर पाया गया कोड (ऊपर दिया गया लिंक) जो पहले दो लिंक पर भी नहीं मिला है (जो ओपन सोर्स हैं) ओपन सोर्स नहीं है और इसके बजाय MICROSOFT REFERENCE SOURCE LURENSE (MS-RSL) द्वारा शासित है , संबंधित भाग ("वाक्यांश के उपयोग की परिभाषा के बाद" संदर्भ उपयोग की परिभाषा डालने के लिए हल्के से संपादित किया जा रहा है):

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

हालाँकि, ऐसा प्रतीत होता है कि Microsoft.SqlServer.*नामस्थान उन स्थानों में से किसी में उपलब्ध नहीं है। जिसका अर्थ है कि प्रश्न का सरल उत्तर है: "HierarchyID Open Source?" है: नहीं

यदि इच्छा स्रोत कोड को देखने की है, तो आपको DLL - Microsoft.SqlServer.Types.dll - को एक डिकम्पॉइलर के साथ खोलना होगा । लेकिन, वहाँ से निपटने के लिए संभावित कानूनी और / या नैतिक मुद्दे हैं। यह है स्वामित्व कोड तो वहाँ दो मुख्य बिंदुओं पर विचार करने के लिए कर रहे हैं:

  • जैसा कि SQL सर्वर एंड-यूज़र लाइसेंस एग्रीमेंट (EULA) में कहा गया है (और @ टॉमवी के उत्तर में उद्धृत किया गया है ), आप केवल " रिवर्स इंजीनियर, डिकम्पाइल या असम्बद्ध " गैर-प्रदान किए गए कोड "को केवल उस सीमा तक लागू कर सकते हैं, जिस पर कानून लागू होता है " । मतलब कि कुछ लोगों के लिए, ऐसा करना पूरी तरह से कानूनी है, लेकिन अन्य लोगों के लिए, इतना नहीं। तो आप एक स्थानीय बौद्धिक संपदा वकील से परामर्श करना चाह सकते हैं।

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


4
प्रश्न लिखते समय मैंने कानूनी पहलू के बारे में नहीं सोचा था। मुझे लगता है, जाने का एकमात्र कानूनी तरीका एक साफ कमरे का कार्यान्वयन है।
तरणाय कालमन

3
हाय सोलोमन, मैं सोच रहा हूँ कि आप कैसा महसूस करेंगे अगर हमने आपके (उत्कृष्ट) पुस्तकालयों को
अपघटित

1
असेंबली को बदलने की असंभवता के बारे में आपके संपादन का जवाब देना: मैं असेंबली को बदलना नहीं चाहता। मैं अपने प्रकार के साथ ठीक हूं, एक अलग नाम है। मैं (अभी तक?) एक अलग प्रकार के नाम पर माइग्रेट करने में कठिनाई नहीं देखता हूं (मेरे सीमित बाइनरी ट्री उपयोग के मामले के लिए) एक ही व्यवहार है। मुझे सभी संदर्भों को संग्रहीत प्रक्रियाओं में टाइप करने के लिए बदलना होगा (लेकिन यह प्रबंधनीय है), और ALTER (शायद बनाएँ // UPDATE / DROP) कुछ कॉलम, लेकिन यह इसके बारे में है।
तर्ने कल्मन

1
@TomV ऐसा करने के लिए धन्यवाद देने के लिए एक अच्छा बिंदु है। मैं इस मुद्दे पर आगे और पीछे जाता हूं, इसके दोनों तरफ और स्वाभाविक रूप से जिज्ञासु व्यक्ति हूं। कोड चाहने के अलग-अलग कारण हैं (डिबगिंग, एक तकनीक सीखना, कॉपी / चोरी करना आदि), कुछ ठीक है। लोगों ने पूछा है कि SQL # को कैसे विघटित किया जाए और यह जानते हुए भी कि यह कानूनी हो सकता है, और गोपनीयता से अधिक नवाचार पर भरोसा करते हुए, मुझे याद है कि इसकी सराहना नहीं करना। मुझे लगता है कि मैं जल्दबाजी में जवाब दे रहा था, "कैसे" पहलू पर ध्यान केंद्रित कर रहा हूं, लेकिन स्थिति के विभिन्न पहलुओं के साथ निर्देशों की जगह मेरे जवाब को अपडेट किया है।
सोलोमन रटज़की

6

जैसा कि srutzky ने आपको अपने उत्तर में कुछ स्थानों पर इंगित किया जहां Microsoft का कुछ स्रोत कोड उपलब्ध है और आपके द्वारा अनुरोधित फ़ंक्शन सूचीबद्ध नहीं है, मुझे लगता है कि हम यह निष्कर्ष निकाल सकते हैं कि स्रोत कोड किसी भी खुले स्रोत लाइसेंस के तहत उपलब्ध नहीं है, और यह ऐसा दिखता है आपका प्रश्न इसके बारे में खुला स्रोत होने के बारे में था, स्रोत कोड को देखने में सक्षम नहीं होने के बारे में ।

यह देखते हुए कि EULA निम्नलिखित बताता है:

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

इसलिए मुझे डर है कि आप तर्क को लागू करने के लिए खुद बचे रहेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.