All Projects → CppMicroServices → Cppmicroservices

CppMicroServices / Cppmicroservices

Licence: other
An OSGi-like C++ dynamic module system and service registry

Projects that are alternatives of or similar to Cppmicroservices

Viper
Viper 是一个基于Anno微服务引擎开发的Dashboard项目、示例项目。Anno 底层通讯采用 grpc、thrift。自带服务发现、调用链追踪、Cron 调度、限流、事件总线等等
Stars: ✭ 402 (-16.6%)
Mutual labels:  microservice
Moleculer
🚀 Progressive microservices framework for Node.js
Stars: ✭ 4,845 (+905.19%)
Mutual labels:  microservice
Gearbox
Gearbox ⚙️ is a web framework written in Go with a focus on high performance
Stars: ✭ 455 (-5.6%)
Mutual labels:  microservice
Bk Cmdb
蓝鲸智云配置平台(BlueKing CMDB)
Stars: ✭ 4,269 (+785.68%)
Mutual labels:  microservice
Flower
反应式微服务框架Flower
Stars: ✭ 432 (-10.37%)
Mutual labels:  microservice
Bnd
Bnd/Bndtools. Tooling to build OSGi bundles including Eclipse, Maven, and Gradle plugins.
Stars: ✭ 446 (-7.47%)
Mutual labels:  osgi
Cloud Native Starter
Cloud Native Starter for Java/Jakarta EE based Microservices on Kubernetes and Istio
Stars: ✭ 402 (-16.6%)
Mutual labels:  microservice
Besticon
Favicon service written in Go
Stars: ✭ 472 (-2.07%)
Mutual labels:  microservice
Berial
😈 Simple micro-front-end framework.
Stars: ✭ 436 (-9.54%)
Mutual labels:  microservice
Paseto
Platform-Agnostic Security Tokens implementation in GO (Golang)
Stars: ✭ 461 (-4.36%)
Mutual labels:  microservice
Matecloud
🔥MateCloud是一款基于Spring Cloud Alibaba的微服务架构。目前已经整合Spring Cloud Alibaba、Spring Security Oauth2、Feign、Dubbo、JetCache、RocketMQ等服务套件,为您的开发保驾护航
Stars: ✭ 412 (-14.52%)
Mutual labels:  microservice
Nutzboot
NutzBoot,简称NB,是可靠的企业级微服务框架,提供自动配置,嵌入式web服务,分布式会话,服务治理,负载均衡,hystrix,RPC等一篮子解决方案
Stars: ✭ 430 (-10.79%)
Mutual labels:  microservice
Camelinaction2
🐫 This project hosts the source code for the examples of the Camel in Action 2nd ed book 📕 written by Claus Ibsen and Jonathan Anstey.
Stars: ✭ 453 (-6.02%)
Mutual labels:  microservice
Hydra
后端一站式微服务框架,提供API、web、websocket,RPC、任务调度、消息消费服务器
Stars: ✭ 407 (-15.56%)
Mutual labels:  microservice
Imgproxy
Fast and secure standalone server for resizing and converting remote images
Stars: ✭ 5,688 (+1080.08%)
Mutual labels:  microservice
Agileconfig
基于.NET Core开发的轻量级分布式配置中心 / .NET Core light configuration server
Stars: ✭ 403 (-16.39%)
Mutual labels:  microservice
Kubernetes Handbook
Kubernetes Handbook (Kubernetes指南) https://kubernetes.feisky.xyz
Stars: ✭ 4,511 (+835.89%)
Mutual labels:  microservice
Microservices
Microservices from Design to Deployment 中文版 《微服务:从设计到部署》
Stars: ✭ 4,637 (+862.03%)
Mutual labels:  microservice
Turkish Microservice Architecture Book
Open Source Turkish Microservices eBook. Feel free to contribute.
Stars: ✭ 469 (-2.7%)
Mutual labels:  microservice
Typescript Rest
This is a lightweight annotation-based expressjs extension for typescript.
Stars: ✭ 458 (-4.98%)
Mutual labels:  microservice

