Statut d'intégration continue
Bifurquer | GCC 7.5.0 et 9.4.0 | Visual Studio 2019 | |
---|---|---|---|
Clang 9.0 | Visual Studio 2022 | ||
Xcode 15.2 | MinGW-w64 | ||
Xcode 15.4 | |||
maître | |||
développement |
Télécharger
Le projet C++ Micro Services est un ensemble de composants permettant de créer des applications modulaires et dynamiques orientées services. Il est basé sur OSGi, mais conçu pour prendre en charge les solutions multiplateformes natives.
Une utilisation appropriée des modèles et concepts C++ Micro Services conduit à des systèmes dotés d’une ou plusieurs des propriétés suivantes :
Aucun, sauf un compilateur C++ assez récent. Toutes les dépendances de bibliothèques tierces sont incluses et principalement utilisées pour les détails d'implémentation.
La bibliothèque utilise le langage et les fonctionnalités de la bibliothèque C++17 et se compile sur de nombreuses plates-formes différentes.
Versions minimales recommandées du compilateur requis :
Toutes les versions minimales absolues du compilateur ne sont pas testées (comme indiqué). Nous testons et recommandons les compilateurs suivants :
Version minimale recommandée de CMake :
Pour toutes les versions de CI via GitHub Actions, la version de CMake (et la version des autres logiciels fournis) que nous utilisons est déterminée par le logiciel fourni sur les exécuteurs hébergés par GitHub.
Pour plus d'informations sur les versions spécifiques des logiciels utilisés par les coureurs, veuillez consulter les ressources suivantes :
Vous trouverez ci-dessous une liste des combinaisons compilateur/OS testées :
Le projet C++ Micro Services a été initialement développé au Centre allemand de recherche sur le cancer. Son code source est hébergé en tant que projet GitHub. Consultez le fichier COPYRIGHT dans le répertoire de niveau supérieur pour obtenir des informations détaillées sur les droits d'auteur.
Ce projet est sous licence Apache License v2.0.
CppMicroServices.org accueille des développeurs issus d'horizons différents et d'un large éventail d'expériences. Une communauté diversifiée et inclusive créera davantage d’idées géniales, offrira des perspectives plus uniques et produira un code plus remarquable. Notre objectif est de rendre la communauté CppMicroServices accueillante pour tous.
Pour clarifier ce qui est attendu de nos membres, CppMicroServices a adopté le code de conduite défini par contributeur-covenant.org. Ce document est utilisé dans de nombreuses communautés open source et nous pensons qu'il exprime bien nos valeurs.
Veuillez vous référer au :any:`Code of Conduct <code-of-conduct>` pour plus de détails.
Commencez par cloner le référentiel du projet. Il est important de noter que puisque le projet utilise des sous-modules git, vous devez cloner le référentiel avec l'option --recursive. Cela clonera également les sous-modules et les placera dans leurs répertoires respectifs. Pour en savoir plus sur le fonctionnement des sous-modules git et sur la manière de les cloner dans un référentiel déjà existant sur votre disque, veuillez consulter la documentation de Git.
Essentiellement, la bibliothèque C++ Micro Services vous fournit un puissant registre de services dynamique en plus d'un cycle de vie géré. Le framework gère entre autres des unités logiques de modularité appelées bundles qui sont contenues dans des bibliothèques partagées ou statiques. Chaque bundle au sein d'une bibliothèque est associé à un objet :any:`cppmicroservices::BundleContext` , via lequel le registre de services est accessible.
Pour interroger le registre pour un objet de service implémentant une ou plusieurs interfaces spécifiques, le code ressemblerait à ceci :
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void UseService (BundleContext context)
{
auto serviceRef = context. GetServiceReference <SomeInterface>();
if (serviceRef)
{
auto service = context. GetService (serviceRef);
if (service) { /* do something */ }
}
}
L'enregistrement d'un objet de service sur une certaine interface ressemble à ceci :
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void RegisterSomeService (BundleContext context, const std::shared_ptr<SomeInterface>& service)
{
context. RegisterService <SomeInterface>(service);
}
Le modèle de service OSGi permet en outre d'annoter les services avec des propriétés et d'utiliser ces propriétés lors des recherches de services. Il permet également de suivre le cycle de vie des objets de service. Veuillez consulter la documentation pour plus d'exemples et de didacticiels ainsi que la référence de l'API. Il existe également un article de blog sur OSGi Lite pour C++.
Le dépôt Git contient deux branches éternelles, master et development. La branche master contient le code de qualité de production et son HEAD pointe vers la dernière version publiée. La branche de développement est la branche par défaut et contient l'état actuel du développement. Les requêtes pull ciblent par défaut la branche de développement. Voir le fichier :ref:`CONTRIBUTING <contributing>` pour plus de détails sur le processus de contribution.
Le référentiel CppMicroServices définit ses hooks git dans le répertoire .githooks. Ce répertoire est défini comme répertoire des hooks git via l'exécution de git config core.hooksPath <path> dans notre fichier CMakeLists.txt.
Si le hook de pré-validation du format clang échoue parce que le format clang n'est pas installé, veuillez l'installer et le placer sur le chemin. De même, si git-clang-format n'est pas installé, faites de même. git-clang-format est fourni avec la distribution LLVM de clang-format.
Si cela n'est pas réalisable pour vous, vous pouvez spécifier --no-verify lors de la validation de vos modifications. Ceci est fortement déconseillé et vous devez fournir une justification expliquant pourquoi vous ne parvenez pas à formater votre commit.
Nous nous réservons le droit de rejeter toute demande de tirage qui n'est pas correctement formatée et qui n'a pas de justification valide spécifiée.