継続的インテグレーションのステータス
支店 | GCC 7.5.0 および 9.4.0 | Visual Studio 2019 | |
---|---|---|---|
クラン 9.0 | Visual Studio 2022 | ||
Xcode 15.2 | MinGW-w64 | ||
Xcode 15.4 | |||
マスター | |||
発達 |
ダウンロード
C++ Micro Services プロジェクトは、モジュール式の動的なサービス指向アプリケーションを構築するためのコンポーネントのコレクションです。 OSGi に基づいていますが、ネイティブのクロスプラットフォーム ソリューションをサポートするように調整されています。
C++ マイクロ サービスのパターンと概念を適切に使用すると、次の 1 つ以上の特性を持つシステムが得られます。
十分に新しい C++ コンパイラを除いて、何もありません。すべてのサードパーティ ライブラリの依存関係が含まれており、主に実装の詳細に使用されます。
このライブラリは C++17 言語とライブラリの機能を利用し、さまざまなプラットフォームでコンパイルします。
推奨される絶対最小必須コンパイラ バージョン:
(注記したように) 絶対最小コンパイラ バージョンのすべてがテストされているわけではありません。次のコンパイラをテストし、推奨します。
推奨される最小必須 CMake バージョン:
GitHub Actions を介したすべての CI ビルドでは、使用する CMake バージョン (および他の提供ソフトウェアのバージョン) は、GitHub でホストされるランナーで提供されるソフトウェアによって決まります。
ランナーが使用するソフトウェアの特定のバージョンについては、次のリソースを参照してください。
以下は、テスト済みのコンパイラーと OS の組み合わせのリストです。
C++ マイクロ サービス プロジェクトは、当初、ドイツがん研究センターで開発されました。そのソース コードは GitHub プロジェクトとしてホストされています。著作権情報の詳細については、最上位ディレクトリにある COPYRIGHT ファイルを参照してください。
このプロジェクトは、Apache License v2.0 に基づいてライセンスされています。
CppMicroServices.org は、さまざまな背景と幅広い経験を持つ開発者を歓迎します。多様で包括的なコミュニティは、より優れたアイデアを生み出し、よりユニークな視点を提供し、より優れたコードを生成します。私たちの目標は、CppMicroServices コミュニティを誰にとっても歓迎するものにすることです。
メンバーに期待されることを明確にするために、CppMicroServices は contributor-covenant.org によって定義された行動規範を採用しています。この文書は多くのオープンソース コミュニティで使用されており、私たちの価値観がよく表現されていると考えています。
詳細については、:any:`行動規範 <code-of-conduct>`を参照してください。
まず、プロジェクト リポジトリのクローンを作成します。プロジェクトでは git サブモジュールを使用するため、 --recursive フラグを使用してリポジトリのクローンを作成する必要があることに注意することが重要です。これにより、サブモジュールのクローンも作成され、それぞれのディレクトリに配置されます。 git サブモジュールがどのように機能するか、およびそれらをディスク上の既存のリポジトリに複製する方法の詳細については、Git のドキュメントを参照してください。
基本的に、C++ マイクロ サービス ライブラリは、管理されたライフサイクル上に強力な動的サービス レジストリを提供します。このフレームワークは、特に、共有ライブラリまたは静的ライブラリに含まれるバンドルと呼ばれるモジュールの論理単位を管理します。ライブラリ内の各バンドルには、関連付けられた:any:`cppmicroservices::BundleContext`オブジェクトがあり、これを通じてサービス レジストリにアクセスします。
1 つ以上の特定のインターフェイスを実装するサービス オブジェクトをレジストリにクエリするには、コードは次のようになります。
# 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 */ }
}
}
特定のインターフェイスに対するサービス オブジェクトの登録は次のようになります。
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void RegisterSomeService (BundleContext context, const std::shared_ptr<SomeInterface>& service)
{
context. RegisterService <SomeInterface>(service);
}
さらに、OSGi サービス モデルでは、サービスにプロパティの注釈を付け、サービスの検索中にこれらのプロパティを使用することができます。また、サービス オブジェクトのライフサイクルを追跡することもできます。その他の例やチュートリアル、API リファレンスについては、ドキュメントを参照してください。 OSGi Lite for C++ に関するブログ投稿もあります。
Git リポジトリには、マスターと開発という 2 つの永遠のブランチが含まれています。 master ブランチには実稼働品質のコードが含まれており、その HEAD は最新のリリース バージョンを指します。開発ブランチはデフォルトのブランチであり、開発の現在の状態が含まれます。プル リクエストはデフォルトで開発ブランチをターゲットとしています。貢献プロセスの詳細については、:ref:`CONTRIBUTING <contributing>`ファイルを参照してください。
CppMicroServices リポジトリは、その git フックを .githooks ディレクトリに定義します。このディレクトリは、CMakeLists.txt ファイル内の git config core.hooksPath <path> を実行することにより、git フックのディレクトリとして設定されます。
Clang-format がインストールされていないために、clang-format のコミット前フックが失敗する場合は、clang-format をインストールしてパス上に配置してください。同様に、git-clang-format がインストールされていない場合は、同じことを実行します。 git-clang-format には、clang-format の LLVM ディストリビューションが付属しています。
これが不可能な場合は、変更をコミットするときに --no-verify を指定できます。これはあまりお勧めできません。コミットをフォーマットできない理由を説明する必要があります。
当社は、適切にフォーマットされておらず、有効な理由が指定されていないプル リクエストを拒否する権利を留保します。