AUTOSAR_AP_EXP_ARAComAPI
FIG-4cf7a627ee546cd7
932 × 928 px
4 Release(s)
Figure 4.3: ara::com method based communication
SHA-256 Inhalts-Fingerabdruck:
4cf7a627ee546cd7786d32a67ec3c94857d42e1d3446d5e43742054f0ee08a49
✦
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: UML-Sequenzdiagramm (
sd Dynamic View). - Technischer Zweck: Detaillierte Darstellung des asynchronen Request-Response-Nachrichtenflusses (RPC / Methodenaufruf) innerhalb des Kommunikations-Subsystems
ara::comder AUTOSAR Adaptive Platform. - Funktionale Einordnung: Veranschaulicht die Entkopplung und Schichtenarchitektur zwischen anwendungsspezifischem Code (Adaptive Applications), generierten Abstraktionsartefakten (Proxy/Skeleton), der Kern-Middleware (Communication Management) und dem protokollspezifischen Transport-Layer (Network Binding, z. B. SOME/IP oder IPC).
2. Komponenten, Entitäten & Schnittstellen
- Akteure / Lebenslinien (Lifelines):
Client Application: Service-Konsument (Adaptive Application), interagiert ausschließlich über die generierte Proxy-Schnittstelle.Proxy: Generierte C++-Klasse (<Service>Proxy), stellt typsichere Methoden des Service-Interfaces bereit und liefert Asynchronitäts-Primitive an die Applikation.Communication Management Middleware: Plattform-Laufzeitumgebung vonara::com; koordiniert das Routing zwischen generierten Bindegliedern und Transport-Treibern sowie das Lifecycle-Management von Futures und Promises.Network Binding: Protokoll- und transportspezifische Instanz (z. B. SOME/IP-Binding, POSIX IPC Shared-Memory-Binding); führt Serialisierung/Deserialisierung durch und bedient die Netzwerkschnittstelle.Skeleton: Generierte C++-Klasse (<Service>Skeleton) auf Dienstanbieterseite; adaptiert eingehende Plattform-Aufrufe auf die konkrete Implementierung der Service-Methoden.Server application: Service-Provider (Adaptive Application); implementiert die funktionale Business-Logik der Service-Schnittstelle.
- Schnittstellen- und Steuerungselemente:
ara::core::Future: Asynchrones Lese-Handle; repräsentiert das zukünftige Ergebnis oder einen Fehlerzustand für den Aufrufer (Client Application).ara::core::Promise: Asynchrones Schreib-Handle; wird serverseitig und middlewareseitig genutzt, um den Rückgabewert bzw. Fehlercode (ara::core::ErrorCode) bereitzustellen und den Zustand der zugehörigenFutureauf ready zu setzen.MethodCallProcessingMode: Konfigurationsparameter des Skeletons; im Diagramm explizit annotiert für die ModikEventoderkEventSingleThread.
3. Dynamisches Verhalten & Sequenzablauf
- Request-Phase (Client-Auslösung, asynchron/nicht-blockierend):
- Die
Client Applicationruftmethod call()amProxyauf. - Der
Proxydelegiert viaService method call()an dieCommunication Management Middleware, welcheMethod()amNetwork Bindingtriggert. - Das
Network BindingführtTransmitRequest()aus (Serialisierung der Methodenparameter in das PDU-/Netzwerkformat und Absenden). - Unmittelbar nach Absenden propagieren
Network Binding, Middleware undProxyeine Instanz vonara::core::Futurezurück an dieClient Application. Der Client-Thread wird nicht blockiert.
- Die
- Server-Verarbeitungsphase (Ereignisgesteuert via Skeleton):
- Das serverseitige
Network Bindingregistriert den Eingang (ReceiveRequest()) und übergibt die Nachricht viaProcessRequest()an die Middleware. - Die Middleware leitet die Anfrage über
Service method request()an dasSkeletonweiter. - Das
SkeletonruftExecute()an derServer applicationauf (basierend aufkEvent/kEventSingleThread). - Die
Server application:- Erstellt intern ein
ara::core::Promise()(Create ara::core::Promise()). - Führt die eigentliche Algorithmen-/Funktionslogik aus (
Execute implementation()). - Schreibt das Ergebnis oder den Fehler in das Promise (
Set Return Value / Error in Promise()). - Erzeugt daraus eine
Future(Create Future from Promise()) und liefert diese an dasSkeletonzurück.
- Erstellt intern ein
- Das
Skeletongibt dieFuturean die Middleware weiter.
- Das serverseitige
- Response-Übertragung (Server- zu Client-Medium):
- Die Middleware stößt am serverseitigen
Network BindingProcessReply()an. - Das
Network BindingführtTransmitReply()aus (Serialisierung der Rückgabewerte/Fehlerstrukturen und Rücksendung über das Transportmedium).
- Die Middleware stößt am serverseitigen
- Response-Empfang & Client-Auflösung:
- Das clientseitige
Network Bindingempfängt die Antwort (ReceiveReply()) und reicht sie mitReply()an die Middleware weiter. - Die Middleware setzt das Ergebnis über
Set ara::core::Promise(). - Dadurch wird das assoziierte Client-Handle
Trigger ara::core::Future()signalisiert (Zustand: ready). - Die
Client Applicationliest das Ergebnis synchron/blockierend oder polling-basiert überara::core::Future.GetResult()aus.
- Das clientseitige
4. Normative Relevanz & Entwickler-Hinweise
- API-Vertrag & Non-Blocking Design: Methodenaufrufe in
ara::comgeben grundsätzlichara::core::Future<Output>zurück. Aufrufe von.GetResult()blockieren den aufrufenden Thread bis zum Eintreffen der Antwort oder bis zum Timeout. In harten Echtzeit- oder Event-Loop-Kontexten darf.GetResult()nicht unbedacht aufgerufen werden; stattdessen sind Polling (wait_for) oder Callbacks/Continuations zu nutzen. - Skeleton Processing Mode Semantik:
- Bei
kEventwird die Methode im Kontext eines von der Middleware bereitgestellten Worker-Thread-Pools ausgeführt. Die Methodenimplementierung derServer applicationmuss vollständig reentrant und threadsicher sein. - Bei
kEventSingleThreadserialisiert die Middleware eingehende Aufrufe über einen dedizierten Thread. Dies verhindert Race-Conditions in der Applikation, birgt jedoch das Risiko von Head-of-Line-Blocking bei lang laufenden Methoden.
- Bei
- Fehlerbehandlung ohne Exceptions: AUTOSAR Adaptive untersagt C++-Exceptions in sicherheitskritischen Bereichen. Fehlerfälle (z. B. definierte
ApplicationErrorsoder Kommunikationsfehler) werden überara::core::Result<Output, ara::core::ErrorCode>innerhalb des Promise/Future-Paars transportiert und müssen vom Client viaara::core::Result::HasValue()validiert werden. - Serialisierungs- und Latenz-Budget: Da das
Network Bindingzwei Serialisierungs-/Deserialisierungszyklen (TransmitRequest,TransmitReply) durchläuft, müssen Methoden-Signaturen hinsichtlich Payload-Größen optimiert werden (insbesondere bei Verwendung von SOME/IP über Ethernet). Für hochfrequente oder volumige Nutzdaten (z. B. Sensor-/Kameradaten) ist das Event-Paradigma (mit Shared Memory / Zero-Copy) dem Request-Response-Methodenaufruf vorzuziehen.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.