{"id":15047648,"url":"https://github.com/cppmicroservices/cppmicroservices","last_synced_at":"2025-12-18T05:04:28.443Z","repository":{"id":2588170,"uuid":"3569726","full_name":"CppMicroServices/CppMicroServices","owner":"CppMicroServices","description":"An OSGi-like C++ dynamic module system and service registry","archived":false,"fork":false,"pushed_at":"2025-05-14T19:07:08.000Z","size":27892,"stargazers_count":835,"open_issues_count":67,"forks_count":267,"subscribers_count":67,"default_branch":"development","last_synced_at":"2025-05-14T19:09:00.267Z","etag":null,"topics":["boost","c","c-plus-plus","component-architecture","cpp","cpp17","cross-platform","microservice","microservices","microservices-architecture","microservices-framework","osgi"],"latest_commit_sha":null,"homepage":"http://cppmicroservices.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CppMicroServices.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.rst","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2012-02-28T09:32:28.000Z","updated_at":"2025-05-14T19:07:09.000Z","dependencies_parsed_at":"2023-07-06T07:47:30.192Z","dependency_job_id":"bbce37a6-63ee-4677-a127-09d9f4b9a821","html_url":"https://github.com/CppMicroServices/CppMicroServices","commit_stats":{"total_commits":1150,"total_committers":50,"mean_commits":23.0,"dds":0.7086956521739131,"last_synced_commit":"899530e5b6929c90479b1b6040d2a530776fc8a4"},"previous_names":["saschazelzer/cppmicroservices"],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2FCppMicroServices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2FCppMicroServices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2FCppMicroServices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CppMicroServices%2FCppMicroServices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CppMicroServices","download_url":"https://codeload.github.com/CppMicroServices/CppMicroServices/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254209859,"owners_count":22032897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boost","c","c-plus-plus","component-architecture","cpp","cpp17","cross-platform","microservice","microservices","microservices-architecture","microservices-framework","osgi"],"created_at":"2024-09-24T21:02:11.048Z","updated_at":"2025-12-18T05:04:28.425Z","avatar_url":"https://github.com/CppMicroServices.png","language":"C++","readme":"\n.. rubric:: Continuous Integration Status\n\n+-------------+---------------------------+--------------------------------------+----------------------------------------+\n| Branch      | GCC 7.5.0 and 9.4.0       | Visual Studio 2022                   |                                        |\n|             +---------------------------+--------------------------------------+----------------------------------------+\n|             | Clang 9.0                 | MinGW-w64                            |                                        |\n|             +---------------------------+--------------------------------------+----------------------------------------+\n|             | Xcode 15.2                |                                      |                                        |\n|             +---------------------------+--------------------------------------+----------------------------------------+\n|             | Xcode 15.4                |                                      |                                        |\n+=============+===========================+======================================+========================================+\n| master      | |BuildAndTestNix(master)| | |BuildAndTestWindows(master)|        | |Code Coverage Status|                 |\n+-------------+---------------------------+--------------------------------------+----------------------------------------+\n| development | |BuildAndTestNix|         | |BuildAndTestWindows|                | |Code Coverage Status (development)|   |\n+-------------+---------------------------+--------------------------------------+----------------------------------------+\n\n|Coverity Scan Build Status|\n\n|Performance Status|\n \n\nC++ Micro Services\n==================\n\n|RTD Build Status (stable)| |RTD Build Status (development)|\n\n`Download \u003chttps://github.com/CppMicroServices/CppMicroServices/releases\u003e`_\n\nIntroduction\n------------\n\nThe C++ Micro Services project is a collection of components for building\nmodular and dynamic service-oriented applications. It is based on\n`OSGi \u003chttp://osgi.org\u003e`_, but tailored to support native cross-platform solutions.\n\nProper usage of C++ Micro Services patterns and concepts leads to systems\nwith one or more of the following properties:\n\n- Re-use of software components\n- Loose coupling between service providers and consumers\n- Separation of concerns, based on a service-oriented design\n- Clean APIs based on service interfaces\n- Extensible and reconfigurable systems\n\n\nRequirements\n------------\n\nNone, except a recent enough C++ compiler. All third-party library\ndependencies are included and mostly used for implementation details.\n\nSupported Platforms\n-------------------\n\nThe library makes use of C++17 language and library features and compiles\non many different platforms.\n\nRecommended absolute minimum required compiler versions:\n\n- GCC 7.5.0\n- Clang 9.0\n- Clang from Xcode 10.0 (not tested)\n- Visual Studio 2017 (MSVC++ 15.0) (not tested)\n\nNot all of the absolute minimum compiler versions are tested (as noted). We test and recommend\nthe following compilers:\n\n- GCC 11.3.0\n- Clang 11.0\n- Clang from Xcode 15.2 and 15.4\n- Visual Studio 2022\n\nRecommended minimum required CMake version:\n\n- CMake 3.17.0\n\nFor all CI builds through GitHub Actions, the CMake version (and\nversion of other provided software) we use is determined by the \nsoftware provided on the GitHub-hosted runners.\n\nFor information about the specific versions of software the runners\nuse, please see the following resources:\n\n- `ubuntu-22.04 Runner Information \u003chttps://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md\u003e`_\n- `macos-13 Runner Information \u003chttps://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md\u003e`_\n- `macos-14 Runner Information \u003chttps://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md\u003e`_\n- `windows-2022 Runner Information \u003chttps://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md\u003e`_\n- `windows-2025 Runner Information \u003chttps://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md\u003e`_\n\nBelow is a list of tested compiler/OS combinations:\n\n- GCC 11.4.0 (Ubuntu 22.04)\n- Clang 14.0.0 (Ubuntu 22.04)\n- Apple Clang from Xcode 15.2.0 (OS X 13.3.0)\n- Apple Clang from Xcode 15.4.0 (OS X 14.5.0)\n- Visual Studio 2022\n- MinGW-w64\n\nLegal\n-----\n\nThe C++ Micro Services project was initially developed at the German\nCancer Research Center. Its source code is hosted as a `GitHub Project`_.\nSee the `COPYRIGHT file`_ in the top-level directory for detailed\ncopyright information.\n\nThis project is licensed under the `Apache License v2.0`_.\n\nCode of Conduct\n---------------\n\nCppMicroServices.org welcomes developers with different backgrounds and\na broad range of experience. A diverse and inclusive community will\ncreate more great ideas, provide more unique perspectives, and produce\nmore outstanding code. Our aim is to make the CppMicroServices community\nwelcoming to everyone.\n\nTo provide clarity of what is expected of our members, CppMicroServices\nhas adopted the code of conduct defined by\n`contributor-covenant.org \u003chttp://contributor-covenant.org\u003e`_. This\ndocument is used across many open source communities, and we believe it\narticulates our values well.\n\nPlease refer to the :any:`Code of Conduct \u003ccode-of-conduct\u003e` for further\ndetails.\n\nQuick Start\n-----------\n\nStart by cloning the project repository. It is important to note that since\nthe project utilizes git submodules, you must clone the repository with the\n`--recursive` flag. This will also clone the submodules and place them in\ntheir respective directories. For further reading about how git submodules\nwork and how to clone them into an already existing repository on your disk,\nplease see `Git's documentation \u003chttps://git-scm.com/book/en/v2/Git-Tools-Submodules\u003e`_.\n\nEssentially, the C++ Micro Services library provides you with a powerful\ndynamic service registry on top of a managed lifecycle. The framework manages,\namong other things, logical units of modularity called *bundles* that\nare contained in shared or static libraries. Each bundle\nwithin a library has an associated :any:`cppmicroservices::BundleContext`\nobject, through which the service registry is accessed.\n\nTo query the registry for a service object implementing one or more\nspecific interfaces, the code would look like this:\n\n.. code:: cpp\n\n    #include \"cppmicroservices/BundleContext.h\"\n    #include \"SomeInterface.h\"\n\n    using namespace cppmicroservices;\n\n    void UseService(BundleContext context)\n    {\n      auto serviceRef = context.GetServiceReference\u003cSomeInterface\u003e();\n      if (serviceRef)\n      {\n        auto service = context.GetService(serviceRef);\n        if (service) { /* do something */ }\n      }\n    }\n\nRegistering a service object against a certain interface looks like\nthis:\n\n.. code:: cpp\n\n    #include \"cppmicroservices/BundleContext.h\"\n    #include \"SomeInterface.h\"\n\n    using namespace cppmicroservices;\n\n    void RegisterSomeService(BundleContext context, const std::shared_ptr\u003cSomeInterface\u003e\u0026 service)\n    {\n      context.RegisterService\u003cSomeInterface\u003e(service);\n    }\n\nThe OSGi service model additionally allows to annotate services with\nproperties and using these properties during service look-ups. It also\nallows to track the life-cycle of service objects. Please see the\n`Documentation \u003chttp://docs.cppmicroservices.org\u003e`_\nfor more examples and tutorials and the API reference. There is also a\nblog post about `OSGi Lite for C++ \u003chttp://blog.cppmicroservices.org/2012/04/15/osgi-lite-for-c++\u003e`_.\n\nGit Branch Conventions\n----------------------\n\nThe Git repository contains two eternal branches,\n`master \u003chttps://github.com/CppMicroServices/CppMicroServices/tree/master/\u003e`_\nand\n`development \u003chttps://github.com/CppMicroServices/CppMicroServices/tree/development/\u003e`_.\nThe master branch contains production quality code and its HEAD points\nto the latest released version. The development branch is the default\nbranch and contains the current state of development. Pull requests by\ndefault target the development branch. See the :ref:`CONTRIBUTING \u003ccontributing\u003e`\nfile for details about the contribution process.\n\n\n.. _COPYRIGHT file: https://github.com/CppMicroServices/CppMicroServices/blob/development/COPYRIGHT\n.. _GitHub Project: https://github.com/CppMicroServices/CppMicroServices\n.. _Apache License v2.0: http://www.apache.org/licenses/LICENSE-2.0\n\n.. |BuildAndTestNix| image:: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_nix.yml/badge.svg?branch=development\u0026event=push\n   :target: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_nix.yml\n.. |BuildAndTestNix(master)| image:: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_nix.yml/badge.svg?branch=master\u0026event=push\n   :target: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_nix.yml\n.. |BuildAndTestWindows| image:: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_windows.yml/badge.svg?branch=development\u0026event=push\n   :target: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_windows.yml\n.. |BuildAndTestWindows(master)| image:: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_windows.yml/badge.svg?branch=master\u0026event=push\n   :target: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/build_and_test_windows.yml   \n.. |Coverity Scan Build Status| image:: https://img.shields.io/coverity/scan/1329.svg?style=flat-square\n   :target: https://scan.coverity.com/projects/1329\n.. |RTD Build Status (stable)| image:: https://readthedocs.org/projects/cppmicroservices/badge/?version=stable\u0026style=flat-square\n   :target: http://docs.cppmicroservices.org/en/stable/?badge=stable\n   :alt: Documentation Status (stable)\n.. |RTD Build Status (development)| image:: https://readthedocs.org/projects/cppmicroservices/badge/?version=latest\u0026style=flat-square\n   :target: http://docs.cppmicroservices.org/en/latest/?badge=development\n   :alt: Documentation Status (development)\n.. |Code Coverage Status| image:: https://img.shields.io/codecov/c/github/CppMicroServices/CppMicroServices/master.svg?style=flat-square\n   :target: https://codecov.io/gh/cppmicroservices/CppMicroServices/branch/master\n.. |Code Coverage Status (development)| image:: https://img.shields.io/codecov/c/github/CppMicroServices/CppMicroServices/development.svg?style=flat-square\n   :target: https://codecov.io/gh/cppmicroservices/CppMicroServices/branch/development\n.. |Performance Status| image:: https://github.com/CppMicroServices/CppMicroServices/actions/workflows/performance_windows.yml/badge.svg\n   :target: https://cppmicroservices.org/dev/bench/\n\nGit Hooks General Information\n-----------------------------\n\nThe CppMicroServices repository defines its git hooks in the `.githooks` directory. This directory is\nset as the directory for git hooks via executing `git config core.hooksPath \u003cpath\u003e` in our `CMakeLists.txt` file.\n\nGit Hooks Failure Help\n----------------------\n\nIf the clang-format pre-commit hook fails because `clang-format` is not installed, please install it and\nput it on the path. Similarly, if `git-clang-format` is not installed, do the same. `git-clang-format` comes\nwith the LLVM distribution of `clang-format`.\n\nIf this is not feasible for you, you can specify `--no-verify` when committing your changes. This is heavily discouraged\nand you must provide a justification as to why you are unable to format your commit.\n\nWe reserve the right to reject any pull requests that are not properly formatted and do not have a\nvalid justification specified.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcppmicroservices%2Fcppmicroservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcppmicroservices%2Fcppmicroservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcppmicroservices%2Fcppmicroservices/lists"}