L'ACE (Adaptive Communication Environment, ou environnement de communication adaptatif) est un environnement de programmation orientée objet, il est open source et est écrit en C++. ACE contient plusieurs composants qui simplifient le développement de logiciel de communication augmentant ainsi la flexibilité, l’efficacité, l'interopérabilité, la fiabilité et la portabilité. Les composants de l’ACE fournissent différents services comme la communication inter-processus (IPC), la gestion de mémoire, la synchronisation, la gestion des tâches, la gestion d’événements, la configuration de services répartis, ...
Augmentation de la portabilité : les composants ACE rendent simple l’écriture d’applications réseaux concurrentes ou autres sur un OS et de le porter vers un autre OS.
Augmentation de la qualité du logiciel : les composants ACE sont conçus à partir de modèles clés (Design Patterns) qui augmente la qualité, la portabilité, l'interopérabilité ainsi que la reutilisabilité et la modularité des logiciels de communications.
Augmentation de l’efficacité et de la prévisibilité : ACE est conçu pour supporter une large gamme d’applications qui requièrent une qualité de service (QoS), comme de faibles temps de latence, de haute performance, et la prévisibilité pour des applications temps-réel.
Ce middleware (logiciel intermédiaire) nous évite de coder en dur des applications comme les applications client-serveur avec des dépendances de langage, de système d’exploitation, de matériel, ...
L’ACE est conçu en trois couches de base :
La couche d’adaptation au système d’exploitation
La couche wrapper C++
La couche framework et pattern
La couche d’adaptation au système d’exploitation (OSAL : Operating system adaptation layer)
OSAL est une fine couche de code C++ qui se trouve entre la bibliothèque C (API) du système d’exploitation et le reste de l’ACE. Cette couche nous évite d’être dépendant de la plate-forme de développement (OS), ce qui implique que le code écrit avec ACE est relativement indépendant, donc portable.