AAOS SDV cung cấp một cấu trúc hướng dịch vụ và hướng dữ liệu. Người dùng tương tác với hệ thống thông qua thư viện ứng dụng trung gian, được hỗ trợ bởi Ngôn ngữ định nghĩa giao diện dịch vụ trên xe (VSIDL). Điều này giúp ẩn các thông tin chi tiết về cơ sở hạ tầng cấp thấp, cho phép nhà phát triển tập trung vào các thực thể giao tiếp và triển khai cấp cao.
Mô hình giao tiếp
Thông tin liên lạc logic trong SDV được xác định theo chủ đề và kênh.
Chủ đề
Các chủ đề được dùng cho hoạt động giao tiếp dựa trên dữ liệu (Xuất bản/Đăng ký). Thay vì khám phá các nhà xuất bản cụ thể, người dùng tương tác với các thông báo được xuất bản trên các chủ đề có tên.
- Giá trị nhận dạng: Một chủ đề được xác định bằng một chuỗi duy nhất.
- Loại dữ liệu: Thông báo được xuất bản trên một chủ đề được xác định bằng protobuf.
- Tách rời: Người đăng ký quan tâm đến loại thông báo và tên chủ đề, chứ không quan tâm đến danh tính hoặc vị trí của nhà xuất bản. Nhiều nhà xuất bản có thể xuất bản cho cùng một chủ đề, cho phép giao tiếp nhiều-nhiều.
Kênh
Các kênh được dùng để giao tiếp dựa trên lệnh gọi thủ tục từ xa (RPC). Người dùng gọi các phương thức dịch vụ trên một kênh cụ thể mà không cần biết máy chủ nào đang xử lý yêu cầu.
- Giá trị nhận dạng: Kênh được xác định bằng một tên duy nhất (ví dụ:
main-control). - Loại dịch vụ: Các dịch vụ RPC được xác định bằng tên dịch vụ protobuf đủ điều kiện của chúng.
- Trừu tượng hoá: Phần mềm trung gian xử lý việc tìm phiên bản máy chủ thích hợp cho một dịch vụ và kênh nhất định.
Triển khai và vòng đời
Các thực thể trong phần này xác định cách phần mềm được đóng gói, uỷ quyền và khởi tạo trong môi trường SDV.
Gói dịch vụ
Gói dịch vụ là một nhóm logic nghiệp vụ có liên quan, đóng hai vai trò chính:
- Đơn vị triển khai: Các gói dịch vụ được triển khai trong gói SDV. Đây là một tệp APEX và là đơn vị nhỏ nhất có thể cập nhật phần mềm.
- Mỗi gói dịch vụ ánh xạ riêng biệt đến một quy trình Linux duy nhất trên SDV VM tại thời gian chạy và được gọi là phiên bản gói dịch vụ.
- Các gói dịch vụ được tham chiếu trong tệp kê khai gói SDV. Tệp này chứa siêu dữ liệu, bao gồm cả tên và chính sách uỷ quyền.
- Đơn vị uỷ quyền: Quyền được cấp cho toàn bộ gói dịch vụ. Một gói dịch vụ được phép:
- Xuất bản hoặc đăng ký theo dõi các chủ đề cụ thể (đối với một loại thông báo nhất định).
- Phục vụ hoặc gọi các kênh cụ thể (cho một loại dịch vụ nhất định).
Phiên bản gói dịch vụ
Một thực thể gói dịch vụ là một thực thể được tải trong thời gian chạy của một gói dịch vụ.
- Mỗi phiên bản gói dịch vụ được theo dõi riêng và được SDV Lifecycle Manager (LCM) xác định.
- Các lần khởi động phiên bản gói dịch vụ được SDV Orchestrator kích hoạt, đồng thời được SDV LCM khởi động và theo dõi.
Gói SDV
Gói SDV là đơn vị nhỏ nhất có thể cập nhật phần mềm và:
- Tệp Android Pony EXpress (APEX).
- Chứa một hoặc nhiều gói dịch vụ.
- Được cập nhật cùng lúc, tức là tất cả các gói dịch vụ trong một gói SDV đều được cập nhật cùng lúc.
Tất cả mã trong Gói SDV đều đến từ cùng một nguồn đáng tin cậy (cùng một nhà xuất bản phần mềm).
Các phiên bản khác nhau của cùng một gói SDV có thể tồn tại trong các VM SDV khác nhau.
Thông tin chi tiết về việc triển khai
Các phần sau đây mô tả chi tiết về việc triển khai lớp truyền tải SDV.
Thông tin cơ bản: Đơn vị dịch vụ
Mặc dù nhà phát triển chủ yếu tương tác với các chủ đề và kênh, nhưng đơn vị dịch vụ vẫn là cơ chế cơ bản để đăng ký và khám phá trong ngăn xếp giao tiếp SDV.
Một đơn vị dịch vụ đại diện cho một điểm cuối duy nhất, chẳng hạn như máy chủ RPC hoặc nhà xuất bản. Thư viện ứng dụng trung gian (mw::clientlib) xử lý quá trình đăng ký và khám phá các đơn vị dịch vụ này.