SDV ของ AAOS มีสถาปัตยกรรมที่มุ่งเน้นบริการและข้อมูล ผู้ใช้ โต้ตอบกับระบบผ่านไลบรารีของไคลเอ็นต์มิดเดิลแวร์ โดยมี ภาษาที่ใช้นิยามอินเทอร์เฟซของบริการยานพาหนะ (VSIDL) เป็นตัวช่วย ซึ่งจะซ่อนรายละเอียดโครงสร้างพื้นฐานระดับล่าง ทำให้ผู้พัฒนาสามารถมุ่งเน้นไปที่การสื่อสารระดับสูงและเอนทิตีการติดตั้งใช้งาน
โมเดลการสื่อสาร
การสื่อสารเชิงตรรกะใน SDV กำหนดโดยหัวข้อและช่อง
หัวข้อ
หัวข้อใช้สำหรับการสื่อสารที่เน้นข้อมูล (เผยแพร่/ติดตาม) ผู้ใช้จะโต้ตอบกับข้อความที่เผยแพร่ในหัวข้อที่มีชื่อแทนที่จะค้นหาผู้เผยแพร่โฆษณาที่เฉพาะเจาะจง
- ตัวระบุ: ระบบจะระบุหัวข้อด้วยสตริงที่ไม่ซ้ำกัน
- ประเภทข้อมูล: ข้อความที่เผยแพร่ในหัวข้อจะกำหนดโดยใช้ Protobuf
- การแยกส่วน: ผู้ติดตามสนใจประเภทข้อความและชื่อหัวข้อ ไม่ใช่ตัวตนหรือตำแหน่งของผู้เผยแพร่โฆษณา ผู้เผยแพร่หลายรายสามารถเผยแพร่ ไปยังหัวข้อเดียวกันได้ ซึ่งช่วยให้สื่อสารแบบหลายต่อหลายข้อมูลได้
ช่อง
แชแนลใช้สำหรับการสื่อสารตามการเรียกกระบวนการระยะไกล (RPC) ผู้ใช้เรียกใช้เมธอดบริการในแชแนลที่เฉพาะเจาะจงโดยไม่ต้องทราบว่าเซิร์ฟเวอร์ใด จัดการคำขอ
- ตัวระบุ: ช่องจะระบุด้วยชื่อที่ไม่ซ้ำกัน (เช่น
main-control) - ประเภทบริการ: บริการ RPC จะระบุได้ด้วยชื่อบริการ protobuf ที่สมบูรณ์ในตัวเอง
- การแยกส่วน: มิดเดิลแวร์จะจัดการการค้นหาอินสแตนซ์เซิร์ฟเวอร์ที่เหมาะสมสำหรับบริการและช่องที่กำหนด
การติดตั้งใช้งานและวงจรการใช้งาน
เอนทิตีในส่วนนี้จะกำหนดวิธีแพ็กเกจ อนุญาต และ สร้างอินสแตนซ์ซอฟต์แวร์ภายในสภาพแวดล้อม SDV
แพ็กเกจบริการ
ชุดบริการคือกลุ่มตรรกะทางธุรกิจที่เกี่ยวข้องซึ่งมีบทบาทหลัก 2 อย่าง ได้แก่
- หน่วยการติดตั้งใช้งาน: ระบบจะติดตั้งใช้งาน Service Bundle เป็นส่วนหนึ่งของแพ็กเกจ SDV ซึ่งเป็นไฟล์ APEX และเป็นหน่วยที่เล็กที่สุด
ของการอัปเดตซอฟต์แวร์
- แต่ละแพ็กเกจบริการจะแมปกับกระบวนการ Linux เดียวใน SDV VM ที่รันไทม์อย่างไม่ซ้ำกัน และเรียกว่าอินสแตนซ์แพ็กเกจบริการ
- ระบบจะอ้างอิงแพ็กเกจบริการในไฟล์ Manifest ของแพ็กเกจ SDV ซึ่ง มีข้อมูลเมตา รวมถึงชื่อและนโยบายการให้สิทธิ์
- หน่วยของการให้สิทธิ์: สิทธิ์จะมอบให้กับแพ็กเกจบริการทั้งหมด
แพ็กเกจบริการจะได้รับอนุญาตให้ทำสิ่งต่อไปนี้
- เผยแพร่หรือติดตามหัวข้อที่เฉพาะเจาะจง (สำหรับข้อความประเภทหนึ่งๆ)
- แสดงหรือเรียกใช้ช่องที่เฉพาะเจาะจง (สำหรับประเภทบริการที่กำหนด)
อินสแตนซ์ของแพ็กเกจบริการ
อินสแตนซ์ชุดบริการคืออินสแตนซ์ของชุดบริการที่โหลดรันไทม์
- ระบบจะติดตามและระบุอินสแตนซ์ของแพ็กเกจบริการแต่ละรายการแยกกันโดย SDV Lifecycle Manager (LCM)
- การเริ่มต้นอินสแตนซ์ของชุดบริการจะทริกเกอร์โดย SDV Orchestrator และ เริ่มต้นและติดตามโดย SDV LCM
แพ็กเกจ SDV
แพ็กเกจ SDV เป็นหน่วยที่เล็กที่สุดของการอัปเดตซอฟต์แวร์ และมีลักษณะดังนี้
- ไฟล์ Android Pony EXpress (APEX)
- มีแพ็กเกจบริการอย่างน้อย 1 รายการ
- ได้รับการอัปเดตพร้อมกัน ซึ่งหมายความว่าแพ็กเกจ SDV จะได้รับการอัปเดตพร้อมกัน
โค้ดทั้งหมดในแพ็กเกจ SDV มาจากแหล่งที่มาที่เชื่อถือได้เดียวกัน (ผู้เผยแพร่ซอฟต์แวร์รายเดียวกัน)
แพ็กเกจ SDV เดียวกันแต่ต่างเวอร์ชันอาจอยู่ใน VM ของ SDV ที่ต่างกันได้
รายละเอียดการใช้งาน
ส่วนต่อไปนี้จะอธิบายรายละเอียดการติดตั้งใช้งานเลเยอร์การรับส่ง SDV
เบื้องหลัง: หน่วยบริการ
แม้ว่านักพัฒนาแอปจะโต้ตอบกับหัวข้อและช่องเป็นหลัก แต่หน่วยบริการ ยังคงเป็นกลไกพื้นฐานสำหรับการลงทะเบียนและการค้นพบภายในกลุ่มการสื่อสารของ SDV
หน่วยบริการแสดงถึงปลายทางเดียว เช่น เซิร์ฟเวอร์ RPC หรือผู้เผยแพร่
ไลบรารีของไคลเอ็นต์มิดเดิลแวร์ (mw::clientlib) จะจัดการ
การลงทะเบียนและการค้นหาหน่วยบริการเหล่านี้เบื้องหลัง