Kontinuierlicher Integrationsstatus
Zweig | GCC 7.5.0 und 9.4.0 | Visual Studio 2019 | |
---|---|---|---|
Clang 9.0 | Visual Studio 2022 | ||
Xcode 15.2 | MinGW-w64 | ||
Xcode 15.4 | |||
Master | |||
Entwicklung |
Herunterladen
Das C++ Micro Services-Projekt ist eine Sammlung von Komponenten zum Aufbau modularer und dynamischer serviceorientierter Anwendungen. Es basiert auf OSGi, ist jedoch auf die Unterstützung nativer plattformübergreifender Lösungen zugeschnitten.
Die ordnungsgemäße Verwendung von C++ Micro Services-Mustern und -Konzepten führt zu Systemen mit einer oder mehreren der folgenden Eigenschaften:
Keine, außer einem ausreichend aktuellen C++-Compiler. Alle Bibliotheksabhängigkeiten von Drittanbietern sind enthalten und werden hauptsächlich für Implementierungsdetails verwendet.
Die Bibliothek nutzt die Sprach- und Bibliotheksfunktionen von C++17 und lässt sich auf vielen verschiedenen Plattformen kompilieren.
Empfohlene absolut erforderliche Compilerversionen:
Nicht alle Compilerversionen mit dem absoluten Minimum werden getestet (wie erwähnt). Wir testen und empfehlen folgende Compiler:
Empfohlene minimal erforderliche CMake-Version:
Für alle CI-Builds über GitHub Actions wird die von uns verwendete CMake-Version (und Version anderer bereitgestellter Software) durch die Software bestimmt, die auf den von GitHub gehosteten Runnern bereitgestellt wird.
Informationen zu den spezifischen Softwareversionen, die die Läufer verwenden, finden Sie in den folgenden Ressourcen:
Nachfolgend finden Sie eine Liste getesteter Compiler/Betriebssystem-Kombinationen:
Das Projekt C++ Micro Services wurde ursprünglich am Deutschen Krebsforschungszentrum entwickelt. Der Quellcode wird als GitHub-Projekt gehostet. Ausführliche Informationen zum Urheberrecht finden Sie in der COPYRIGHT-Datei im obersten Verzeichnis.
Dieses Projekt ist unter der Apache-Lizenz v2.0 lizenziert.
CppMicroServices.org heißt Entwickler mit unterschiedlichem Hintergrund und einem breiten Erfahrungsspektrum willkommen. Eine vielfältige und integrative Community wird mehr großartige Ideen hervorbringen, einzigartigere Perspektiven bieten und herausragenderen Code produzieren. Unser Ziel ist es, die CppMicroServices-Community für alle willkommen zu heißen.
Um Klarheit darüber zu schaffen, was von unseren Mitgliedern erwartet wird, hat CppMicroServices den von contributor-covenant.org definierten Verhaltenskodex übernommen. Dieses Dokument wird in vielen Open-Source-Communities verwendet und wir glauben, dass es unsere Werte gut zum Ausdruck bringt.
Weitere Einzelheiten finden Sie im :any:`Verhaltenskodex <code-of-conduct>` .
Beginnen Sie mit dem Klonen des Projekt-Repositorys. Es ist wichtig zu beachten, dass Sie das Repository mit dem Flag --recursive klonen müssen, da das Projekt Git-Submodule verwendet. Dadurch werden auch die Submodule geklont und in ihren jeweiligen Verzeichnissen abgelegt. Weitere Informationen zur Funktionsweise von Git-Submodulen und zum Klonen in ein bereits vorhandenes Repository auf Ihrer Festplatte finden Sie in der Git-Dokumentation.
Im Wesentlichen stellt Ihnen die C++ Micro Services-Bibliothek zusätzlich zu einem verwalteten Lebenszyklus eine leistungsstarke dynamische Dienstregistrierung zur Verfügung. Das Framework verwaltet unter anderem logische Modularitätseinheiten, sogenannte Bundles , die in gemeinsam genutzten oder statischen Bibliotheken enthalten sind. Jedem Bundle innerhalb einer Bibliothek ist ein :any:`cppmicroservices::BundleContext` -Objekt zugeordnet, über das auf die Dienstregistrierung zugegriffen wird.
Um die Registrierung nach einem Dienstobjekt abzufragen, das eine oder mehrere bestimmte Schnittstellen implementiert, würde der Code wie folgt aussehen:
# 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 */ }
}
}
Das Registrieren eines Dienstobjekts für eine bestimmte Schnittstelle sieht folgendermaßen aus:
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void RegisterSomeService (BundleContext context, const std::shared_ptr<SomeInterface>& service)
{
context. RegisterService <SomeInterface>(service);
}
Das OSGi-Dienstmodell ermöglicht außerdem die Annotation von Diensten mit Eigenschaften und die Verwendung dieser Eigenschaften bei Dienstsuchen. Es ermöglicht auch, den Lebenszyklus von Serviceobjekten zu verfolgen. Weitere Beispiele und Tutorials sowie die API-Referenz finden Sie in der Dokumentation. Es gibt auch einen Blogbeitrag über OSGi Lite für C++.
Das Git-Repository enthält zwei ewige Zweige: Master und Development. Der Hauptzweig enthält Produktionsqualitätscode und sein HEAD verweist auf die neueste veröffentlichte Version. Der Entwicklungszweig ist der Standardzweig und enthält den aktuellen Entwicklungsstand. Pull-Requests zielen standardmäßig auf den Entwicklungszweig ab. Einzelheiten zum Beitragsprozess finden Sie in der Datei :ref:`CONTRIBUTING <contributing>` .
Das CppMicroServices-Repository definiert seine Git-Hooks im Verzeichnis .githooks. Dieses Verzeichnis wird durch Ausführen von git config core.hooksPath <path> in unserer CMakeLists.txt-Datei als Verzeichnis für Git-Hooks festgelegt.
Wenn der Pre-Commit-Hook „clang-format“ fehlschlägt, weil „clang-format“ nicht installiert ist, installieren Sie ihn bitte und legen Sie ihn im Pfad ab. Wenn das Git-Clang-Format nicht installiert ist, machen Sie dasselbe. git-clang-format wird mit der LLVM-Distribution von clang-format geliefert.
Wenn dies für Sie nicht möglich ist, können Sie beim Festschreiben Ihrer Änderungen --no-verify angeben. Davon wird dringend abgeraten und Sie müssen begründen, warum Sie Ihren Commit nicht formatieren können.
Wir behalten uns das Recht vor, Pull-Anfragen abzulehnen, die nicht ordnungsgemäß formatiert sind und für die keine gültige Begründung angegeben ist.