.. rubric:: Continuous Integration Status

+-------------+-------------------------+--------------------------+------------------------+ | Branch | GCC 5.4 and 8.0 | Visual Studio 2015 | | | +-------------------------+--------------------------+------------------------+ | | Xcode 7.3 and 11.6 | Visual Studio 2017 | | | +-------------------------+--------------------------+------------------------+ | | Clang 3.5 and 6.0 | Visual Studio 2019 | | | +-------------------------+--------------------------+------------------------+ | | | MinGW-w64 | | +=============+=========================+==========================+========================+ | master | |Linux Build Status| | |Windows Build status| | |Code Coverage Status| | +-------------+-------------------------+--------------------------+------------------------+ | development | |Linux Build Status | |Windows Build status | |Code Coverage Status | | | (development)| | (development)| | (development)| | +-------------+-------------------------+--------------------------+------------------------+

|Coverity Scan Build Status|

C++ Micro Services

|RTD Build Status (stable)| |RTD Build Status (development)|

Download <https://github.com/CppMicroServices/CppMicroServices/releases>_

Introduction

The C++ Micro Services project is a collection of components for building modular and dynamic service-oriented applications. It is based on OSGi <http://osgi.org>_, but tailored to support native cross-platform solutions.

Proper usage of C++ Micro Services patterns and concepts leads to systems with one or more of the following properties:

  • Re-use of software components
  • Loose coupling between service providers and consumers
  • Separation of concerns, based on a service-oriented design
  • Clean APIs based on service interfaces
  • Extensible and reconfigurable systems

Requirements

None, except a recent enough C++ compiler. All third-party library dependencies are included and mostly used for implementation details.

Supported Platforms

The library makes use of C++14 language and library features and compiles on many different platforms.

Recommended minimum required compiler versions:

  • GCC 5.4
  • Clang 3.5
  • Clang from Xcode 8.0
  • Visual Studio 2015

You may use older compilers, but certain functionality may not be available. Check the warnings printed during configuration of your build tree. The following are the absolute minimum requirements:

  • GCC 5.1
  • Clang 3.5
  • Clang from Xcode 7.3
  • Visual Studio 2015 (MSVC++ 14.0)

Recommended minimum required CMake version:

  • CMake 3.12.4

Below is a list of tested compiler/OS combinations:

  • GCC 5.4 (Ubuntu 14.04) via Travis CI
  • GCC 8.0 (Ubuntu 14.04) via Travis CI
  • Clang 3.5 (Ubuntu 14.04) via Travis CI
  • Clang 6.0 (Ubuntu 14.04) via Travis CI
  • Clang Xcode 7.3 (OS X 10.11) via Travis CI
  • Clang Xcode 10.3 (OS X 10.14) via Travis CI
  • Visual Studio 2015 via Appveyor
  • Visual Studio 2017 via Appveyor
  • Visual Studio 2019 via Appveyor
  • MinGW-w64 via Appveyor

Legal

The C++ Micro Services project was initially developed at the German Cancer Research Center. Its source code is hosted as a GitHub Project. See the COPYRIGHT file in the top-level directory for detailed copyright information.

This project is licensed under the Apache License v2.0_.

Code of Conduct

CppMicroServices.org welcomes developers with different backgrounds and a broad range of experience. A diverse and inclusive community will create more great ideas, provide more unique perspectives, and produce more outstanding code. Our aim is to make the CppMicroServices community welcoming to everyone.

To provide clarity of what is expected of our members, CppMicroServices has adopted the code of conduct defined by contributor-covenant.org <http://contributor-covenant.org>_. This document is used across many open source communities, and we believe it articulates our values well.

Please refer to the :any:Code of Conduct <code-of-conduct> for further details.

Quick Start

Start by cloning the project repository. It is important to note that since the project utilizes git submodules, you must clone the repository with the --recursive flag. This will also clone the submodules and place them in their respective directories. For further reading about how git submodules work and how to clone them into an already existing repository on your disk, please see Git's documentation <https://git-scm.com/book/en/v2/Git-Tools-Submodules>_.

