สถาปัตยกรรมเชิงตรรกะ

SDV ของ AAOS มีสถาปัตยกรรมที่มุ่งเน้นบริการและข้อมูล ผู้ใช้ โต้ตอบกับระบบผ่านไลบรารีของไคลเอ็นต์มิดเดิลแวร์ โดยมี ภาษาที่ใช้นิยามอินเทอร์เฟซของบริการยานพาหนะ (VSIDL) เป็นตัวช่วย ซึ่งจะซ่อนรายละเอียดโครงสร้างพื้นฐานระดับล่าง ทำให้ผู้พัฒนาสามารถมุ่งเน้นไปที่การสื่อสารระดับสูงและเอนทิตีการติดตั้งใช้งาน

โมเดลการสื่อสาร

การสื่อสารเชิงตรรกะใน SDV กำหนดโดยหัวข้อและช่อง

หัวข้อ

หัวข้อใช้สำหรับการสื่อสารที่เน้นข้อมูล (เผยแพร่/ติดตาม) ผู้ใช้จะโต้ตอบกับข้อความที่เผยแพร่ในหัวข้อที่มีชื่อแทนที่จะค้นหาผู้เผยแพร่โฆษณาที่เฉพาะเจาะจง

  • ตัวระบุ: ระบบจะระบุหัวข้อด้วยสตริงที่ไม่ซ้ำกัน
  • ประเภทข้อมูล: ข้อความที่เผยแพร่ในหัวข้อจะกำหนดโดยใช้ Protobuf
  • การแยกส่วน: ผู้ติดตามสนใจประเภทข้อความและชื่อหัวข้อ ไม่ใช่ตัวตนหรือตำแหน่งของผู้เผยแพร่โฆษณา ผู้เผยแพร่หลายรายสามารถเผยแพร่ ไปยังหัวข้อเดียวกันได้ ซึ่งช่วยให้สื่อสารแบบหลายต่อหลายข้อมูลได้

ช่อง

แชแนลใช้สำหรับการสื่อสารตามการเรียกกระบวนการระยะไกล (RPC) ผู้ใช้เรียกใช้เมธอดบริการในแชแนลที่เฉพาะเจาะจงโดยไม่ต้องทราบว่าเซิร์ฟเวอร์ใด จัดการคำขอ

  • ตัวระบุ: ช่องจะระบุด้วยชื่อที่ไม่ซ้ำกัน (เช่น main-control)
  • ประเภทบริการ: บริการ RPC จะระบุได้ด้วยชื่อบริการ protobuf ที่สมบูรณ์ในตัวเอง
  • การแยกส่วน: มิดเดิลแวร์จะจัดการการค้นหาอินสแตนซ์เซิร์ฟเวอร์ที่เหมาะสมสำหรับบริการและช่องที่กำหนด

การติดตั้งใช้งานและวงจรการใช้งาน

เอนทิตีในส่วนนี้จะกำหนดวิธีแพ็กเกจ อนุญาต และ สร้างอินสแตนซ์ซอฟต์แวร์ภายในสภาพแวดล้อม SDV

แพ็กเกจบริการ

ชุดบริการคือกลุ่มตรรกะทางธุรกิจที่เกี่ยวข้องซึ่งมีบทบาทหลัก 2 อย่าง ได้แก่

  1. หน่วยการติดตั้งใช้งาน: ระบบจะติดตั้งใช้งาน Service Bundle เป็นส่วนหนึ่งของแพ็กเกจ SDV ซึ่งเป็นไฟล์ APEX และเป็นหน่วยที่เล็กที่สุด ของการอัปเดตซอฟต์แวร์
    • แต่ละแพ็กเกจบริการจะแมปกับกระบวนการ Linux เดียวใน SDV VM ที่รันไทม์อย่างไม่ซ้ำกัน และเรียกว่าอินสแตนซ์แพ็กเกจบริการ
    • ระบบจะอ้างอิงแพ็กเกจบริการในไฟล์ Manifest ของแพ็กเกจ SDV ซึ่ง มีข้อมูลเมตา รวมถึงชื่อและนโยบายการให้สิทธิ์
  2. หน่วยของการให้สิทธิ์: สิทธิ์จะมอบให้กับแพ็กเกจบริการทั้งหมด แพ็กเกจบริการจะได้รับอนุญาตให้ทำสิ่งต่อไปนี้
    • เผยแพร่หรือติดตามหัวข้อที่เฉพาะเจาะจง (สำหรับข้อความประเภทหนึ่งๆ)
    • แสดงหรือเรียกใช้ช่องที่เฉพาะเจาะจง (สำหรับประเภทบริการที่กำหนด)

อินสแตนซ์ของแพ็กเกจบริการ

อินสแตนซ์ชุดบริการคืออินสแตนซ์ของชุดบริการที่โหลดรันไทม์

  • ระบบจะติดตามและระบุอินสแตนซ์ของแพ็กเกจบริการแต่ละรายการแยกกันโดย 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) จะจัดการ การลงทะเบียนและการค้นหาหน่วยบริการเหล่านี้เบื้องหลัง