2011-04-01 19 views
14

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

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

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

उत्तर

12

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

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

ईएमएफ पर आधिकारिक ग्रहण परियोजनाओं की सूची के लिए Eclipse Modeling Project देखें।

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

3

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

मैंने SQL-like वाक्यविन्यास का उपयोग करके मॉडल खोजने के लिए सफलतापूर्वक ईएमएफ क्वेरी का उपयोग किया है, और ओसीएल का उपयोग कर। ईएमएफ प्रमाणीकरण स्कीमा में परिभाषित किए गए आधार पर आपके मॉडल को मान्य करने के साथ-साथ स्कीमा में व्यक्त नहीं किए जाने पर आपके स्वयं के सत्यापन तर्क को प्रस्तुत करने के लिए एक महान ढांचा है।

15

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

पहले चरण में आप देखेंगे कि ईकोर कक्षाएं (और एम्फ रनटाइम) आपके आवेदन में आपके पीओजेओ से आपको क्या चाहिए।

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

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

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

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

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

+2

यह ध्यान दिया जाना चाहिए कि ईएमएफ का उपयोग स्टैंडअलोन किया जा सकता है, यहां तक ​​कि पूरी तरह से ओएसजीआई-आधारित एप्लिकेशन में भी विषुव में नहीं चल रहा है। आपको केवल 3 बंडलों की आवश्यकता है: org.eclipse.emf.ecore, org.eclipse.emf.ecore.xmi, और org.eclipse.emf.common –

संबंधित मुद्दे