持续集成状态
分支 | 海湾合作委员会 7.5.0 和 9.4.0 | 视觉工作室 2019 | |
---|---|---|---|
铿锵9.0 | 视觉工作室 2022 | ||
Xcode 15.2 | 明GW-w64 | ||
Xcode 15.4 | |||
掌握 | |||
发展 |
下载
C++ 微服务项目是用于构建模块化和动态的面向服务的应用程序的组件集合。它基于 OSGi,但经过定制以支持本机跨平台解决方案。
正确使用 C++ 微服务模式和概念可以使系统具有以下一个或多个属性:
没有,除了一个足够新的 C++ 编译器。包含所有第三方库依赖项,主要用于实现细节。
该库利用 C++17 语言和库功能,并在许多不同的平台上编译。
建议的绝对最低所需编译器版本:
并非所有绝对最低编译器版本都经过测试(如前所述)。我们测试并推荐以下编译器:
建议的最低 CMake 版本:
对于通过 GitHub Actions 进行的所有 CI 构建,我们使用的 CMake 版本(以及其他提供的软件的版本)由 GitHub 托管的运行器上提供的软件决定。
有关跑步者使用的特定软件版本的信息,请参阅以下资源:
以下是经过测试的编译器/操作系统组合的列表:
C++ 微服务项目最初是在德国癌症研究中心开发的。其源代码作为 GitHub 项目托管。有关详细的版权信息,请参阅顶级目录中的 COPYRIGHT 文件。
该项目根据 Apache License v2.0 获得许可。
CppMicroServices.org 欢迎具有不同背景和广泛经验的开发人员。一个多元化、包容的社区将创造出更多伟大的想法,提供更多独特的视角,产出更多优秀的代码。我们的目标是让 CppMicroServices 社区欢迎所有人。
为了明确我们对会员的期望,CppMicroServices 采用了contributor-covenant.org 定义的行为准则。该文档在许多开源社区中使用,我们相信它很好地阐明了我们的价值观。
请参阅行为准则 <code-of-conduct>`了解更多详细信息。
首先克隆项目存储库。需要注意的是,由于该项目使用 git 子模块,因此您必须使用 --recursive 标志克隆存储库。这还将克隆子模块并将它们放置在各自的目录中。要进一步了解 git 子模块的工作原理以及如何将它们克隆到磁盘上现有的存储库中,请参阅 Git 的文档。
本质上,C++ 微服务库在托管生命周期之上为您提供了强大的动态服务注册表。除其他事项外,该框架还管理称为捆绑包的模块化逻辑单元,这些逻辑单元包含在共享库或静态库中。库中的每个包都有一个关联的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 for C++ 的博客文章。
Git 存储库包含两个永恒分支:master 和development。 master 分支包含生产质量代码,其 HEAD 指向最新发布的版本。开发分支是默认分支,包含当前的开发状态。默认情况下,拉取请求针对开发分支。有关贡献过程的详细信息,请参阅CONTRIBUTING <contributing>`文件。
CppMicroServices 存储库在 .githooks 目录中定义其 git hook。通过在 CMakeLists.txt 文件中执行 git config core.hooksPath <path> 将该目录设置为 git hooks 的目录。
如果由于未安装 clang-format 而导致 clang-format 预提交挂钩失败,请安装它并将其放在路径上。同样,如果未安装 git-clang-format,请执行相同操作。 git-clang-format 附带 clang-format 的 LLVM 发行版。
如果这对您来说不可行,您可以在提交更改时指定 --no-verify。强烈建议不要这样做,您必须提供无法格式化提交的理由。
我们保留拒绝任何格式不正确且未指定有效理由的拉取请求的权利。