AAOS SDV, सेवा-उन्मुख और डेटा-केंद्रित आर्किटेक्चर उपलब्ध कराता है. उपयोगकर्ता, मिडलवेयर क्लाइंट लाइब्रेरी की मदद से सिस्टम के साथ इंटरैक्ट करते हैं. इसमें, Vehicle Services Interface Definition Language (VSIDL) से भी मदद मिलती है. इससे, बुनियादी इंफ़्रास्ट्रक्चर की कम लेवल की जानकारी छिप जाती है. इससे डेवलपर, हाई-लेवल के कम्यूनिकेशन और डिप्लॉयमेंट एंटिटी पर फ़ोकस कर पाते हैं.
कम्यूनिकेशन मॉडल
एसडीवी में लॉजिकल कम्यूनिकेशन, विषयों और चैनलों से तय होता है.
विषय
विषयों का इस्तेमाल, डेटा-केंद्रित कम्यूनिकेशन (पब्लिश/सदस्यता लें) के लिए किया जाता है. उपयोगकर्ता, खास पब्लिशर ढूंढने के बजाय, नाम वाले विषयों पर पब्लिश किए गए मैसेज के साथ इंटरैक्ट करते हैं.
- आइडेंटिफ़ायर: किसी विषय की पहचान, यूनीक स्ट्रिंग से होती है.
- डेटा टाइप: किसी विषय पर पब्लिश किए गए मैसेज, protobuf का इस्तेमाल करके तय किए जाते हैं.
- डिकपल करना: सदस्यों को मैसेज के टाइप और विषय के नाम से मतलब होता है. उन्हें पब्लिशर की पहचान या जगह से कोई मतलब नहीं होता. एक से ज़्यादा पब्लिशर, एक ही विषय पर पब्लिश कर सकते हैं. इससे कई-से-कई कम्यूनिकेशन की सुविधा मिलती है.
चैनल
चैनलों का इस्तेमाल, रिमोट प्रोसीजर कॉल (आरपीसी) के आधार पर कम्यूनिकेशन के लिए किया जाता है. उपयोगकर्ता, किसी खास चैनल पर सेवा के तरीकों को कॉल करते हैं. इसके लिए, उन्हें यह जानने की ज़रूरत नहीं होती कि अनुरोध को कौनसे सर्वर से हैंडल किया जा रहा है.
- आइडेंटिफ़ायर: किसी चैनल की पहचान, यूनीक नाम से होती है. जैसे,
main-control. - सेवा का टाइप: आरपीसी सेवाओं की पहचान, उनके पूरी तरह से क्वालिफ़ाइड protobuf सेवा के नाम से होती है.
- ऐब्स्ट्रैक्शन: मिडलवेयर, किसी दी गई सेवा और चैनल के लिए सही सर्वर इंस्टेंस ढूंढता है.
डिप्लॉयमेंट और लाइफ़साइकल
इस सेक्शन में दी गई एंटिटी से यह तय होता है कि एसडीवी एनवायरमेंट में सॉफ़्टवेयर को कैसे पैकेज किया जाता है, अनुमति दी जाती है, और इंस्टैंशिएट किया जाता है.
सेवा बंडल
सेवा बंडल, कारोबार के लॉजिक का एक ग्रुप होता है. यह दो मुख्य काम करता है:
- डिप्लॉयमेंट की यूनिट: सेवा बंडल,
एसडीवी पैकेज के तौर पर डिप्लॉय किए जाते हैं. एसडीवी पैकेज, एक एपीईएक्स फ़ाइल होती है. यह सॉफ़्टवेयर को अपडेट करने की सबसे छोटी
यूनिट होती है.
- हर सेवा बंडल, रन टाइम पर मौजूद किसी एक Linux प्रोसेस से यूनीक तरीके से मैप होता है. इसे सेवा बंडल इंस्टेंस कहा जाता है.
- सेवा बंडलों का रेफ़रंस, एसडीवी पैकेज के मेनिफ़ेस्ट में दिया जाता है. इसमें मेटाडेटा शामिल होता है. जैसे, नाम और अनुमति की नीतियां.
- अनुमति की यूनिट: अनुमतियां, पूरे सेवा बंडल को दी जाती हैं. किसी सेवा बंडल को ये काम करने की अनुमति होती है:
- किसी खास मैसेज टाइप के लिए, खास विषयों पर पब्लिश करना या उनकी सदस्यता लेना.
- किसी खास सेवा टाइप के लिए, खास चैनलों को सर्व करना या कॉल करना.
सेवा बंडल इंस्टेंस
सेवा बंडल इंस्टेंस, सेवा बंडल का रनटाइम-लोड किया गया इंस्टेंस होता है.
- एसडीवी लाइफ़साइकल मैनेजर (एलसीएम), हर सेवा बंडल इंस्टेंस को अलग-अलग ट्रैक करता है और उसकी पहचान करता है.
- एसडीवी ऑर्केस्ट्रेटर, सेवा बंडल इंस्टेंस के शुरू होने की प्रोसेस को ट्रिगर करता है. वहीं, एसडीवी एलसीएम, इसे शुरू करता है और ट्रैक करता है.
एसडीवी पैकेज
एसडीवी पैकेज, सॉफ़्टवेयर को अपडेट करने की सबसे छोटी यूनिट होती है. साथ ही:
- यह Android Pony EXpress (APEX) फ़ाइल होती है.
- इसमें एक या उससे ज़्यादा सेवा बंडल शामिल होते हैं.
- इसे एक साथ अपडेट किया जाता है. इसका मतलब है कि एसडीवी पैकेज में मौजूद सभी सेवा बंडल एक साथ अपडेट किए जाते हैं.
एसडीवी पैकेज में मौजूद सभी कोड, भरोसेमंद एक ही सोर्स (सॉफ़्टवेयर के एक ही पब्लिशर) से आते हैं.
एक ही एसडीवी पैकेज के अलग-अलग वर्शन, अलग-अलग एसडीवी वीएम में मौजूद हो सकते हैं.
लागू करने से जुड़ी जानकारी
यहां दिए गए सेक्शन में, एसडीवी ट्रांसपोर्ट लेयर को लागू करने से जुड़ी जानकारी दी गई है.
बैकग्राउंड: सेवा देने वाली कंपनियां
डेवलपर मुख्य रूप से विषयों और चैनलों के साथ इंटरैक्ट करते हैं. हालांकि, एसडीवी कम्यूनिकेशन स्टैक में रजिस्ट्रेशन और खोज के लिए, सेवा देने वाली कंपनियां बुनियादी तरीका बनी रहती हैं.
सेवा देने वाली कंपनी, एक एंडपॉइंट को दिखाती है. जैसे, आरपीसी सर्वर या पब्लिशर. मिडलवेयर क्लाइंट लाइब्रेरी (mw::clientlib), इन सेवा देने वाली कंपनियों के रजिस्ट्रेशन और खोज को हैंडल करती है.