AUTOSAR_AP_EXP_ARAComAPI
FIG-339dfa51f77c8c63
876 × 624 px
11 Release(s)
Figure 7.3: Simple Multi-Binding intra AP example
SHA-256 Inhalts-Fingerabdruck:
339dfa51f77c8c6349044fbf4ede629870693be27f38eda3d7411359b07923a6
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Klassifikation: Architekturschaubild / Block- und Deployment-Diagramm für Prozesse und Instanzen mit Interaktions-Annotationen.
- Kontext & Zweck:
AUTOSAR_EXP_ARAComAPI(Adaptive Platform Communication API), Kapitel Multi-Binding. - Funktionale Einordnung: Das Diagramm demonstriert die Multi-Binding-Fähigkeit von
ara::cominnerhalb eines einzelnen POSIX-basierten Steuergeräts (ECU with AP product). Es veranschaulicht, wie ein einzelner Service-Consumer (Client Implementation) über denselben Service-Typ (ServiceType) transparent mit mehreren Service-Instanzen (Instance1,Instance2) kommuniziert, die über grundlegend unterschiedliche Transport-Bindings angebunden sind (Intra-Process vs. Inter-Process IPC), ohne dass sich die Anwendungsschnittstelle ändert.
2. Komponenten, Entitäten & Schnittstellen
- ECU with AP product: Laufzeitumgebung der AUTOSAR Adaptive Platform auf einem gemeinsamen Host-Betriebssystem (POSIX OS).
- ara::com App (Links / Dual-Role Process):
- Client Implementation: Anwendungslogik des Service-Konsumenten.
- Service Proxy: Typsichere, generierte C++-Client-Klasse (
ara::com::Proxy), die Methoden, Events und Fields des Service-Interfaces abstrahiert. - Instance1:
- Service Skeleton: Generierte Provider-Basisklasse (
ara::com::Skeleton). - Service Implementation: Konkrete Geschäftslogik des Dienstes innerhalb desselben Prozesses.
- Service Skeleton: Generierte Provider-Basisklasse (
- ara::com App (Rechts / Remote Provider Process):
- Eigenständiger POSIX-Prozess.
- Instance2: Beherbergt eine zweite Instanz desselben Service-Interfaces (
Service Skeleton+Service Implementation).
- Service Registry / Discovery:
- Lokaler Stack-Dienst zur Registrierung und Auflösung verfügbarer Service-Instanzen im AP-System.
- Bindings / Kommunikationspfade:
- Roter Pfad (Intra-App Binding): In-Process-Kommunikationskanal zwischen Proxy und Skeleton von
Instance1. Direkter Methodenaufruf bzw. Zero-Copy-Datenübergabe innerhalb desselben virtuellen Adressraums. - Blauer Pfad (Inter-App Binding): Inter-Process-Communication (IPC) zwischen Proxy und Skeleton von
Instance2über Prozessgrenzen hinweg (z. B. via POSIX Shared Memory, UNIX Domain Sockets oder lokales SOME/IP-IPC).
- Roter Pfad (Intra-App Binding): In-Process-Kommunikationskanal zwischen Proxy und Skeleton von
3. Dynamisches Verhalten & Sequenzablauf
- Service Offering:
Instance1undInstance2initialisieren ihre Skeletons und registrieren sich überOfferService()bei derService Registry / Discovery.
- Service Lookup (FindService):
- Die
Client Implementationinitiiert die Suche: $FindService(ServiceType, AnyInstance)$ (synchron viaFindService()oder asynchron viaStartFindService()). - Das Suchkriterium
AnyInstanceadressiert alle am Knoten registrierten Instanzen dieses Service-Typs.
- Die
- Handle-Generierung & Rückgabe:
- Die
Service Registry / Discoveryliefert einenServiceHandleContainerzurück, der zwei getrennte Handles enthält:Handle1(fürInstance1) undHandle2(fürInstance2). - Die Handles kapseln die deployment-spezifischen Adress- und Routing-Informationen (Binding-Typ, Instance-ID, IPC-Kanal/Endpunkt).
- Die
- Proxy-Instanziierung & Binding-Dispatch:
- Der Client instanziiert für die Interaktion jeweils ein Proxy-Objekt unter Übergabe des jeweiligen Handles (
ServiceProxy(Handle)). - Pfad Instance1: Die Binding-Schicht wählt das In-Process-Binding (rot); IPC-Serialisierung und OS-Kontextwechsel entfallen.
- Pfad Instance2: Die Binding-Schicht wählt das IPC-Binding (blau); Daten werden serialisiert oder über POSIX-Shared-Memory transportiert.
- Der Client instanziiert für die Interaktion jeweils ein Proxy-Objekt unter Übergabe des jeweiligen Handles (
4. Normative Relevanz & Entwickler-Hinweise
- Orts- und Transporttransparenz:
- Der Applikationscode der
Client Implementationist vollständig entkoppelt von der Prozess- und Core-Platzierung des Providers. C++-Aufrufe (ara::core::Future,ara::com::SamplePointer, Events) sind syntaktisch und semantisch identisch.
- Der Applikationscode der
- Binding-Konfiguration (AUTOSAR Deployment Manifest):
- Multi-Binding setzt voraus, dass das
ServiceInterfacein den ARXML-Modellen auf mehrereProvidedServiceInstance-Konfigurationen gemappt ist. Derara::com-Code-Generator erzeugt die entsprechenden Dispatch-Mechanismen, um je nachHandleTypezur Laufzeit das korrekte Transport-Plugin zu binden.
- Multi-Binding setzt voraus, dass das
- Performance- und Speichereffizienz:
- Intra-Process (Rot): Entwickler müssen beachten, dass bei In-Process-Kommunikation Pointer/Referenzen direkt übergeben werden können. Deadlocks durch synchrone Re-Entrancy und Thread-Safety müssen applikativ abgesichert werden.
- Inter-Process (Blau): Es fallen Serialisierungs-, Deserialisierungs- oder Shared-Memory-Allokationskosten an. Große Nutzlasten sollten über typisierte Shared-Memory-Puffer (E2E/Zero-Copy via POSIX Shm) statt via Socket-Payloads ausgetauscht werden.
- Instanz-Differenzierung:
- Bei
AnyInstance-Suchen muss die Client-Logik implementieren, welcher Handle (Handle1vs.Handle2) ausgewählt wird (Auswertung derInstanceIdentifierim Handle), da beide dieselbe Schnittstellensignatur bedienen.
- Bei