Adaptive Kommunikationsumgebung

Die ACE ( Adaptive Communication Environment ) ist eine objektorientierte Programmierumgebung , Open Source und in C ++ geschrieben. ACE enthält mehrere Komponenten, die die Entwicklung von Kommunikationssoftware vereinfachen und dadurch die Flexibilität, Effizienz, Interoperabilität , Zuverlässigkeit und Portabilität erhöhen . Die Komponenten des ACE bieten verschiedene Dienste wie Interprozesskommunikation (IPC), Speicherverwaltung, Synchronisation , Aufgabenverwaltung, Ereignisverwaltung, Konfiguration verteilter Dienste usw.

Einige Vorteile von ACE

ACE-Architektur

ACE besteht aus drei Grundschichten:

Die Betriebssystemanpassungsschicht (OSAL)

OSAL ist eine dünne Schicht aus C ++ - Code, die sich zwischen der C-Bibliothek ( API ) des Betriebssystems und dem Rest des ACE befindet. Diese Schicht erspart uns die Abhängigkeit von der Entwicklungsplattform (OS), was bedeutet, dass der mit ACE geschriebene Code relativ unabhängig und daher portabel ist. Dies erklärt, warum das ACE- Framework auf vielen Betriebssystemen wie VxWorks , Chorus, LynxOS , RTEMS , Win32 , Solaris , Debian , RedHat , ... funktioniert.

Das OSAL kapselt daher die Funktionen der OS- API, dh diese Schicht bietet eine gemeinsame Basis von Systemfunktionen auf allen Plattformen, auf denen ACE portiert wird.

Die C ++ - Wrapper-Ebene

Diese Ebene enthält C ++ - Klassen, die Funktionen und Daten in objektorientierten Schnittstellen kapseln. Diese Schicht ist der größte Teil des ACE und enthält 50% des gesamten Codes.

Die C ++ - Wrapper bieten dieselben Dienste wie das OSAL, außer dass die Funktionen in Klassen und Objekten organisiert sind, was die Verwendung des ACE erleichtert. Darüber hinaus macht die Verwendung von C ++ die Anwendung robust, da C ++ - Wrapper sind stark typisiert, sodass der Compiler eine Typverletzung eher zur Kompilierungszeit als zur Laufzeit erkennen kann (im Gegensatz zu OS C-APIs wie Sockets, bei denen eine Typverletzung nur zur Laufzeit erkannt wird). Anwendungen verwenden Wrapper-Klassen durch Vererbung, Aggregation und / oder Instanziierung.

Die Gerüst- und Musterschicht

Die Framework-Schicht ist die Schicht der höchsten Ebene von ACE. Diese Schicht basiert auf mehreren Entwurfsmustern, die für den Bereich der Kommunikationssoftware spezifisch sind.

Muster bieten Lösungen für häufig auftretende Softwareprobleme, die in bestimmten Kontexten auftreten. Sie sind bewährte und bekannte Programmiermethoden, um Eigenschaften wie Konsistenz, Robustheit, Wiederverwendbarkeit usw. bereitzustellen.

Frameworks sind "semi-vollständige" Anwendungen, die als konkrete Implementierungen von Entwurfsmustern angesehen werden können und darauf abzielen, einer Domäne, dh einem Framework, eine Struktur und spezifische Funktionen bereitzustellen. Dies ist eine Sammlung von Klassen, die zusammenarbeiten, um ein zu erstellen wiederverwendbare Architektur für eine Familie von Anwendungen.

Die verschiedenen ACE-Frameworks

Reaktor  : Synchrone Ereignisverarbeitungsschnittstelle aus verschiedenen Quellen (Timer, E / A, Signale). Es implementiert daher die Erkennung von Ereignissen synchron, das Demultiplexen und das Senden von Ereignissen.

Acceptor - Connector  : Stellt eine Verbindung zwischen einem Client (Connector) und einem Server (Acceptor) her, indem Anwendungen die Schlüsseleigenschaften ihrer Verbindungstopologie (UNIX Socket, UDP, TCP usw.) unabhängig von den von ihnen bereitgestellten Diensten konfigurieren können.

Aufgabe  : Erstellen Sie ein gleichzeitiges Modell, das eine Strategie für die Verwaltung des Nachrichtenspeichers und die Synchronisierung enthält.

Proactor  : Asynchrone E / A-Ereignisverarbeitungsschnittstelle. Es ermöglicht daher ein effizientes Demultiplexen und Versenden von Ereignissen, die durch den Abschluss asynchroner E / A-Operationen ausgelöst werden.

Streams : Bietet ein Framework für Systeme, die mit Datenströmen umgehen. Es erstellt daher geschichtete Dienste und überträgt Nachrichten (zwischen diesen Schichten).

Service Configurator  : Anwendungskonfigurationsschnittstelle (zur Laufzeit). Es entkoppelt das Verhalten von Diensten, wenn Implementierungen dieser Dienste in Anwendungsprozessen konfiguriert werden.

Externe Links

Literaturverzeichnis