Status de integração contínua
Filial | GCC 7.5.0 e 9.4.0 | Estúdio Visual 2019 | |
---|---|---|---|
Clang 9.0 | Estúdio Visual 2022 | ||
Xcode 15.2 | MinGW-w64 | ||
Xcode 15.4 | |||
mestre | |||
desenvolvimento |
Download
O projeto C++ Micro Services é uma coleção de componentes para a construção de aplicativos modulares e dinâmicos orientados a serviços. É baseado em OSGi, mas adaptado para suportar soluções nativas de plataforma cruzada.
O uso adequado de padrões e conceitos de micro serviços C++ leva a sistemas com uma ou mais das seguintes propriedades:
Nenhum, exceto um compilador C++ recente o suficiente. Todas as dependências de bibliotecas de terceiros estão incluídas e são usadas principalmente para detalhes de implementação.
A biblioteca faz uso da linguagem C++ 17 e de recursos de biblioteca e é compilada em muitas plataformas diferentes.
Versões mínimas absolutas recomendadas do compilador:
Nem todas as versões mínimas absolutas do compilador são testadas (conforme observado). Testamos e recomendamos os seguintes compiladores:
Versão mínima recomendada do CMake:
Para todas as compilações de CI por meio do GitHub Actions, a versão do CMake (e a versão de outro software fornecido) que usamos é determinada pelo software fornecido nos executores hospedados no GitHub.
Para obter informações sobre as versões específicas do software que os executores usam, consulte os seguintes recursos:
Abaixo está uma lista de combinações testadas de compilador/sistema operacional:
O projeto C++ Micro Services foi inicialmente desenvolvido no Centro Alemão de Pesquisa do Câncer. Seu código-fonte está hospedado como um projeto GitHub. Consulte o arquivo COPYRIGHT no diretório de nível superior para obter informações detalhadas sobre direitos autorais.
Este projeto está licenciado sob a Licença Apache v2.0.
CppMicroServices.org acolhe desenvolvedores com diferentes formações e uma ampla gama de experiências. Uma comunidade diversificada e inclusiva criará mais ideias excelentes, fornecerá perspectivas mais exclusivas e produzirá códigos mais excelentes. Nosso objetivo é tornar a comunidade CppMicroServices acolhedora para todos.
Para esclarecer o que se espera de nossos membros, a CppMicroServices adotou o código de conduta definido por contribuidor-covenant.org. Este documento é usado em muitas comunidades de código aberto e acreditamos que ele articula bem nossos valores.
Por favor consulte o :any:`Código de Conduta <código de conduta>` para mais detalhes.
Comece clonando o repositório do projeto. É importante observar que, como o projeto utiliza submódulos git, você deve clonar o repositório com o sinalizador --recursive. Isso também clonará os submódulos e os colocará em seus respectivos diretórios. Para ler mais sobre como os submódulos git funcionam e como cloná-los em um repositório já existente em seu disco, consulte a documentação do Git.
Essencialmente, a biblioteca C++ Micro Services fornece um poderoso registro de serviço dinâmico além de um ciclo de vida gerenciado. A estrutura gerencia, entre outras coisas, unidades lógicas de modularidade chamadas pacotes configuráveis que estão contidas em bibliotecas compartilhadas ou estáticas. Cada pacote dentro de uma biblioteca possui um objeto :any:`cppmicroservices::BundleContext` associado, através do qual o registro do serviço é acessado.
Para consultar o registro em busca de um objeto de serviço que implemente uma ou mais interfaces específicas, o código seria semelhante a este:
# 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 */ }
}
}
O registro de um objeto de serviço em uma determinada interface é assim:
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void RegisterSomeService (BundleContext context, const std::shared_ptr<SomeInterface>& service)
{
context. RegisterService <SomeInterface>(service);
}
O modelo de serviço OSGi permite adicionalmente anotar serviços com propriedades e usar essas propriedades durante pesquisas de serviço. Também permite rastrear o ciclo de vida dos objetos de serviço. Consulte a documentação para mais exemplos e tutoriais e a referência da API. Há também uma postagem no blog sobre OSGi Lite para C++.
O repositório Git contém dois ramos eternos, master e development. A ramificação master contém código de qualidade de produção e seu HEAD aponta para a versão mais recente lançada. O branch de desenvolvimento é o branch padrão e contém o estado atual do desenvolvimento. As solicitações pull por padrão têm como alvo o branch de desenvolvimento. Veja o arquivo :ref:`CONTRIBUTING <contributing>` para detalhes sobre o processo de contribuição.
O repositório CppMicroServices define seus ganchos git no diretório .githooks. Este diretório é definido como o diretório para git hooks através da execução de git config core.hooksPath <path> em nosso arquivo CMakeLists.txt.
Se o gancho de pré-confirmação do formato clang falhar porque o formato clang não está instalado, instale-o e coloque-o no caminho. Da mesma forma, se o formato git-clang não estiver instalado, faça o mesmo. git-clang-format vem com a distribuição LLVM do clang-format.
Se isso não for viável para você, você pode especificar --no-verify ao confirmar suas alterações. Isso é fortemente desencorajado e você deve fornecer uma justificativa do motivo pelo qual não consegue formatar seu commit.
Reservamo-nos o direito de rejeitar quaisquer solicitações pull que não estejam formatadas corretamente e não tenham uma justificativa válida especificada.