AUTOSAR_AP_EXP_ARAComAPI
FIG-b0a1946cfe7c2c83
842 × 406 px
1 Release(s)
Figure 4.1: Proxy Skeleton Pattern
SHA-256 Inhalts-Fingerabdruck:
b0a1946cfe7c2c836feb32d266f30be7ff57a80c180ea55bcc2b86d0eec4ceda
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: Konzeptionelles Architektur- und Entwurfsmuster-Diagramm (Pattern-Schichtenmodell).
- Technischer Zweck: Darstellung des Proxy-Skeleton-Entwurfsmusters (nach POSA / GoF) als fundamentales Kommunikationsparadigma der AUTOSAR Adaptive Platform (
ara::com). - Funktionale Einordnung: Entkopplung der anwendungsspezifischen Geschäftslogik (
Service Consumer Implementation,Service Implementation) von der zugrunde liegenden Kommunikations- und Serialisierungsmechanik (Middleware Transport Layer, z. B. SOME/IP, IPC, DDS) über plattformgenerierte C++-Schnittstellenklassen.
2. Komponenten, Entitäten & Schnittstellen
Service Interface Definition(Modellierungsartefakt):- Formale ARXML-Beschreibung eines AUTOSAR-
ServiceInterface(beinhaltet Events, Methods und Fields). - Fungiert als herstellerunabhängige Single Source of Truth für den
ara::com-Codegenerator.
- Formale ARXML-Beschreibung eines AUTOSAR-
Client Application(Prozess-/OS-Domain):Service Consumer Implementation: Applikativer C++-Code des Service-Konsumenten. Greift ausschließlich auf die Schnittstelle des Proxys zu.Service Proxy: Generierte typsichere C++-Klasse (<Service>Proxy). Realisiert das Stellvertreter-Objekt im Adressraum des Clients. Kapselt Marshalling/Serialisierung von Methodenaufrufen, Demarshalling von Event-Payloads und Binding-Dispatching.
Service Application(Prozess-/OS-Domain):Service Implementation: Applikativer C++-Code des Service-Providers (Servant). Implementiert die konkrete Geschäftslogik durch Spezialisierung (Vererbung/Delegation) der Skeleton-Klasse.Service Skeleton: Generierte typsichere C++-Basisklasse (<Service>Skeleton). Realisiert die serverseitige Dispatcher-Einheit. Kapselt Demarshalling von Request-Parametern, Aufruf der Servanten-Methoden sowie Marshalling und Aussenden von Events/Responses.
Middleware Transport Layer(Laufzeit-Stack):- Protokollspezifische Bindings (z. B. SOME/IP via UDP/TCP, POSIX Shared Memory / Kernel-IPC für Node-lokale Kommunikation).
- Bildet die transparente Transportschicht, über welche Proxy und Skeleton paket- bzw. nachrichtenbasiert kommunizieren.
- Beziehungen & Abhängigkeiten:
generated from: Gerichtete Modell-zu-Code-Generierungsbeziehung (AOT-Compiler / AUTOSAR-Toolchain) von derService Interface DefinitionaufService ProxyundService Skeleton.- Schichtung:
Service Consumer ImplementationbindetService Proxy;Service ImplementationrealisiertService Skeleton. Beide Adapter sitzen unmittelbar auf demMiddleware Transport Layerauf.
3. Dynamisches Verhalten & Sequenzablauf
- Design- & Build-Zeit:
- Definition des
ServiceInterfacein ARXML. - Toolchain generiert Header und Quellcodedateien für Proxy- und Skeleton-Klassen (inkl. Bindings).
- Definition des
- Initialisierung & Service Discovery:
- Provider-Seite:
Service Implementationinstanziiert dasService Skeletonund ruftOfferService()auf. Der Transport Layer registriert den Dienst (z. B. SOME/IP-SD Offer). - Consumer-Seite:
Service Consumer Implementationstartet Service-Suche via Proxy-API (StartFindService()/FindService()), erhält Service-Handles und instanziiert dieService Proxy-Klasse.
- Provider-Seite:
- Laufzeit-Kommunikation (Methoden, Events, Fields):
- Methodenaufruf (Client → Server): Client ruft Methode auf dem Proxy auf → Proxy serialisiert Argumente → Transport Layer überträgt PDU → Skeleton deserialisiert und ruft Methode in
Service Implementationauf → Skeleton serialisiert Rückgabewert → Proxy liefert Ergebnis asynchron an Client viaara::core::Future. - Event-Distribution (Server → Client):
Service Implementationaktualisiert Event → Skeleton publiziert Event via Transport Layer → Proxy empfängt PDU, deserialisiert und notifiziert Client via registriertem Callback (SetReceiveHandler) oder Polling (GetNewSamples).
- Methodenaufruf (Client → Server): Client ruft Methode auf dem Proxy auf → Proxy serialisiert Argumente → Transport Layer überträgt PDU → Skeleton deserialisiert und ruft Methode in
4. Normative Relevanz & Entwickler-Hinweise
- API-Isolation & Protokoll-Agnostizismus:
- Applikationscode bindet ausschließlich standardisierte
ara::com-Typen und generierte Proxy/Skeleton-Header ein. Der Wechsel des Transportprotokolls (z. B. von IPC auf SOME/IP) erfordert keine Änderungen am C++-Anwendungscode, sondern lediglich eine Neukonfiguration der Deployments (Mapping im Manifest) und Neu-Generierung des Bindings.
- Applikationscode bindet ausschließlich standardisierte
- Synchronizitätsmodell & Exception-Freiheit:
ara::comverzichtet auf blockierende RPC-Aufrufe und klassische C++-Exceptions. Methoden liefern typischerweiseara::core::Future<ara::core::Result<Output>>zurück. Entwickler müssen mitara::core::ErrorCodeund Futures arbeiten.
- Lifecycle & Speicherverwaltung:
- Bei lokaler IPC-Kommunikation nutzen Skeleton und Proxy Shared-Memory-Pools für Zero-Copy-Transfers (
SamplePtr). Der Lebenszyklus der Datenpuffer wird über Ref-Counting gesteuert; Freigaben im Client-Code müssen zeitnah erfolgen, um den Buffer-Pool des Providers nicht zu blockieren.
- Bei lokaler IPC-Kommunikation nutzen Skeleton und Proxy Shared-Memory-Pools für Zero-Copy-Transfers (
- ABI-/API-Striktheit:
- Jede Modifikation an der
Service Interface Definitionbricht die Binärkompatibilität. Proxy und Skeleton müssen zwingend gegen denselben Interface-Release-Stand kompiliert werden.
- Jede Modifikation an der
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.