java मुझे ईएमएफ का उपयोग क्यों करना चाहिए?




xsd eclipse-emf (3)

अगर आपका एकमात्र हित पीओओओ की पीढ़ी है, तो मैं मानता हूं कि ईएमएफ के साथ ऐसा करने के लिए कई विकल्प हैं।

हालांकि, जावा पीढ़ी सिर्फ ईएमएफ का पहला आवेदन था। अब ईएमएफ-आधारित ईक्लिपस प्लग-इन की एक बड़ी संख्या है जो आपके ईएमएफ मॉडलों को हेरफेर करने के लिए बहुत सी कार्यक्षमताएं देती है (क्वेरी, मान्य, ट्रांसफ़ॉर्म, ...)

ईएमएफ पर सरकारी ग्रहण परियोजनाओं की सूची के लिए एक्लिप्स मॉडलिंग प्रोजेक्ट देखें।

साथ ही, एसीएलएलओ पर एक नज़र डालें ताकि ईएमएफ मॉडल (जावा, पीएचपी, ... के लिए) से उनके टेम्पलेट-आधारित पीढ़ी के दृष्टिकोण की लचीलेपन को देखा जा सके।

मैंने ईएमएफ के बारे में कुछ ट्यूटोरियल पढ़ा है और मुझे अभी भी आश्चर्य है कि मुझे इसका उपयोग क्यों करना चाहिए

अब तक, मैं अपने पॉजो को एक्सएसडी स्कीमा + जेएक्ससी या हाथ से पैदा कर रहा था।

जहां तक ​​मैं ईएमएफ समझता हूं, वहां कक्षाओं (एक-से-कई, आदि ...) के बीच कुछ जटिल संबंधों को परिभाषित करने के लिए यह उपयोगी हो सकता है। लेकिन यह सब क्या है? क्या यह ईएमएफ के साथ कोड उत्पन्न करने के लिए अधिक जटिल नहीं है? क्या यह कुछ अतिरिक्त-निर्भरताएं जोड़ती है?


सामान्य शब्दों में एक यह कह सकता है कि ईएमएफ का उपयोग क्रम में कई लाभ प्रदान करता है।

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

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

ईएमएफ के एक्सटेंशन भी बहुत अधिक प्रदान करते हैं:

  • ईएमएफ प्रश्न या ईएमएफ पथ दिए गए मानदंडों के लिए क्यूगो उदाहरण एकत्र करने के लिए उन्नत क्वेरी क्षमताओं को जोड़ते हैं
  • सीडीओ आपको 3-स्तरीय अनुप्रयोगों को बिना किसी हाथ-कोडिंग के कोड की अनुमति देता है सीडीओ डाटाबेस निरंतरता और दूरदराज के अधिसूचना (सत्र, लेनदेन, संस्करण, शाखाएं, आदि) जोड़ती है
  • Xtext कस्टम DSL में serialization जोड़ता है (अपने स्वयं के क्रमबद्धता प्रारूप / बोली को परिभाषित करें)
  • आदि।

आप वास्तव में तर्क दे सकते हैं कि ईएमएफ / ईकोर पॉज़ो के लिए एक मानक प्रदान करता है और एक संपूर्ण पारिस्थितिकी तंत्र इसके आस-पास बढ़ता है जो वास्तव में आपको क्लासिक दृष्टिकोण में हाथ से कोड प्रदान करता है।

ईमानदार होने के लिए, ईएमएफ के नकारात्मक पक्ष यह है कि आप ईकोर रनटाइम से जुड़ जाते हैं जो कि अगर आप एक्लिप्स आधारित अमीर ग्राहकों को कोड करते हैं, लेकिन अगर आप सर्वर पर हैं तो यह एक समस्या बन सकता है।


जोर्डी ने कहा कि ईएमएफ ने अधिसूचना तंत्र को प्रदान किया है, जो कि उदाहरण के लिए एक्सएमएल बीन्स के विपरीत है, जिससे आप श्रोताओं को मॉडल के बदलावों को जोड़ सकते हैं। इसलिए जब मॉडल में परिवर्तन होते हैं तो आपको इस परिवर्तन के बारे में सूचित किया जाता है।

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





eclipse-emf