अस्वीकरण: मैं रोज़लिन टीम पर माइक्रोसॉफ्ट के लिए काम करता हूं।
CodeDom रोसलिन का पूर्वाभ्यास है, लेकिन केवल मामूली संबंधित है। अनिवार्य रूप से, कोडडॉम डिजाइनरों (ला ला WinForms) का समर्थन करने के लिए .NET 1.0 में जोड़ा गया कोड उत्पन्न करने के लिए एक सरल और (कुछ हद तक) लंगेज अज्ञेयवादी तरीका है। चूंकि कोडडॉम एक एकीकृत मॉडल प्रदान करने का प्रयास था जो सी #, वीबी और अन्य भाषाओं में कोड उत्पन्न कर सकता है, इसमें किसी भी भाषा के साथ उच्च निष्ठा नहीं है (यही कारण है कि आप कोडडॉम के साथ स्विच स्टेटमेंट नहीं बना सकते हैं)। CSharpCodeProvider.CompileAssemblyFromSource बस csc.exe निष्पादित करने के आसपास एक रैपर है।
रोज़लिन एक पूरी तरह से अलग जानवर है। यह प्रबंधित कोड का उपयोग करके ग्राउंड अप से सी # और वीबी कंपाइलर्स दोनों का पुनः लिखना है - सी # में सी # और वीबी में वीबी (csc.exe के संस्करण और vbc.exe जो आज जहाज को मूल कोड में लिखा गया है)। प्रबंधित कोड में उन्हें बनाने का लाभ यह है कि उपयोगकर्ता असली कंपाइलर को .NET अनुप्रयोगों से पुस्तकालयों के रूप में संदर्भित कर सकते हैं (कोई रैपर आवश्यक नहीं)।
संकलक पाइप लाइन के प्रत्येक घटक निर्माण करते हैं, हम शीर्ष पर सार्वजनिक एपीआई उजागर किया है:
- पार्सर -> सिंटेक्स ट्री एपीआई
- प्रतीक मेज/मेटाडाटा आयात -> प्रतीक एपीआई
- बाइंडर -> बाध्यकारी और फ्लो विश्लेषण एपीआई
- आईएल Emitter -> उत्सर्जन एपीआई
रोसलिन एक परिष्कृत सी # एक के रूप में इस्तेमाल किया जा सकता एनडी वीबी स्रोत कोड जनरेटर, लेकिन वह जगह है जहां CodeDom की समानता समाप्त होती है। Roslyn कंपाइलर एपीआई कोड का विश्लेषण करने के लिए इस्तेमाल किया जा सकता है, अर्थपूर्ण विश्लेषण प्रदर्शन, संकलित और कोड गतिशील रूप से मूल्यांकन आदि।
कंपाइलर्स के अतिरिक्त, रोज़लीन टीम भी सार्वजनिक स्टूडियो एपीआई के शीर्ष पर विजुअल स्टूडियो सी # और वीबी आईडीई सुविधाओं का पुनर्निर्माण कर रही है। इसलिए, कंपाइलर एपीआई विजुअल स्टूडियो डिज़ाइन-टाइम टूल्स बनाने के लिए पर्याप्त समृद्ध हैं, जैसे इंटेलिसेन्स और एक्सट्रैक्ट विधि रीफैक्टरिंग। इसके अलावा, कंपाइलर के ऊपर परतों पर, Roslyn उच्च स्तरीय विश्लेषण या डेटा परिवर्तन के लिए सेवाएं प्रदान करता है। उदाहरण के लिए, सी # और वीबी स्वरूपण नियमों का उपयोग करके कोड स्वरूपण के लिए सेवाएं हैं, या किसी समाधान के भीतर किसी विशेष प्रतीक के सभी संदर्भ ढूंढना।
वास्तव में, केवल एक कोडडॉम पर रोज़लिन का विशेष लाभ नहीं है। जहां कोडडॉम ने एक बहुत ही विशिष्ट कोड पीढ़ी की आवश्यकता को भर दिया, रोसलीन आपको पूरी तरह से किसी भी प्रकार के सी # या वीबी भाषा उपकरण के बारे में सोचने के लिए एक फ्रेमवर्क प्रदान करके पूरी भाषा टूलींग स्पेस का सामना कर रहा है, जिसे आप सोच सकते हैं।
स्रोत
2011-10-21 20:06:08
@ डस्टिन: क्या रोज़लिन अन्य भाषाओं का समर्थन कर रहे हैं? जावास्क्रिप्ट (.NET), उदाहरण के लिए? – dbarros
@ डस्टिन: यह एक पूर्ण आईडीई अनुभव बनाने के लिए एकदम सही है जो मेरे संगठन में कोड गुणवत्ता को लागू कर सकता है, हालांकि मुझे मैन्युअल कोड समीक्षा का पूर्ण प्रतिस्थापन नहीं दिख रहा है, लेकिन मुझे गुणवत्ता में काफी वृद्धि दिखाई देती है। शीघ्र! –
यह बहुत अच्छा होगा अगर किसी ने कोडडॉम को कोड में कनवर्ट करने के लिए पहले से ही रोज़लिन आधारित टूल बनाया है जो Roslyn's SyntaxFactory का उपयोग करता है ... (आंशिक रूप से क्योंकि नेट कोर में रोज़लिन है लेकिन कोई कोडडॉम नहीं है और मैं चारों ओर एक lib का उपयोग कर रहा हूं CodeDom) – Emyr