2009-09-16 10 views
11

ओएसजीआई 4.2 में just been released है जो कुछ नए आरएफसी के साथ 4.1 विनिर्देश अद्यतन करता है। तो, ओएसजीआई 4.2 के साथ विशेष रूप से नया क्या है, जो फ्रेमवर्क पहले ही 4.2 (या इसके करीब हैं) का समर्थन करता है और 4.1 के बजाय 4.2 फ्रेमवर्क के खिलाफ आपको नए विकास को क्यों लक्षित करना चाहिए?ओएसजीआई 4.2 में नया क्या है?

उत्तर

12

ज्यादातर मामलों में, OSGi का एक बिंदु रिलीज (4.1- जैसे की आसान कार्यान्वयन के लिए अनुमति देगा > 4.2) वास्तव में बहुत अधिक मौजूदा व्यवहार नहीं बदलता है, इसलिए यह कहना सुरक्षित है कि यदि आपके पास एक ऐप है जो 4.1 पर निर्भर करता है, तो यह बिना किसी समस्या के 4.2 पर चलाएगा। नया क्या है कि कुछ वस्तुओं को मानकीकृत किया गया है जो विभिन्न ओएसजीआई इंजनों (जैसे Equinox, Felix और Knopflerfish) के बीच बेहतर इंटरऑपरेबिलिटी के लिए सक्षम होना चाहिए।

वास्तव में, हालांकि ओएसजीआई 4.2 केवल 16 सितंबर 200 9 को आधिकारिक तौर पर जारी किया गया था, शुरुआती ड्राफ्ट दूसरों के संदर्भ में उपलब्ध हैं, इसलिए उत्पादों की पिछली रिलीज (जैसे विषुव 3.5, फ़ेलिक्स 1.8) के लिए पहले से ही उचित समर्थन है मानक। 802.11 एन उत्पादों की तरह, वे पहले के ड्राफ्ट के अनुरूप थे लेकिन उम्मीद है कि उन्हें बहुत दूर भविष्य में 4.2 रिलीज के खिलाफ पूरी तरह से अनुपालन के रूप में प्रमाणित किया जाएगा।

तो, 4.2 में नया क्या है?

  • सेवा हुक्स
  • फ्रेमवर्क

का शुभारंभ और, संग्रह में

  • रिमोट सेवाएं
  • बंडल ट्रैकर
  • ब्लूप्रिंट सेवा

सेवा हुक्स

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

फ्रेमवर्क की शुरूआत

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

रिमोट सेवाएं

रिमोट सेवा API OGSI सेवाओं VMs के बीच (विभिन्न मशीनों पर संभवतः) संवाद करने के लिए अनुमति देता है। वे कैसे संवाद करते हैं (आरएमआई, वेब सर्विसेज इत्यादि) के सटीक तंत्र प्रदाताओं के लिए खुला है, इसलिए यह अन्य वितरित प्रौद्योगिकियों (कॉर्बा जैसे) के विपरीत है जो विशेष रूप से तार प्रारूप पर निर्देशित करता है। स्पष्ट रूप से, वितरित सेवाओं में स्थानीय लोगों (संचार त्रुटियों, क्रमिकरण के मुद्दों) की तुलना में अलग-अलग अर्थशास्त्र होते हैं और यदि आवश्यक हो तो अलग-अलग सेवाओं को वितरित करने के लिए छोड़ दिया जाता है।

बंडल ट्रैकर

4.1 में यह पहले ServiceTracker की तरह, BundleTracker एक आँख है जिस पर बंडल आ रखने के लिए और व्यवस्था में जाने के लिए इस्तेमाल किया जा सकता। यह किसी भी मंच विशिष्ट ज्ञान के बिना ओएसजीआई इंजन की विकसित स्थिति दिखाने के लिए गतिशील जीयूआई द्वारा उपयोग किया जा सकता है।

ब्लूप्रिंट सेवा

