Статус непрерывной интеграции
Ветвь | GCC 7.5.0 и 9.4.0 | Визуальная Студия 2019 | |
---|---|---|---|
Кланг 9.0 | Визуальная Студия 2022 | ||
Хкод 15.2 | MinGW-w64 | ||
Хкод 15.4 | |||
владелец | |||
разработка |
Скачать
Проект C++ Micro Services представляет собой набор компонентов для создания модульных и динамических сервис-ориентированных приложений. Он основан на OSGi, но адаптирован для поддержки собственных кроссплатформенных решений.
Правильное использование шаблонов и концепций C++ Micro Services приводит к созданию систем с одним или несколькими из следующих свойств:
Ничего, кроме достаточно нового компилятора C++. Все зависимости сторонних библиотек включены и в основном используются для деталей реализации.
Библиотека использует возможности языка и библиотеки C++17 и компилируется на различных платформах.
Рекомендуемый абсолютный минимум требуемых версий компилятора:
Не все абсолютные минимальные версии компилятора протестированы (как отмечалось). Мы тестируем и рекомендуем следующие компиляторы:
Рекомендуемая минимальная необходимая версия CMake:
Для всех сборок CI с помощью GitHub Actions используемая нами версия CMake (и версия другого предоставленного программного обеспечения) определяется программным обеспечением, предоставляемым на средах выполнения, размещенных на GitHub.
Информацию о конкретных версиях программного обеспечения, которые используют бегуны, можно найти на следующих ресурсах:
Ниже приведен список протестированных комбинаций компилятора и ОС:
Проект C++ Micro Services изначально был разработан в Немецком онкологическом исследовательском центре. Его исходный код размещен как проект GitHub. Подробную информацию об авторских правах смотрите в файле COPYRIGHT в каталоге верхнего уровня.
Этот проект лицензируется по лицензии Apache v2.0.
CppMicroServices.org приветствует разработчиков с разным опытом и опытом. Разнообразное и инклюзивное сообщество будет создавать больше замечательных идей, предлагать больше уникальных точек зрения и создавать более выдающийся код. Наша цель — сделать сообщество CppMicroServices гостеприимным для всех.
Чтобы внести ясность в то, что ожидается от наших участников, CppMicroServices приняла кодекс поведения, определенный contributor-covenant.org. Этот документ используется во многих сообществах с открытым исходным кодом, и мы считаем, что он хорошо отражает наши ценности.
Дополнительную информацию см. в :any:`Кодексе поведения <кодекс поведения>` .
Начните с клонирования репозитория проекта. Важно отметить, что поскольку в проекте используются подмодули git, вам необходимо клонировать репозиторий с флагом --recursive. Это также клонирует подмодули и помещает их в соответствующие каталоги. Дополнительную информацию о том, как работают подмодули git и как их клонировать в уже существующий репозиторий на вашем диске, см. в документации Git.
По сути, библиотека C++ Micro Services предоставляет вам мощный динамический реестр служб в дополнение к управляемому жизненному циклу. Платформа управляет, среди прочего, логическими единицами модульности, называемыми пакетами , которые содержатся в общих или статических библиотеках. Каждый пакет в библиотеке имеет связанный объект :any:`cppmicroservices::BundleContext` , через который осуществляется доступ к реестру служб.
Чтобы запросить в реестре объект службы, реализующий один или несколько конкретных интерфейсов, код будет выглядеть следующим образом:
# 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 для C++.
Репозиторий Git содержит две вечные ветки: master и development. Основная ветка содержит код производственного качества, а ее HEAD указывает на последнюю выпущенную версию. Ветка разработки является веткой по умолчанию и содержит информацию о текущем состоянии разработки. Запросы на включение по умолчанию нацелены на ветку разработки. Подробную информацию о процессе внесения вклада см. в файле :ref:`CONTRIBUTING <contributing>` .
Репозиторий CppMicroServices определяет свои git-хуки в каталоге .githooks. Этот каталог устанавливается как каталог для перехватчиков git посредством выполнения git config core.hooksPath <path> в нашем файле CMakeLists.txt.
Если ловушка предварительной фиксации clang-format не удалась, потому что clang-format не установлен, установите его и поместите в путь. Аналогично, если git-clang-format не установлен, сделайте то же самое. git-clang-format поставляется с дистрибутивом clang-format LLVM.
Если для вас это невозможно, вы можете указать --no-verify при фиксации изменений. Это категорически не рекомендуется, и вы должны предоставить обоснование того, почему вы не можете отформатировать свой коммит.
Мы оставляем за собой право отклонять любые запросы на включение, которые не отформатированы должным образом и не имеют действительного обоснования.