Essentially, the C++ Micro Services library provides you with a powerful dynamic service registry on top of a managed lifecycle. The framework manages, among other things, logical units of modularity called bundles that are contained in shared or static libraries. Each bundle within a library has an associated :any:cppmicroservices::BundleContext object, through which the service registry is accessed.

To query the registry for a service object implementing one or more specific interfaces, the code would look like this:

.. code:: cpp

#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 */ }
  }
}

Registering a service object against a certain interface looks like this:

.. code:: cpp

#include "cppmicroservices/BundleContext.h"
#include "SomeInterface.h"

using namespace cppmicroservices;

void RegisterSomeService(BundleContext context, const std::shared_ptr<SomeInterface>& service)
{
  context.RegisterService<SomeInterface>(service);
}

The OSGi service model additionally allows to annotate services with properties and using these properties during service look-ups. It also allows to track the life-cycle of service objects. Please see the Documentation <http://docs.cppmicroservices.org>_ for more examples and tutorials and the API reference. There is also a blog post about OSGi Lite for C++ <http://blog.cppmicroservices.org/2012/04/15/osgi-lite-for-c++>_.

Git Branch Conventions

The Git repository contains two eternal branches, master <https://github.com/CppMicroServices/CppMicroServices/tree/master/>_ and development <https://github.com/CppMicroServices/CppMicroServices/tree/development/>_. The master branch contains production quality code and its HEAD points to the latest released version. The development branch is the default branch and contains the current state of development. Pull requests by default target the development branch. See the :ref:CONTRIBUTING <contributing> file for details about the contribution process.

.. _COPYRIGHT file: https://github.com/CppMicroServices/CppMicroServices/blob/development/COPYRIGHT .. _GitHub Project: https://github.com/CppMicroServices/CppMicroServices .. _Apache License v2.0: http://www.apache.org/licenses/LICENSE-2.0

.. |Linux Build Status| image:: https://img.shields.io/travis/CppMicroServices/CppMicroServices/master.svg?style=flat-square&label=Linux%20%26%20OS%20X :target: http://travis-ci.org/CppMicroServices/CppMicroServices .. |Windows Build status| image:: https://img.shields.io/appveyor/ci/cppmicroservices/cppmicroservices/master.svg?style=flat-square&label=Windows :target: https://ci.appveyor.com/project/cppmicroservices/cppmicroservices/branch/master .. |Linux Build Status (development)| image:: https://img.shields.io/travis/CppMicroServices/CppMicroServices/development.svg?style=flat-square&label=Linux%20%26%20OS%20X :target: https://travis-ci.org/CppMicroServices/CppMicroServices .. |Windows Build status (development)| image:: https://img.shields.io/appveyor/ci/cppmicroservices/cppmicroservices/development.svg?style=flat-square&label=Windows :target: https://ci.appveyor.com/project/cppmicroservices/cppmicroservices/branch/development .. |Coverity Scan Build Status| image:: https://img.shields.io/coverity/scan/1329.svg?style=flat-square :target: https://scan.coverity.com/projects/1329 .. |RTD Build Status (stable)| image:: https://readthedocs.org/projects/cppmicroservices/badge/?version=stable&style=flat-square :target: http://docs.cppmicroservices.org/en/stable/?badge=stable :alt: Documentation Status (stable) .. |RTD Build Status (development)| image:: https://readthedocs.org/projects/cppmicroservices/badge/?version=latest&style=flat-square :target: http://docs.cppmicroservices.org/en/latest/?badge=development :alt: Documentation Status (development) .. |Code Coverage Status| image:: https://img.shields.io/codecov/c/github/CppMicroServices/CppMicroServices/master.svg?style=flat-square :target: https://codecov.io/gh/cppmicroservices/CppMicroServices/branch/master .. |Code Coverage Status (development)| image:: https://img.shields.io/codecov/c/github/CppMicroServices/CppMicroServices/development.svg?style=flat-square :target: https://codecov.io/gh/cppmicroservices/CppMicroServices/branch/development

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].