खाका सेवा स्प्रिंग के समान है के रूप में यह बंडलों विन्यस्त करने के लिए एक निर्भरता इंजेक्शन तंत्र प्रदान करता है। कुछ संबंधों में, यह घोषणात्मक सेवाओं के समान है; लेकिन ब्लूप्रिंट सेवा चीजों को अलग तरीके से करती है। इसके अलावा, घोषणात्मक सेवाओं के विपरीत (जो केवल मौजूद सेवाओं से निपट सकता है), ब्लूप्रिंट सेवा एक सेवा के लिए अग्रिम में प्रॉक्सी प्लेसहोल्डर बना सकती है जो बाद में ऑनलाइन आ जाएगी। सर्विस प्रॉक्सी पर कॉल तब तक अवरुद्ध हो जाएंगे जब तक कि सेवा भरी जा सके (घोषणात्मक सेवाओं के रूप में 'शून्य' लौटने की बजाय)। यदि आप स्प्रिंग आईओसी और समान निर्भरता इंजेक्शन से सहज या परिचित हैं, तो ब्लूप्रिंट सेवा तुरंत समझ में आ जाएगी।

+0

अच्छा सारांश। +1 – VonC

+0

एनबी यह एक पूरी सूची नहीं है, और मौजूदा सेवाओं में कुछ बदलावों को शामिल नहीं करता है ... – AlBlue

0

This article ब्याज के आरएफसी का विवरण। के शब्दों में, सभी एक की

पहले देखा कि इस संस्करण संख्या का सुझाव दे सकते के रूप में एक छोटी सी रिलीज नहीं दे रहा है। रिलीज 4.2 पिछले साल आर 4.1 रिलीज की तुलना में वास्तव में अधिक महत्वपूर्ण है। पर कुछ बिंदुओं पर मैं यह भी कहूंगा कि यह आर 4 रिलीज, से अधिक महत्वपूर्ण है क्योंकि उस उपयोग के साथ अधिक आसान हो जाता है, खासकर ओएसजीआई विशेषज्ञों के लिए।

+0

मैं सहमत हूं, हालांकि कुछ आरएफसी (एंटरप्राइज़ वाले) अभी तक पूर्ण नहीं हुए हैं। – AlBlue

0

प्रारंभिक परिवर्तन highlighted here थे।

विशेष रूप से, आरएफसी 119 - वितरित OSGi सुविधा दिलचस्प है:

यह समाधान सेवा खोज और करने के लिए और बाहरी वातावरण से उपयोग सहित वितरित OSGi प्रसंस्करण, के लिए सुविधा/समारोह का एक न्यूनतम स्तर निर्धारित करता है।

कि EventAdmin (41 में शुरू की गई) के साथ संयुक्त, OSGi आधारित वितरित सेवाओं (वर्तमान में with ECF कार्यान्वित)

+0

हाँ, रिमोट सर्विसेज (वितरित ओएसजीआई अब कहा जाता है) दिलचस्प है। http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API पर एक अच्छी तरह से लिखना है कि आम तौर पर ईसीएफ के साथ दूरस्थ सेवाओं का उपयोग कैसे करें - – AlBlue

0

क्या रेफरेंस बाइंड उपलब्ध नहीं होने पर घोषणात्मक सेवाएं वास्तव में शून्य हो जाती हैं? विषुव पर, भले ही मैं गतिशील मोड को सेट करता हूं, अगर मेरा "वायर्ड" नहीं हो सकता है तो मेरा घटक कभी भी कम नहीं किया जाता है। जैसा कि आप कहते हैं, मैं इसे "शून्य" पर सेट करना पसंद करूंगा, ताकि मैं वैकल्पिक संदर्भ बांध सकूं और गतिशील खोज का उपयोग कर सकूं ...

इसके अलावा, मुझे सेवा की आसानी से घटक गुणों को आसानी से ढूंढने की संभावना याद आती है बाध्य है (मुझे बंडल संदर्भ में जाना है, सेवा संदर्भ प्राप्त करें, पुनरावृत्त करें और तुलना करें - व्यावहारिक नहीं)। शायद मैं कुछ याद कर रहा हूँ।

+0

आप कार्डिनलिटी = "0..1" या "0..n" सेट कर सकते हैं घोषणात्मक नमूना, इस मामले में यह वैकल्पिक है और इसलिए एक आश्रित सेवा उपलब्ध नहीं होने पर भी घटक शुरू किया जा सकता है। – AlBlue

+0

ओह, धन्यवाद, यह इतना स्पष्ट है कि मैंने इसे याद किया! :) –

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